[so] [Tema 3] Nelamurire enunt

Catalin catalin.me at gmail.com
Tue Apr 21 22:56:15 EEST 2009


Andrei Bucur wrote:
> 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.
Pai cand faci mmap pe fisierul de RAM nu trebuie sa dai drepturi deci 
tot va exista segmentation fault.

Intr-un post anterior Mircea spunea:

"Singurele locuri unde se poate gasi *continutul paginilor* sunt:

* in RAM
* in swap
(ca in implementarile reale)"

Cred ca se referea la RAMul logic si SWAPul logic,

Andrei Bucur wrote:
> 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".
Din ce spui tu inteleg ca ai practic 3 zone de memorie: memoria din 
RAM-ul fizic corespunzatoare memorie virtuale logice (virt_pages), si 
cele 2 fisiere. Asta inseamna ca e posibil ca o aceeasi pagina sa fie la 
tine in 3 zone diferite de memorie. Si asta cam contrazice ce a spus 
Mircea mai sus.

Inca odata, asta sunt doar speculatii. Ar trebui un raspuns "oficial" , 
dar am senzatia ca o sa trebuiasca sa ne dam seama singuri de "smecherie".

Numai bine,
Catalin Moraru





More information about the so mailing list