[so] [Tema 3] Nelamurire enunt

Dragos Valentin Moinescu dragos.moinescu at gmail.com
Fri May 1 22:16:08 EEST 2009


Multumesc pentru raspuns.

Eu insa intrebam altceva:
1. "alocarea" zonei pentru memoria virtuala se face prin mmap(...,
RAMFileDescriptor,...)
2. acea zona va trebui insa mapata efectiv in fisierul RAM.
3. problema este ca odata ce am facut maparea pentru virt_pages, va
trebui la accesare sa mapez efectiv intr-un offset din fisier. am
incercat mmap(adresaPaginaAccesata, getpagesize(), ...,
RAMFileDescriptor, offsetRam) insa valoarea rezultata este diferita de
adresaPaginaAccesata.

so, trebuie mmap() de fiecare data (asta presupune obtinerea unei
mapari in memoria fizica) insa cum?

2009/5/1 Mircea Bardac <cs at mircea.bardac.net>:
> 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
> _______________________________________________
> so mailing list
> so at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>



-- 
Best regards,
Dragos Moinescu


More information about the so mailing list