Notarea la testele de la laboratorul de SO
Principii generale
Nota minima e 1.
Nu se puncteaza lucrari care nu rezolva problemele specificate in cerinte. Daca programul sau scriptul rezolva alta problema, e generic sau nu se conformeaza specificatiilor, nota ramane 1. Nu se puncteaza secvente izolate de cod, nu se dau puncte pentru faptul ca se stiu folosi in izolare comenzi, apeluri sistem sau functii de biblioteca etc. Abordarea cerintelor este preconditie fundamentala pentru aplicarea oricaruia din elementele componente ale baremurilor, inclusiv pentru cerintele minimale.
Orice incercare de plagiat, reusita sau nu, se sanctioneaza cu eliminarea studentului de la test si acordarea notei 1. Situatiile grave se declara prin proces-verbal la Decanat, in vederea exmatricularii.
Programul compileaza sau nu? Nu e direct relevant pentru notare, dar numarul sau tipul erorilor pot fi criterii care arata ca studentul nu cunoaste elemente de programare, C sau UNIX. Erorile minore de compilare, daca pot fi corectate usor, vor fi depunctate dar fara a anula predarea programului. Celelalte cazuri in care programul da erori de compilare duc la nepredarea temei si acordarea notei 1.
Cerinte minimale: Pentru nota 5 lucrarea trebuie sa prezinte o minima functionalitate obligatorie, specificata pentru fiecare test. Cerintele minimale trebuie sa fie implementate complet si corect, asftel incat orice eroare intr-o solutie care rezolva doar cerintele minimale va duce la o nota sub 5.
Test 1 – Fisiere si directoare [60 minute]
Materia vizata
operarea cu fisiere folosind apeluri sistem sau de biblioteca (dupa cerinte) – citire, scriere, creare fisier
obtinere de informatii despre fisiere folosind apelurile sistem din familia stat: tipul fisierului, dimensiunea, drepturi etc.
parcurgere nerecursiva si recursiva de directoare folosind functiile specifice (opendir, readdir etc.)
prelucrare de argumente in linia de comanda
creare de legaturi (link, symlink), stergere legaturi si fisiere (unlink) etc.
Barem
Cerinte minimale. Pentru nota 5, cumulat, trebuie sa existe urmatoarele:
Un fisier citit/scris corect (folosind apeluri sistem sau biblioteca, dupa cerinte)
Secventa corecta de parcurgere a unui director, nerecursiv
Preluarea corecta a argumentelor din linia de comanda – nu si prelucrarea lor completa
Dovada clara ca programul tinteste scopul cerut (o afisare a unui rezultat cerut sau macar o incercare credibila in acest scop)
Punctaj aditional (puncte adaugate la nota 5):
Prelucrarea completa si corecta a argumentelor din linia de comanda, conform enuntului.
Inchiderea fisierelor dupa folosire.
Citirea si scrierea corecta din fisiere, conform cerintelor.
Gestionarea corecta a datelor din nodul index (extragerea lor folosind functia potrivita, aplicarea macro-urilor corecte pentru verificarea tipului, extragerea de date din structura stat), conform enuntului.
Prelucrarea si utilizarea corecta a datelor implicate de enuntul problemei.
Din nota se scad puncte pentru orice erori: probleme de utilizare a pointerilor, lipsa verificarilor, utilizarea gresita a functiilor sistem si de biblioteca conform cerintelor etc.
Test 2 – Shell Script in bash [30-45 minute]
Materia vizata
Realizarea de script-uri bash
Utilizarea elementelor de sintaxa specifica bash: if, for, case, expresii conditionale (test, [[ ]]) etc.
Utilizarea uneltelor disponibile in sistem sub forma de comenzi externe (cat, cut, tr, grep, ls)
Aflarea tipurilor de fisiere si utilizarea lor in consecinta
Utlizarea de redirectari si/sau pipe
Utilizarea variabilelor definite de utilizator si a celor predefinite
Prelucrarea argumentelor in linia de comanda
Utilizarea si interpretarea corecta a drepturilor de acces (chmod, ls –l, etc)
Citirea/scrierea din/in fisiere din script
Expresii regulate si filtre grep
Parcurgere recursiva/nerecursiva de directoare folosind ori ls ori find – fara a se cere neaparat o apelare recursiva a scriptului sau a unei functii
Substitutia comenzilor
Barem
Cerinte minimale. Pentru nota 5, cumulat, trebuie sa existe urmatoarele:
Preluarea argumentelor din linia de comanda si semnalarea de eroare daca numarul acestora e eronat
O inlantuire de comenzi folosind pipe, utilizata in scopuri conforme cerintelor
O expresie regulata de complexitate medie care, chiar daca e incompleta, functioneaza corect si in contextul cerut de problema, fiind aplicata pe date reale (provenite de la alte comenzi, preluate din fisiere etc., nu informatii hard-codate)
O citire de date din fisier, intrare standard, sau preluate in urma rularii unui program
Dovada clara ca programul tinteste scopul cerut (filtrele si inlantuirile de comenzi duc spre abordarea cerintelor, exista o afisare a unui rezultat cerut, se observa macar o incercare credibila in acest scop)
Punctaj aditional (puncte adaugate la nota 5):
Prelucrarea completa a argumentelor din linia de comanda si afisarea de mesaje de eroare specifice.
Preluarea corecta a datelor de intrare.
Scrierea corecta a expresiilor regulate si alegerea corecta a comenzilor ce reprezinta filtre.
Inlantuirea corecta a comenzilor.
Aplicarea corecta a parcurgerii fisierelor sau directoarelor (in functie de tipul problemei).
Din nota se scad puncte pentru orice erori: expresii regulate incomplete, filtre cu rezultatul neutilizat, ciclu infinit la parcurgeri etc.
Test 3 – Procese, pipe-uri, semnale [60 minute]
Materia vizata:
crearea de procese si preluarea valorilor returnate de acestea la terminare
executarea in procese a comenzilor externe (programelor de pe disc)
crearea de pipe-uri anonime si comunicarea folosindu-le pe acestea, respectand regulile studiate (controlul dimensiunilor datelor schimbate, inchiderea corecta si oportuna a descriptorilor etc.)
redirectarea de descriptori folosind duplicarea
se permite utilizarea oricaror functii utile, inclusiv fdopen, dar nu se accepta folosirea functiilor system, popen si similare
prelucrarea argumentelor din linia de comanda
utilizarea comenzilor externe (exemple ls, grep, ps, find etc.) in cadrul proceselor care comunica prin pipe
tratarea, ignorarea, resetarea semnalelor (folosind exclusiv sigaction pentru armarea lor), generarea de semnale
obtinerea folosind apeluri in C a informatiilor despre procese (getpid, getppid etc)
Barem
Cerinte minimale. Pentru nota 5, cumulat, trebuie sa existe urmatoarele:
Crearea corecta a unui proces fiu si preluarea starii acestuia (wait, waitpid)
Crearea oportuna (inainte de fork-urile implicate) a cel putin unui pipe
Comunicare prin pipe intre 2 procese care fac o transmitere si o receptie corecte prin pipe, in scopuri cerute de enunt
Redirectarea corecta a descriptorilor si apelarea exec (toate subiectele vor cere folosirea unei comenzi externe)
Punctaj aditional (puncte adaugate la nota 5):
Crearea structurii corecte de procese si pipe-uri, conform problemei.
Comunicarea corecta la capetele pipe-ului, in asa fel incat procesul care citeste cunoaste intotdeauna dimensiunea datelor pe care urmeaza sa le citeasca; elemente de program care asigura acest lucru.
Alegerea si utilizarea corecta a comenzilor externe care introduc sau citesc date in/din pipe-uri.
Gestionarea corecta si oportuna a descriptorilor de pipe (inchiderea, transmiterea prin mostenire etc).
Redirectari, tratari de semnale si alte functionalitati specifice cerintelor.
Din note se scad puncte pentru orice erori: probleme de utilizare a pointerilor, lipsa verificarilor, transmiteri si receptii incorecte de date, utilizarea gresita a functiilor sistem si de biblioteca, neimplementarea completa si fidela a cerintelor etc.