[so] revenire -> Dimensiune pagina

Andrei Hagiescu so@atlantis.cs.pub.ro
Sun, 11 Jan 2004 15:42:33 +0200


Plecand de la urmatoarea observatie din SDK:
A mapped file and a file accessed by means of the input and output (I/O)
functions ( ReadFile and WriteFile) are not necessarily coherent

inseamna ca mecanismul de sincronizare a zonelor de memorie mapate din
fisiere nu asigura o updatare la fiecare write pe pagina mapata ci la
momente de timp arbitrare alese de sistemul de operare.

Sincronizarea "manuala" pe care suntem obligati sa o asiguram noi intre
memoria virtuala si memoria fizica datorita granularitatii de alocare a
Windows-ului putem s-o facem in mai multe moduri:
    - la fiecare scriere prindem un fault si modificam zona din fisier
corespunzatoare (time consuming)
    - la fiecare scriere prindem un fault si modificam o zona de memorie in
care am mapat fisierul de memorie fizica continuu (mai putin time consuming
dar parca tot nu e eficient sa ai un fault de pagina la fiecare write)
    - alocam paginile de memorie virtuala corespunzatoare celor din memoria
fizica independent de orice fisier si "din cand in cand" le sincronizam cu
fisierul de memorie fizica; in acest caz sincronizarea s-ar putea face
arbitrar si ducand procedeul la limita, putem face sincronizare doar cand
            a) mutam zona de memorie fizica in swap
            b) terminam aplicatia

Care varianta este mai buna?






> Nu am spus ca tema se poate face (pe Windows) cu ajutorul maparilor de
> fisier
> in memorie, ci doar ca exista alternative pentru rezolvarea problemei,
> doar ca
> nu sunt la fel de simple.
>
> > Daca nu asta-i solutia, trebuie sa facem o sincronizare de mana cumva?
> >
>
> Da.
>
> tavi