Punctajul pe laboratoarele 1-5 se poate recupera prin trimiterea unor teme: Lab1: Raspundeti la cele 4 intrebari de la sfarsitul laboratorului. Un raspuns consta intr-una sau mai multe comenzi de consola care rezolva cerinta data. Fiecare exercitiu valoreaza 2.5 puncte, pentru un total de 10. Lab2: La sfarsitul laboratorului 2 sunt 2 exercitii. Pentru nota 6 se poate rezolva unul singur, iar pentru 10 sunt necesare ambele rezolvari. Lab3: Pentru nota 6, se poate face oricare dintre exercitiile de la 3.11 pana la 3.20 (in afara de 3.15) de la sfarsitul laboratorului. In plus fata de programul propriu-zis, va trebui scris un fisier Makefile cu target-urile "build", "run" si "clean" pentru acest program. Target-ul build va compila fisierul sursa, obtinand un fisier executabil. De asemenea, acest target nu trebuie sa se execute decat daca fiserul cu cod sursa a fost modificat (acest lucru se poate face punand fisierului sursa ca dependinta al taget-ului). Target-ul run executa fisierul executabil obtinut in urma executarii target-ului build, avand de asemenea ca dependinta acest target. Target-ul clean sterge executabilul obtinut cu build. Un exemplu foarte bun pentru fisierul Makefile de facut este al doilea exemplu din laborator, de la capitolul "2.3. make". Trebuie aduse modificari foarte mici pentru a-l face sa mearga pentru un singur fisier sursa. Pentru nota 10, este necesar si raspunsul la intrebarea 3.1, cea cu -lm, si rezolvarea exercitiului 2 (cel cu sqrt). O resursa utila pentru tema laboratorului 3: http://aplawrence.com/Linux/c_compiling_linux.html Lab4: Realizati un program care citeste citeste cuvinte de la consola si lanseaza in executie cate un proces pentru fiecare cuvant citit. Cand este intalnit cuvantul "q", programul isi va termina executia. Daca utilizatorul introduce, de exemplu, cuvantul "ls", urmat de un enter, se va lansa un proces ls, care afireaza la consola directoarele si fisierele din directorul curent, dupa care programul va astepta o noua comanda. Programul trebuie sa contina o bucla care cicleaza cat timp cuvantul citit este diferit de q. Pentru a verifica egalitatea intre 2 siruri de caractere, folosititi functia strcmp(sir1, sir2) inclusa in string.h, care returneaza 0 daca cele 2 siruri sunt egale. In interiorul buclei creati un nou proces cu fork(), iar copilul va apela functia execlp (ca in linia comentata a exemplului so4_fork_exec.c din laboratorul 4). Pentru a va da seama de care dintre procesele ce executa codul de dupa fork() este copilul, verificati valoarea returnata de fork(). Aceasta este 0 pentru copil si mai mare decat 0 pentru parinte. Lab5: Explicati ce face exemplul 5-driver din arhiva so5-examples: rolul functiilor si al apelurilor din fiecare functie. Documentatie puteti gasi la: http://www.faqs.org/docs/kernel/x571.html http://www.freesoftwaremagazine.com/articles/drivers_linux Pentru instalarea unei instante de Linux, va recomand sa utilizati VMWare Player http://www.vmware.com/products/player/ . Acest program va permite rularea unui sistem de operare (sau a mai multor sisteme) in mod virtual, in acelasi timp cu sistemul de operare gazda (Windows-ul pe care il aveti deja). Puteti sa downloadati un sistem deja instalat, pe care trebuie numai sa le incarcati ulterior cu Open din VMWare Player, de la http://www.thoughtpolice.co.uk/vmware/ . Cel mai indicat ar fi sa downloadati o versiune de Ubuntu, fiindu-va deja familiar, dar puteti incerca si alta distributie de Linux (Debian sau Fedora Core). Resurse: - materialele de pe http://stst.elia.pub.ro/news/SOIII2009/labs/ - http://www.google.ro/ - colegi care au fost la laboratorul respectiv Temele se trimit la adresa straian@gmail.com pana pe 5 iunie 2009 (inainte de inceputul sesiunii).