This shows you the differences between two versions of the page.
so:teme:tema-4 [2022/11/06 17:52] ionut.mihalache1506 [Precizări Linux] |
so:teme:tema-4 [2022/12/07 23:20] (current) ionut.mihalache1506 [FAQ] |
||
---|---|---|---|
Line 3: | Line 3: | ||
<note important> | <note important> | ||
- | * <html><b>Deadline</b></html>: **10.12.2022, ora 23:55** | + | * <html><b>Deadline</b></html>: **15.12.2022, ora 23:55** |
</note> | </note> | ||
Line 77: | Line 77: | ||
*nu mai are instrucțiuni de executat. | *nu mai are instrucțiuni de executat. | ||
- | Pentru mai multe detalii despre algoritmi de planificare puteți consulta [[so:cursuri:curs-04|cursul 4]]. | + | Pentru mai multe detalii despre algoritmi de planificare și fire de execuție puteți consulta [[so:cursuri:curs-04|aici]] sau [[https://github.com/open-education-hub/operating-systems/tree/master/content/chapters/compute/lecture/slides|aici]]. |
==== Stări threaduri: ==== | ==== Stări threaduri: ==== | ||
Line 178: | Line 178: | ||
Tema se va rezolva folosind fire de execuție POSIX și exclusiv mecanisme de sincronizare a firelor de execuție POSIX (mutex, variabile de condiție, semafoare și oricare altele suportate de API-ul POSIX). | Tema se va rezolva folosind fire de execuție POSIX și exclusiv mecanisme de sincronizare a firelor de execuție POSIX (mutex, variabile de condiție, semafoare și oricare altele suportate de API-ul POSIX). | ||
- | |||
- | ===== Precizări Windows ===== | ||
- | Pe lângă mecanismele de sincronizare învățate la laborator, aveți voie să folosiți și [[http://msdn.microsoft.com/en-us/library/windows/desktop/ms682052(v=vs.85).aspx|variabile de condiție]]. | ||
- | |||
- | Identificatorul întors de funcția ''so_fork'' trebuie să fie cel întors de funcția ''GetCurrentThreadId()'' apelată în contextul threadului nou creat. | ||
- | |||
- | Tema se va rezolva folosind doar funcții Win32. Se pot folosi de asemenea și funcțiile de formatare printf, scanf, funcțiile de alocare de memorie malloc, free și funcțiile de manipulare a șirurilor de caractere (strcat, strcmp, etc.) | ||
===== Utile ===== | ===== Utile ===== | ||
Line 190: | Line 183: | ||
===== Testare ===== | ===== Testare ===== | ||
- | *Corectarea temelor se va realiza automat cu ajutorul unor suite de teste publice: https://github.com/systems-cs-pub-ro/so/tree/master/assignments/4-scheduler | + | *Corectarea temelor se va realiza automat cu ajutorul unor suite de teste publice: https://github.com/systems-cs-pub-ro/so/tree/2022-2023/teme/assignments/2-scheduler/ |
*Pentru evaluare și corectare tema va fi uploadată folosind [[https://elf.cs.pub.ro/vmchecker/ui | interfața vmchecker]]. | *Pentru evaluare și corectare tema va fi uploadată folosind [[https://elf.cs.pub.ro/vmchecker/ui | interfața vmchecker]]. | ||
- | *În urma compilării temei trebuie să rezulte o bibliotecă shared-object (Linux) denumită ''libscheduler.so'' sau o bibliotecă dinamică (Windows) denumită ''libscheduler.dll''. | + | *În urma compilării temei trebuie să rezulte o bibliotecă shared-object (Linux) denumită ''libscheduler.so''. |
*În urma rulării testelor, se va acorda, în mod automat, un punctaj total. Punctajul total maxim este de 90 de puncte, pentru o temă care trece toate testele. La acest punctaj se adaugă 10 puncte care reprezintă aprecierea temei de către asistentul care o corectează. | *În urma rulării testelor, se va acorda, în mod automat, un punctaj total. Punctajul total maxim este de 90 de puncte, pentru o temă care trece toate testele. La acest punctaj se adaugă 10 puncte care reprezintă aprecierea temei de către asistentul care o corectează. | ||
*Cele 100 de puncte corespund la 10 puncte din cadrul notei finale. | *Cele 100 de puncte corespund la 10 puncte din cadrul notei finale. | ||
*Pot exista penalizări în caz de întârzieri sau pentru neajunsuri de implementare sau de stil. Ca excepție, pot apărea depunctări mai mari de 1 pct, în cazul în care tema trece teste prin "hackuri" în implementare (ex: sincronizări cu sleep, threadurile nu rulează peste threaduri reale din sistem, etc). | *Pot exista penalizări în caz de întârzieri sau pentru neajunsuri de implementare sau de stil. Ca excepție, pot apărea depunctări mai mari de 1 pct, în cazul în care tema trece teste prin "hackuri" în implementare (ex: sincronizări cu sleep, threadurile nu rulează peste threaduri reale din sistem, etc). | ||
- | * **Testul 0** din cadrul checker-ului temei verifică automat coding style-ul surselor voastre. Ca referință este folosit [[https://www.kernel.org/doc/Documentation/process/coding-style.rst | stilul de coding din kernelul Linux]]. Acest test valorează 5 puncte din totalul de 100. Pentru mai multe informații despre un cod de calitate citiți [[http://ocw.cs.pub.ro/courses/so/laboratoare/resurse/c_tips | pagina de recomandări]]. | + | * **Testul 0** din cadrul checker-ului temei verifică automat coding style-ul surselor voastre. Ca referință este folosit [[https://www.kernel.org/doc/Documentation/process/coding-style.rst | stilul de coding din kernelul Linux]]. Acest test nu modifică punctajul total, este acolo pentru a vă ajuta să vă organizați codul. |
<note important> | <note important> | ||
Line 216: | Line 209: | ||
* alte depunctări pentru implementări greșite, ce nu respectă cerința generală a temei | * alte depunctări pentru implementări greșite, ce nu respectă cerința generală a temei | ||
- | ===== Materiale ajutătoare ===== | + | |
+ | <note>Depunctările nu au caracter obligatoriu pentru orice greșeală (oricât de mică) și nu se aplică de mai multe ori. O eventuală depunctare va apărea o singură dată chiar dacă în codul vostru „problema” apare de mai multe ori</note> | ||
+ | ===== Materiale ajutătoare suplimentare ===== | ||
Cursuri: | Cursuri: | ||
- | *[[so:cursuri:curs-04|Curs 4]] - Planificarea execuției | + | *[[so:cursuri:curs-04|Curs 4 (Old but gold)]] - Planificarea execuției |
- | *[[so:cursuri:curs-08|Curs 8]] - Fire de execuție | + | *[[so:cursuri:curs-08|Curs 8 (Old but gold)]] - Fire de execuție |
- | *[[so:cursuri:curs-09|Curs 9]] - Sincronizare | + | *[[so:cursuri:curs-09|Curs 9 (Old but gold)]] - Sincronizare |
Laboratoare: | Laboratoare: | ||
- | *[[so:laboratoare:laborator-08|Laborator 8]] | + | *[[so:laboratoare:laborator-08|Laborator 8 (Old but gold)]] |
- | *[[so:laboratoare:laborator-09|Laborator 9]] | + | *[[so:laboratoare:laborator-09|Laborator 9 (Old but gold)]] |
===== FAQ ===== | ===== FAQ ===== | ||
Line 234: | Line 229: | ||
***Q:** Este permisă modificarea header-ului? | ***Q:** Este permisă modificarea header-ului? | ||
***A:** Nu. | ***A:** Nu. | ||
+ | |||
+ | ***Q:** Putem să folosim structuri de date neimplementate de noi (luate de pe net sau din alte laboratoare, etc.) în rezolvarea temei? | ||
+ | ***A:** Da, cu mențiunea ca implementarea acestora să fie în fișiere separate de implementarea temei pentru a face verificarea antiplagiat mai „sigură” pentru voi (este mai simplu să nu luăm acele fișiere în calcul pentru că ele vor avea o șansă mult mai mare să fie considerate copiat). | ||
+ | |||
+ | ***Q:** Scheletul este format doar din fișiere header? | ||
+ | ***A:** Da, orice alte fișiere de care aveți nevoie va trebui să le adăugați voi. Pentru Makefile puteți să folosiți ca exemplu tema/temele anterioare. | ||
===== Suport, întrebări și clarificări ===== | ===== Suport, întrebări și clarificări ===== | ||
- | Pentru întrebări sau nelămuriri legate de temă folosiți [[https://curs.upb.ro/2021/mod/forum/view.php?id=222412|forumul temei]]. | + | Pentru întrebări sau nelămuriri legate de temă folosiți [[https://curs.upb.ro/2022/mod/forum/view.php?id=76308|forumul temei]]. |
<note important> | <note important> |