Differences

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

Link to this comparison view

sd-ca:teme:tema1-2024 [2024/03/22 14:51]
maria.sfiraiala
sd-ca:teme:tema1-2024 [2024/03/27 21:24] (current)
maria.sfiraiala [Actualizări]
Line 13: Line 13:
  
   * Eliminare mesaj de eroare INVALID_COMMAND:​ **22.03.2024**   * Eliminare mesaj de eroare INVALID_COMMAND:​ **22.03.2024**
 +  * Publicare checker: **22.03.2024** 
 +  * Update checker: **26.03.2024** 
 +  * Mențiune privind obligativitatea eliminării blocurilor la alocare din vectorul de liste: **27.03.2024**
 ===== Obiective ===== ===== Obiective =====
  
Line 53: Line 55:
       - Adresele din heap vor fi în intervalul [heap_base, heap_base + heap_size).       - Adresele din heap vor fi în intervalul [heap_base, heap_base + heap_size).
     * Parametrul <​tip_reconsituire>​ va fi relevant pentru cerința FREE, găsiți mai multe detalii la secțiunea acesteia.     * Parametrul <​tip_reconsituire>​ va fi relevant pentru cerința FREE, găsiți mai multe detalii la secțiunea acesteia.
 +
 +<​note>​
 +<​adresă_start_heap>​ reprezintă un număr pozitiv, nenul.
 +</​note>​
  
 <​note>​ <​note>​
Line 214: Line 220:
 <​code>​ <​code>​
 Fie situația în care avem un singur bloc liber, de dimensiune 16 bytes, Fie situația în care avem un singur bloc liber, de dimensiune 16 bytes,
-care începe de la adresa ​0x0.+care începe de la adresa ​0x1.
  
 MALLOC 6 MALLOC 6
 ---> Se fragmentează blocul de 16 bytes într-o parte de 6 bytes ---> Se fragmentează blocul de 16 bytes într-o parte de 6 bytes
      ce va fi alocată și o parte de 10 bytes ce rămâne liberă      ce va fi alocată și o parte de 10 bytes ce rămâne liberă
-     Se întoarce adresa ​0x0.+     Se întoarce adresa ​0x1.
 MALLOC 5 MALLOC 5
 ---> Se fragmentează blocul de 10 bytes într-o parte de 5 bytes ---> Se fragmentează blocul de 10 bytes într-o parte de 5 bytes
      ce va fi alocată și o parte de 5 bytes ce rămâne liberă      ce va fi alocată și o parte de 5 bytes ce rămâne liberă
-     Se întoarce adresa ​0x6+     Se întoarce adresa ​0x7
-FREE 0x6+FREE 0x7
 ---> Se alipește fragmentul de 5 bytes cu fragmentul liber de ---> Se alipește fragmentul de 5 bytes cu fragmentul liber de
      5 bytes.      5 bytes.
      ​Rezultă un bloc de dimensiune 10 bytes.      ​Rezultă un bloc de dimensiune 10 bytes.
-FREE 0x0+FREE 0x1
 ---> Se alipește fragmentul de 6 bytes cu fragmentul liber de ---> Se alipește fragmentul de 6 bytes cu fragmentul liber de
      10 bytes.      10 bytes.
Line 238: Line 244:
 <​code>​ <​code>​
 Fie situația în care avem un singur bloc liber, de dimensiune 16 bytes, Fie situația în care avem un singur bloc liber, de dimensiune 16 bytes,
-care începe de la adresa ​0x0.+care începe de la adresa ​0x1.
  
 MALLOC 6 MALLOC 6
 ---> Se fragmentează blocul de 16 bytes într-o parte de 6 bytes ---> Se fragmentează blocul de 16 bytes într-o parte de 6 bytes
      ce va fi alocată și o parte de 10 bytes ce rămâne liberă      ce va fi alocată și o parte de 10 bytes ce rămâne liberă
-     Se întoarce adresa ​0x0.+     Se întoarce adresa ​0x1.
 MALLOC 5 MALLOC 5
 ---> Se fragmentează blocul de 10 bytes într-o parte de 5 bytes ---> Se fragmentează blocul de 10 bytes într-o parte de 5 bytes
      ce va fi alocată și o parte de 5 bytes ce rămâne liberă      ce va fi alocată și o parte de 5 bytes ce rămâne liberă
-     Se întoarce adresa ​0x6+     Se întoarce adresa ​0x7
-FREE 0x0+FREE 0x1
 ---> Se creează un bloc nou de dimensiune 6 bytes. ---> Se creează un bloc nou de dimensiune 6 bytes.
      ​Există 2 liste cu câte un bloc fiecare, unul de 5 bytes și unul de 6 bytes.      ​Există 2 liste cu câte un bloc fiecare, unul de 5 bytes și unul de 6 bytes.
-FREE 0x6+FREE 0x7
 ---> Se alipește fragmentul de 5 bytes cu fragmentele de 5 și 6 bytes. ---> Se alipește fragmentul de 5 bytes cu fragmentele de 5 și 6 bytes.
      ​Există o singură listă, cu un singur bloc, de dimensiune 16      ​Există o singură listă, cu un singur bloc, de dimensiune 16
Line 279: Line 285:
 <note warning> <note warning>
  
-  * Este **obligatorie** construirea unei implementări care folosește conceptul de vector de liste.+  * Este **obligatorie** construirea unei implementări care folosește conceptul de **vector de liste dublu înlănțuite**. 
 + 
 +  * Este **obligatoriu** să realizați eliminarea blocurilor din vectorul de liste atunci când acestea sunt alocate.
  
   * Nerespectarea acestor constrângeri va conduce la **notarea temei cu 0 puncte**.   * Nerespectarea acestor constrângeri va conduce la **notarea temei cu 0 puncte**.
Line 287: Line 295:
 ===== Checker ===== ===== Checker =====
  
-**TBD**+Arhivă checker: {{:​sd-ca:​teme:​sfl_checker.zip|}} 
 + 
 +<​note>​ 
 +Pentru a utiliza checker-ul:​ 
 +    ​Dezarhivați fișierul .zip în folderul in care se află implementarea voastră. 
 +    ​Asigurați-vă că Makefile-ul vostru conține regulile ​**build**, **run_sfl** și **clean**. 
 +    * Rulați folosind comanda "​./​check"​. 
 +</​note>​ 
 + 
 +Temele vor fi trimise pe Moodle.
  
 +Arhiva trebuie sa contina:
 +     * sursele **.c si .h**
 +     * fișier Makefile cu trei reguli:
 +       * regula **build**: în urma căreia se genereaza un executabil numit **sfl**
 +       * regula **run_sfl**:​ în urma căreia va rula executabilul **sfl**
 +       * regula **clean** care șterge executabilul și fișierele obiect
 +     * Compilarea trebuie să se realizeze cu flagurile **-Wall -Wextra -std=c99**
 +     * fișier **README** care să conțină detalii despre implementarea temei.
sd-ca/teme/tema1-2024.1711111876.txt.gz · Last modified: 2024/03/22 14:51 by maria.sfiraiala
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