[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