[so] [Tema 3] Nelamurire enunt

Mircea Bardac cs at mircea.bardac.net
Thu Apr 30 18:06:26 EEST 2009


Sergiu Iordache wrote:
> 2009/4/21 Andrei Bucur <andrei.bucur at gmail.com>:
>> Eu ma gandesc ca tema trebuie structurata in modul urmator:
>> 1. virt_pages pagini mapate peste RAM-ul fizic;
>> 2. phys_pages pagini mapate peste fisierul RAM;
>> 3. virt_pages pagini mapate peste fisierul SWAP.
>> Accesul la memoria simulata se va face strict prin (1). Fiecare pagina va fi
>> protejata impotriva scrierii / citirii. In momentul in care se semnalizeaza
>> un acces invalid se efectueaza operatiile necesare (aducere din (3) in (1)
>> daca exista page fault etc.). Sincronizarea intre (1) si (2) se face prin
>> apelul ram_sync, as in se copiaza din memoria virtuala paginile marcate ca
>> fiind in RAM si "dirty".
>> Tu spui ca ar trebui sa elimin (1) si sa folosesc (2) pe post de memorie
>> virtuala. Cum simulezi atunci pagefault? Functia vinit intoarce o adresa la
>> care sunt mapate virt_pages.La (2) sunt mapate doar phys_pages, care e mai
>> mic decat virt_pages.
> 
> Ar fi bun un răspuns oficial, și eu tot ca Andrei am făcut deocamdată
> pentru că așa am înțeles din textul temei.

(adaugare la ce s-a comentat deja in acest thread, in caz ca mai este
necesar)

In primul rand, "fisierul RAM" si "RAM-ul fizic" sunt acelasi lucru.
Maparea peste fisierul RAM poate fi considerata ca fiind "modul de acces
la RAM-ul fizic".

As dori sa stiu ce anume in textul temei duce la ideea ca ar fi 3 zone
de memorie (3 mapari/alocari)?

In textul temei este specificat faptul ca "Paginile de memorie virtuală
(din spațiul de adresă al procesului) se vor mapa direct peste fișierul
de RAM folosind apelurile mmap și MapViewOfFile."

Asta nu inseamna ca *toate* paginile de memorie virtuala se mapeaza
peste fisierul RAM, pentru ca:
- fisierul RAM are phys_pages iar
- memoria virtuala are virt_pages.
(iar aceste valori pot fi diferite)

-- 
Mircea
http://mircea.bardac.net


More information about the so mailing list