Differences

This shows you the differences between two versions of the page.

Link to this comparison view

so:teme:tema-3 [2022/11/06 18:14]
ionut.mihalache1506 [Suport, întrebări și clarificări]
so:teme:tema-3 [2022/11/08 19:41] (current)
ionut.mihalache1506 [Resurse de suport]
Line 2: Line 2:
  
 <note important>​ <note important>​
-  * <​html><​b>​Deadline</​b></​html>:​ **21.11.2022, ora 23:55**+  * <​html><​b>​Deadline</​b></​html>:​ **24.11.2022, ora 23:55**
 </​note>​ </​note>​
  
Line 123: Line 123:
 ===== Precizări/​recomandări pentru implementare ===== ===== Precizări/​recomandări pentru implementare =====
  
-  * Implementarea //page fault// handler-ului se realizează prin intermediul unei [[http://​www.kernel.org/​doc/​man-pages/​online/​pages/​man2/​sigaction.2.html | rutine pentru tratarea semnalului SIGSEGV]] sau a unui [[http://​msdn.microsoft.com/​en-us/​library/​ms681420(v=vs.85).aspx | handler de excepție]].+  * Implementarea //page fault// handler-ului se realizează prin intermediul unei [[http://​www.kernel.org/​doc/​man-pages/​online/​pages/​man2/​sigaction.2.html | rutine pentru tratarea semnalului SIGSEGV]].
   * Pentru a implementa logica de //demand paging// trebuie să interceptați page fault-urile produse în momentul unui acces nevalid la o zonă de memorie. La interceptarea page fault-urilor,​ tratați-o corespunzător,​ în funcție de segmentul din care face parte:   * Pentru a implementa logica de //demand paging// trebuie să interceptați page fault-urile produse în momentul unui acces nevalid la o zonă de memorie. La interceptarea page fault-urilor,​ tratați-o corespunzător,​ în funcție de segmentul din care face parte:
     * dacă nu este într-un segment cunoscut, rulați handler-ul default;     * dacă nu este într-un segment cunoscut, rulați handler-ul default;
Line 143: Line 143:
   * Tema se va rezolva folosind doar funcții POSIX. Se pot folosi de asemenea și funcțiile de citire/​scriere cu formatare (''​scanf''/''​printf''​),​ funcțiile de alocare/​eliberare de memorie (''​malloc''/''​free''​) și funcțiile de lucru cu șiruri de caractere (''​strcat'',​ ''​strdup''​ etc.)   * Tema se va rezolva folosind doar funcții POSIX. Se pot folosi de asemenea și funcțiile de citire/​scriere cu formatare (''​scanf''/''​printf''​),​ funcțiile de alocare/​eliberare de memorie (''​malloc''/''​free''​) și funcțiile de lucru cu șiruri de caractere (''​strcat'',​ ''​strdup''​ etc.)
   * Pentru partea de I/O se vor folosi doar funcții POSIX. De exemplu, funcțiile ''​fopen'',​ ''​fread'',​ ''​fwrite'',​ ''​fclose''​ nu trebuie folosite; în locul acestora folosiți ''​open'',​ ''​read'',​ ''​write'',​ ''​close''​.   * Pentru partea de I/O se vor folosi doar funcții POSIX. De exemplu, funcțiile ''​fopen'',​ ''​fread'',​ ''​fwrite'',​ ''​fclose''​ nu trebuie folosite; în locul acestora folosiți ''​open'',​ ''​read'',​ ''​write'',​ ''​close''​.
 +  * Un exemplu de asociere a unui handler de tratare a unui semnal este prezentat mai jos:
 +
 +<code c>
 +#include <​signal.h>​
 +...
 + 
 +/* SIGUSR2 handler */
 +static void usr2_handler(int signum) {
 +    /* actions that should be taken when the signal signum is received */
 +    ...
 +}
 + 
 +int main(void) {
 +    struct sigaction sa;
 + 
 +    memset(&​sa,​ 0, sizeof(sa));​
 + 
 +    sa.sa_flags ​  = SA_RESETHAND; ​  /* restore handler to previous state */
 +    sa.sa_handler = usr2_handler;​
 +    sigaction(SIGSEGV,​ &sa, NULL);
 + 
 +    return 0;
 +}
 +</​code>​
  
  
Line 156: Line 180:
     * În urma rulării testelor, se va acorda, în mod automat, un punctaj total. Punctajul total maxim este de 95 de puncte, pentru o temă care trece toate testele. La acest punctaj se adaugă 5 puncte din oficiu.     * În urma rulării testelor, se va acorda, în mod automat, un punctaj total. Punctajul total maxim este de 95 de puncte, pentru o temă care trece toate testele. La acest punctaj se adaugă 5 puncte din oficiu.
     * Cele 100 de puncte corespund la 10 puncte din cadrul notei finale.     * Cele 100 de puncte corespund la 10 puncte din cadrul notei finale.
