[so] [Tema 3] Nelamurire enunt
Mircea Bardac
cs at mircea.bardac.net
Fri May 1 21:07:23 EEST 2009
Salut,
Dragos Valentin Moinescu wrote:
> fisierul RAM are phys_pages < virt_pages.
>
> Deci, scrierea in phys_pages + 1 inseamna
> scrierea inafara RAM-ului.
> [...]
>
> daca programul scrie in [16k...20k-1], pagina care se afla inafara
> [0...16k-1] si se apeleaza msync() atunci fisierul RAM e cam busit.
>
> ce vreau eu sa spun ca primii phys_pages*getpagesize() octeti din acea
> zona pot fi mapati direct pe fisier si folosind msync() nu este nicio
> problema. totusi daca scriem in (phys_pages+1)*getpagesize() atunci
> msync modifica size-ul fisierului.
>
> sincer nu pricep din enunt exact cum se poate face acest lucru doar cu
> un msync. pentru a pastra size-ul fisierului trebuie sa stiu ce pagini
> din memoria virtuala sunt active la un moment dat, si asta presupune
> ca atunci cand fac un ram_sync() sa fac defapt scriere in fisierul ram
> a datelor respective.
Te rog sa *re*parcurgi cursurile [6] si (mai ales) [7] + suporturile de
curs asociate lor. Tu de fapt intrebi "cum pot incapea mai multe pagini
in RAM daca memoria virtuala e mai mare?".
O sa extind intrebarea la "cum de pot fi mai multe procese, fiecare cu 4
GB (32 bits) memorie virtuala... si toate pot incapea in intr-o memorie
RAM de mai putin de 4 GB".
[6]
http://cs.pub.ro/~so/index.php?section=Cursuri&file=06.%20Gestiunea%20memoriei
[7]
http://cs.pub.ro/~so/index.php?section=Cursuri&file=07.%20Memoria%20virtuala
--
Mircea
http://mircea.bardac.net
More information about the so
mailing list