[so] Tema5 intebari

Razvan Deaconescu razvand at cs.pub.ro
Wed Jan 3 12:35:21 EET 2007


Dragusin Bogdan wrote:
> Scuze daca insist dar tot nu inteleg :(.

Nu este nici o problema. La urma urmei, asta e rostul listei de discutii :-)

> Cum ar trebui sa treaca tema 
> testul 4 in care se verifica in acelasi mod sincronizarea dintre swap si 
> ram prin check_ram_poison (rand_pos, 5, 3); si sa treaca si testul 3 la 
> care aceasta modificare nu trebuie sa se vada:(
>  Practic la testul 4 din cate inteleg se asteapta ca daca in swap a fost 
> scris poison swap sa se scrie si in ram tot poison swap...

Cum arata cele doua teste:

la testul 4:

         poison_swap (8);
         for (i = 0; i < 8; i++) {
                 poison_swap (8);
                 _read (i, NO_CHECK, rand_pos);
                 _read (i, NO_CHECK, rand_pos + 4);
                 _read (i, NO_CHECK, rand_pos + 8);
         }

         ram_sync ();
         check_ram_poison (rand_pos, 5, 3);


la testul 3:

         for (i = 0; i < 3; i++) {
                 _read (i, PAGE_FAULT, rand_pos);
                 _read (i, NO_PAGE_FAULT, rand_pos + 4);
         }

         ram_sync ();
         check_ram0 (3);


Deosebirea este urmatoarea: la testul 3, la inceputul inceputului, se 
realizeaza asocierea intre paginile virtuale si paginile fizice 
(simulate prin fisierul RAM). In prima instanta paginile se vor asocia 
fara a exista vreo legatura cu swap-ul. Deoarece se realizeaza numai 
citiri, o pagina nu va fi niciodata swapped (nu este nevoie ... e un pic 
fortat ... dar pentru usurinta in implementare/testare se considera ca o 
pagina care este read-only nu va fi niciodata swapped).

Testul nu are relevanta practica ... daca te gandesti mai bine, se 
citesc informatii pe care nu le-a scris nimeni ... e doar metoda de 
testare, nu are o logica in spate.

In partea cealalta, la testul 4, paginile sunt deja swapped (au parcurs 
o serie de drumuri swap-RAM, RAM-swap) si in momentul in care se 
realizeaza o citire, daca pagina nu este prezenta in memorie ea va fi 
copiata din swap.

La inceput nici o pagina nu rezida in swap. Este copiata acolo numai 
daca a fost modificata si daca trebuie inlocuita cu o alta pagina. La 
testul 3 paginile nu rezida in swap si nici nu sunt copiate vreodata 
acolo (sunt numai apeluri read-only).

Va trebui, cu alte cuvinte, sa retii cand o pagina este swapped si cand 
nu este ca sa faci deosebirea intre aceste cazuri.

Imi cer scuze pentru articifiul de la testul 3 ... este doar un test 
care nu are o situatie verosimila in spate ... doar testeaza 
functionlitatea temei (la testul 3 mi-a fost cel mai usor sa testez ca o 
pagina read-only nu este swapped).

Daca mai ai intrebari, nu ezita sa le postezi.

Razvan


More information about the so mailing list