[so] [Tema5]Cum functioneaza swapper-ul?, partII

Razvan Deaconescu razvand at cs.pub.ro
Wed Jan 17 00:47:10 EET 2007


Florin wrote:
> Salut!
> 
> Acum urmeaza critica  :-P

Multumesc mult de critica. Apreciez criticile obiective si constructive, 
  asa cum este si critica ta. :-)

> insa, ma surprinde acum cat de multe teste era in 
> stare sa treaca vesiunea aceea a temei; practic, tema mea nu facea nimic 
> esential pt swapping, si cu toate acestea ea pica (doar) 6 teste, din 
> cate sunt? 30? 

recunosc, este o problema; nu am insistat asa de mult pe acest aspect; 
mai multe detalii mai jos

> citind codul testelor, sa imi dau seama unde gresisem eu, 
> la logica programului meu , evident, deci eu personal nu cred ca e o 
> mare tragedie daca noi ne uitam si pe codul testelor, nu cred ca trebe 
> sa te apuci sa programezi in assembler prea curand

intelesul codului unui test, intelegerea unui cod scris de altcineva (cu 
conditia sa nu fie scris aiurea) este necesar; dar sa nu conteze mai 
mult decat design-ul efectiv

> 
> Deci, un fel de concluzie-rugaminte-sfat-... : pe viitor, faceti testele 
> sa "testeze" efectiv TOT ceea ce se doreste de la tema respectiva - pt 
> ca testul este barometrul esential la care se raporteaza cel ce rezolva 
> tema - studentu' zice

testele nu pot testa chiar totul; un test absolut ar insemna prea mult 
timp pentru crearea unei teme exceptionale; vrem sa invatati niste 
concepte si sa reusiti sa creati cod/tema de un nivel acceptabil

intr-adevar, conditia ar fi sa se testeze cat mai mult posibil, ceea ce 
eu nu am reusit intru totul

> 
> De ce afirmi tu ca "o pagina virtuala nu se poate afla simultan si in 
> RAM, si in SWAP" ?  Afirmatia ta ar fi adevarata, daca am discuta la
> nivel logic, adica la nivel de "adresare" : o pagina virtuala se poate 
> gasi la un moment dat fie in RAM, fie in SWAP, dar nu in ambele locuri 
> simultan, din punct de vedere al adresarii; insa, din punctul de vedere 
> al continutului, o pagina virtuala se poate foarte bine gasi si in RAM 
> si in SWAP. DE CE ? Pai, poate eu , ca si implementator, sunt mai "lazy" 
> din fire si, in momentul cand copiez pagina din SWAP in RAM, las SWAP-ul 
> nealterat; in felul acesta, exact acelasi lucru se va gasi si in RAM, si 
> in SWAP, la aceeasi adresa de memorie

Ai dreptate. Mea culpa.

Din pacate, in prima faza a temei, eu uitasem complet faptul ca paginile 
pot fi readuse din SWAP in RAM (adica pana la atentionarea lui Cosmin 
Raianu, testul meu urmarea o singura directie de la RAM la SWAP); in mod 
evident, existand o singura directie, era imposibil ca o pagina 
existenta in SWAP sa mai fie si in RAM (era evacuata din RAM si rezida 
numai din SWAP).

In momentul modificarii, testul a urmarit posibilitatea revenirii 
paginii din SWAP in RAM; totusi, atat de batatoarea de cap si, recunosc, 
defectuoasa implementare a functiei check_swap a ramas neschimbata si a 
urmarit acelasi model al prezentei unei pagini virtuale exclusiv in RAM 
sau in SWAP; lucru care in mod evident este incorect.

Imi cer scuze.

> Am scris mult si poate ca nu am fost coerent, dar sper ca s-a inteles ce 
> am vrut sa comunic. Si sper ca nu am suparat pe nimeni cu post-ul asta - 
> am vrut doar sa fac niste observatii referitor la problemele si 
> nelamuririle cu care m-am intalnit eu cand mi-am facut tema.
>

Este mai mult decat ok. Comunicarea e o unealta de baza :-) (atata timp 
cat e folosita cum trebuie ... lucru pe care, din pacate, nici eu nu il 
fac bine de multe ori; mai invat :-) )

> PS: Pe langa bug-urile proprii, pentru care imi asum vina, o mare parte 
> a problemelor cu car em-am confruntat eu in implementarea temei s-au 
> datorat faptului ca fisierele ce simuleaza RAM-ul, respectiv SWAP-ul, 
> le-am mapat in spatiul de adresa al procesului aplicatiei.

Inca o data imi cer scuze daca implementarea (defectuoasa) a acestei 
parti a testului a generat probleme.

Din pacate, prima oara cand m-am ciocnit cu tema pana acum in momentul 
implementarii si crearii testului. Din aceasta cauza, nu am fost 
constient de la bun inceput de toate probleme care pot sa apara. Motiv 
pentru care inca apar probleme de design la modul de testare.

De asemenea, a trebuit sa petrec destul de mult timp incercand sa testez 
chestiile de baza; acest lucru care a avut drept consecinta pierderea 
din vedere a anumitor aspecte de proiectare. Neavand un feedback solid 
despre problemele care pot aparea la testarea temei (eu neiplementand-o 
pana acum), nu am reusit sa intrevad o serie de situatii posibile si 
nici sa intuiesc posibile rezolvari ale temei.

Ca exemplu, la implementare temei eu am mapat folosind mmap memoria 
virtuala peste fisierul ce simula memoria fizica. Evacuarea in swap se 
realiza prin demaparea (munmap) a paginii virtuale din memoria fizica si 
maparea unei foste pagini din swap. (nu era MAP_ANONYMOUS cu alte 
cuvinte). Initial credeam ca doar asa se poate, pana am facut in Windows 
fisiere RAM total separat de memoria virtuala.

Tema, asa cum este ea, ofera un grad destul de mare de libertate in 
implementare. Acest lucru este necesar:
  - o data pentru ca este normal sa aveti deciziile de proiectare 
     proprii,
   - alta data pentru ca unele precizari suplimentare (care au fost 
solicitate si a caror absenta a fost criticata) ar fi dus la indicarea 
unor detalii de implementare care ar fi simplificat mult elaborarea 
temei (ceea ce nu este scopul - scopul unei teme este sa va ofere 
posibilitatea sa va loviti de anumite probleme si apoi sa incercati sa 
gasiti o solutie; aici puteti cere un guideline, nu o solutie completa, 
pe lista de discutii)

Apreciez feedback-ul trimis pentru aceasta tema si va promit ca va fi 
integrat in versiunea ulterioara de testare.

Florin, incearca sa spargi frazele in paragrafe, te rog. Scrii prea mult 
si prea continuu si devine greu sa citesti un "calup" intreg de cuvinte. 
La urma urmei, si tu si noi vrem sa intelegem cat mai usor ce ai scris 
acolo. Multumesc.

Razvan


More information about the so mailing list