SUSPECT: Re: [so] [tema5] testul ramclean

Razvan Deaconescu razvand at cs.pub.ro
Thu Dec 13 23:48:03 EET 2007


On Thu, 2007-12-13 at 22:37 +0200, Vlad Cananau wrote:
> Atunci, va rog, spuneti-mi ce se vrea de la tema asta?
> 
> 1. se incearca citire => page fault
> se citeste continutul din fisierul RAM si se pune in memoria virtuala
> se intoarce valoarea din fisierul RAM
> 
> 2. se incearca citire => page fault
> se aloca pagina in memoria virtuala - continutul memoriei este zero
> se intoarce valoarea zero
> NU se scrie in fisierul RAM pentru ca nu s-a facut citire
> 
> 3. se incearca citire => page fault
> se aloca pagina in memoria virtuala - continutul memoriei este zero
> se intoarce valoarea zero
> intrucat pagina este alocata in memora virtuala se scrie si in memoria
> fizica (fisierul RAM)
> la final fisierul RAM contine zero peste tot
> 
> 1. se pare ca este ceea ce vrea sa spuna Razvan Deaconescu;
> 2. este varianta aleasa de mine (ca sa treaca testul);
> 3. este varianta cea mai apropiata de realitate, dupa parerea mea.
> 
> Care dintre ele este cea pe care o vreti?

Varianta dorita este varianta 1.

Desi nu corespunde cu adevarat realitatii motivul alegerii este unul ce
tine de testare. Cand am gandit tema nu stiam exact ce sa testez si am
facut multe lucruri on-the-fly care pot avea mai mult sau mai putin
legatura cu ceea ce se intampla in realitate.

Astfel, cand se aloca memorie cu mmap/VirtualAlloc nu se face nici un
fel de mapare in spate. Cand se face demand paging si se face maparea se
completeaza automat memoria RAM peste care s-a facut maparea cu paginile
din memoria RAM simulata in fisier.

Ceva de genul: vreau sa mapez pagina virtuala 500 peste pagina fizica 1.
Pagina fizica 1 este initial nemapata; toata lumea e fericita (daca ar
fi fost mapata ar fi trebuit, eventual, mutata in swap).

In momentul maparii - din considerente de testare - nu se altereaza in
nici un fel pagina din RAM. Se considera ca ramane cat era (nu se umple
cu zerouri). In cazul nostru se copiaza pagina din RAM-ul simulat in
fisier in RAM-ul fizic (memoria RAM efectiva) si se mapeaza la pagina
virtuala data. In felul acesta, accesele la adresa virtuala data vor
insemna accesarea paginii fizice "otravite".

Multe teste sunt putin fortate pe alocuri pentru ca era destul de
tricky/neclare/nerealiste pentru a putea fi suficient de valide incat sa
verifice implementarea unor functionalitati de baza.

Razvan



More information about the so mailing list