-  * **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 puncte din totalul de 100 însă ajută la o organizare mai bună a codului. Pentru mai multe informații ​(dacă este nevoie) ​despre un cod de calitate citiți [[http://​ocw.cs.pub.ro/​courses/​so/​laboratoare/​resurse/​c_tips | pagina de recomandări]].
  
 <note important>​ <note important>​
-Înainte de a [[https://​vmchecker.cs.pub.ro | uploada]] tema, asigurați-vă că implementarea voastră trece testele pe [[http://​ocw.cs.pub.ro/​courses/​so/​info/​mv | mașinile virtuale]]. Dacă apar probleme în rezultatele testelor, acestea se vor reproduce și pe [[https://​vmchecker.cs.pub.ro | vmchecker]].+Înainte de a [[https://​vmchecker.cs.pub.ro | uploada]] tema, asigurați-vă că implementarea voastră trece testele pe [[http://​ocw.cs.pub.ro/​courses/​so/​info/​mv | mașina virtuală de linux]]. Dacă apar probleme în rezultatele testelor, acestea se vor reproduce și pe [[https://​vmchecker.cs.pub.ro | vmchecker]] ​sau pe orice alt mediu de testare solicitat.
 </​note>​ </​note>​
  
Line 166: Line 190:
   * Urmăriți penalizările precizate în cadrul [[http://​ocw.cs.pub.ro/​courses/​so/​teme/​general#​lista_depunctari | listei de depunctări]]   * Urmăriți penalizările precizate în cadrul [[http://​ocw.cs.pub.ro/​courses/​so/​teme/​general#​lista_depunctari | listei de depunctări]]
   * În cazuri excepționale (e.g. tema trece testele, însă implementarea este defectuoasă sau incompletă) se pot aplica depunctări suplimentare celor menționate mai sus.   * În cazuri excepționale (e.g. tema trece testele, însă implementarea este defectuoasă sau incompletă) se pot aplica depunctări suplimentare celor menționate mai sus.
 +  * În general nu vă concentrați pe depunctări,​ nu este scopul nostru să vă dăm note mici, ci doar să vă atenționăm unde lucrurile pot fi făcute mai bine fără a aplica depunctări care să vă afecteze semnificativ nota finală.
  
 ===== Resurse de suport ===== ===== Resurse de suport =====
- +  *Partea de curs și laborator care prezintă partea de gestiune a memoriei și memorie virtuală 
-  *Cursuri (Old but gold) +  ​*Resursele de mai jos sunt mai vechi și nu trebuie consultate în detaliu pentru rezolvarea temei. Anumite concepte pot să vă fie de folos însă părțile de care aveți nevoie din ele nu reprezintă o parte semnificativă din rezolvarea temei 
-    *[[http://​ocw.cs.pub.ro/​courses/​so/​cursuri/​curs-05 | Gestiunea memoriei]] +    ​*Cursuri (Old but gold) 
-    *[[http://​ocw.cs.pub.ro/​courses/​so/​cursuri/​curs-06 | Memoria virtuală]] +      *[[http://​ocw.cs.pub.ro/​courses/​so/​cursuri/​curs-05 | Gestiunea memoriei]] 
-    *[[http://​ocw.cs.pub.ro/​courses/​so/​cursuri/​curs-07 | Securitatea memoriei]] +      *[[http://​ocw.cs.pub.ro/​courses/​so/​cursuri/​curs-06 | Memoria virtuală]] 
-  *Laboratoare (Old but gold) +      *[[http://​ocw.cs.pub.ro/​courses/​so/​cursuri/​curs-07 | Securitatea memoriei]] 
-    *[[https://​ocw.cs.pub.ro/​courses/​so/​laboratoare/​laborator-01] | Creare makefile și biblioteci]] +    *Laboratoare (Old but gold) 
-    *[[http://​ocw.cs.pub.ro/​courses/​so/​laboratoare/​laborator-04 | Semnale]] +      *[[https://​ocw.cs.pub.ro/​courses/​so/​laboratoare/​laborator-01] | Creare makefile și biblioteci]] 
-    *[[http://​ocw.cs.pub.ro/​courses/​so/​laboratoare/​laborator-05 | Gestiunea memoriei]] +      *[[http://​ocw.cs.pub.ro/​courses/​so/​laboratoare/​laborator-04 | Semnale]] 
-    *[[http://​ocw.cs.pub.ro/​courses/​so/​laboratoare/​laborator-06 | Memoria virtuală]] +      *[[http://​ocw.cs.pub.ro/​courses/​so/​laboratoare/​laborator-05 | Gestiunea memoriei]] 
-  *Operating System Concepts -- Chapter 8 -- Main Memory +      *[[http://​ocw.cs.pub.ro/​courses/​so/​laboratoare/​laborator-06 | Memoria virtuală]] 
-  *Operating System Concepts -- Chapter 9 -- Virtual Memory+    *Operating System Concepts -- Chapter 8 -- Main Memory 
 +    *Operating System Concepts -- Chapter 9 -- Virtual Memory
   *Teste   *Teste
     * [[https://​github.com/​systems-cs-pub-ro/​so/​tree/​2022-2023/​teme/​assignments/​1-loader/​checker-lin | Teste Linux]]     * [[https://​github.com/​systems-cs-pub-ro/​so/​tree/​2022-2023/​teme/​assignments/​1-loader/​checker-lin | Teste Linux]]
Line 186: Line 212:
  
   *[[https://​elf.cs.pub.ro/​vmchecker/​ui | Interfața de upload vmchecker]]   *[[https://​elf.cs.pub.ro/​vmchecker/​ui | Interfața de upload vmchecker]]
-  *[[https://​curs.upb.ro/​mod/​forum/​view.php?​id=259918|forumul temei]]+  *[[https://​curs.upb.ro/2022/​mod/​forum/​view.php?​id=76307|forumul temei]]
   *[[https://​en.wikipedia.org/​wiki/​Executable_and_Linkable_Format| Formatul fișierelor executabile pe Linux (ELF)]]   *[[https://​en.wikipedia.org/​wiki/​Executable_and_Linkable_Format| Formatul fișierelor executabile pe Linux (ELF)]]
  
so/teme/tema-3.1667751293.txt.gz · Last modified: 2022/11/06 18:14 by ionut.mihalache1506
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0