[so] note finale
Claudiu-Florin FILIMON
so@cursuri.cs.pub.ro
Sat, 19 Feb 2005 11:20:33 +0200
Din pacate materia (ma refer aici la curs+teme+lab) de SO a fost cea mai
mare dezamagire a mea din acest semestru. Or sa-mi sara multi in cap la
aceasta afirmatie, dar, imi pare rau, din punctul meu de vedere asa a fost.
Sa explic de ce:
In primul rand, numele cursului ar fi trebuit sa fie ISO (Introducere in
SO) pentru ca asta a fost. A fost o incercare de prezentare a celor mai
importante sisteme de operare si a modului in care functioneaza ele. Din
pacate subiectul este absolut enorm si s-a incercat inghesuirea sa intr-un
singur curs. A rezultat o aglomerare de informatii, puse la un loc si
amestecate cu lingura intr-o oala. O multitudine de informatii, prezentate
prea pe scurt ca sa inteleaga cineva ceva din ele. Din nou, o consider doar
o introducere in fiecare subiect, pentru ca prezentare nu se poate numi.
Apoi au fost temele. Incep cu robocheck, care a fost o versiune alpha la
inceput si a ajuns beta mai tarziu, in nici un caz nefiind suficient de
dezvoltat pentru a putea fi folosit la corectarea unei teme. Amintesc doar
problema cu exec-ul, pe care am prezentat-o pe lista, dar nu am primit nici
un raspuns. Dupa robocheck vine parser-ul, care functiona. Totusi mi se pare
corect ca un utilitar (orice-ar fi el) in momentul in care aloca o memorie
si nu e suficient doar un free pe ea ca sa o dezaloc (asa cum facea
parser-ul, returnand un tree) sa ofere si un mecanism de dezalocare a
respectivei memorii (nu mi-a luat mai mult de 5 minute sa-l fac eu, dar asa
mi se pare mai elegant). Ar mai fi de precizat lipsa oricarui exemplu de
folosire a parser-ului (hai sa zicem, nu era foarte complex, dar iar vorbim
despre eleganta). Eu am folosit de multe ori API-uri obscure, tot felul de
framework-uri facute de diversi, dar absolut toate aveau help, aveau
exemple, tutoriale, adica absolut tot ce iti trebuie ca sa te poti apuca de
lucru cat mai rapid. M-am legat de eleganta pentru ca si noua ni se cerea
eleganta ("aaaa, nu face asa, ca nu-i elegant. Fa de 3 ori mai complicat, ca
asa-i mai elegant")
Temele temelor (no pun intended) au fost (in majoritate) prost alese. Ma
refer in special la tema 2 si la tema 5. La tema 2 suntem pusi sa facem ceva
ce mai mult ca sigur n-a mai facut nici unul dintre noi (decat daca se da
hacker). Nu zic nu, dar sa ni se explice si noua care-i treaba cu SO-urile
astea, cum se fac DLL-uri si multe alte chestii (macar niste link-uri acolo,
la sfarsitul paginii). La tema 5 trebuie sa folosim un sistem pentru a-l
implementa pe el insusi. Ma refer la memoria virtuala. Iar modul in care se
rezolva tema este mai complicat decat cum o face sistemul de operare. Adica
mi se partea mult mai interesant daca faceam o simulare exacta a ceea ce se
intampla in SO decat sa ne folosim de SO ca sa facem ceva mai complicat. Sa
zicem ca era mai indicat sa facem o librarie care se ocupa de toate
aspectele alocarii, paginarii, etc, si care avea functii care cereau acces
la o zona de memorie si functii care sa spuna ce pagini au fost inlocuite,
evacuate in swap, etc. Apoi libraria sa fie folosita de un program public de
test, facut de voi, care sa testeze daca evacuarile si celelalte chestii se
fac corespunzator. Asa ne puteam concentra mai mult pe algoritmi si nu pe
chestii de genul: "La naiba, de ce nu-mi intoarce adresa corect" sau "De
ce-mi da ecran albastru cand incerc sa apelez functia asta?". Aaaa si sa nu
uit: "acasa mergea", oricat de ilar ar suna, este perfect adevarat. La tema
pe linux am avut probleme ca in handler-ul fault-ului nu-mi returna adresa
unde s-a petrecut fault-ul. Pe lista am primit raspuns de genul "vezi poate
nu faci tu bine". Ok, am zis, poate nu fac eu cum trebuie. Am luat sursa si
am compilat-o pe alt linux. A mers perfect. Pe red-hat nu mergea, pe knoppix
mergea. Mirare, mare mirare. Asa ca exista si argumentul "acasa mergea",
dupa cum am patit-o si eu pe pielea mea.
Oricum, la teme sunt muuulte lucruri de zis, dar ar trebui sa mai scriu
cateva pagini ca sa le discut, asa ca ma abtin. Un ultim lucru as mai vrea
sa evidentiez: in ultima vreme ni se cer teme (nu numai la SO, ci in general
la majoritatea materiilor) in care nu mai conteaza doar faptul ca este
rezolvata problema, ci si modul in care este rezolvata. De aceea propun
existenta unei solutii oficiale. Adica mi se pare ca temele astea sunt
facute ceva de genul: cine propune tema se uita la ceas si zice: "Aoleu, mai
sunt 5 minute, trebuie sa pun o tema pe site." Se gandeste un pic, se uita
pe curs, pe laborator, si scorneste o cerinta acolo, o pune pe site si pe
urma se duce la o bere cu prietenii. Si ramane sa ne chinuim noi sa
intelegem care-i treaba, sa cautam pe google ce si cum, sa intrebam pe lista
ca in rezolvarea temei apar obstacole si alte probleme care nu apar in
enunt, etc. Mi se pare mult mai corect ca cine propune temele sa faca un
enunt, apoi sa rezolve tema, sa modifice enuntul corespunzator cu ce a
observat in timpul rezolvarii, sa faca un test conform cu enuntul si care
sa-i mearga lui, sa publice enuntul, iar cand expira termenul sa publice
rezolvarea temei impreuna cu testul. Asa ar fi mult mai corect. Parerea mea.
Laboratorul a fost singura parte a materiei la care nu am reprosuri. Pur
si simplu, ni s-au prezentat niste concepte, niste metode si apoi ni s-a
cerut sa le folosim. Nimic de cautat pe google, nimic ce sa poata fi inteles
gresit, totul functiona perfect (cu mici exceptii, dar asta este, mai exista
si de-astea). Nota 10++ din partea mea pentru laborator.
Un alt punct pozitiv a fost (dupa cum zicea si Doru) sistemul de notare.
Adica nu a insistat pe un examen pentru nota, ci pe activitatea din intregul
semestru (teoretic, pt ca practic a insistat pe ultimele 2 saptamani, cand
ne-am apucat multi de teme). Din nou, 10+ pentru sistemul de notare.
Cam astea imi vin in cap acuma. Ar mai fi fost, dar deja mailul a devenit
prea lung si ma indoiesc ca-l mai citeste cineva. Sper sa nu se supere Tavi
pe mine prea tare, dar am facut-o pentru a-l ajuta sa isi imbunatateasca
cursul pentru a fi mai util urmatoarei generatii de studenti care vor avea
de-a face cu el. N-am nimic cu nimeni, nu-i o razbunare, sunt doar parerile
mele personale cu care puteti fi sau nu de acord.
Have FUN,
FeeL E!