This shows you the differences between two versions of the page.
sd-ca:teme:tema1-2023 [2023/03/22 21:32] radu.nichita created |
sd-ca:teme:tema1-2023 [2023/04/05 23:30] (current) radu.nichita [Virtual Memory Allocator] |
||
---|---|---|---|
Line 8: | Line 8: | ||
* Data publicării: **22.03.2023 22:00:00** | * Data publicării: **22.03.2023 22:00:00** | ||
- | * Deadline **HARD**: **10.04.2023 23:55:00** | + | * Deadline **HARD**: <del>**10.04.2023 23:55:00**</del> **12.04.2023 23:55:00** |
+ | |||
+ | ===== Actualizări ===== | ||
+ | * Adăugare mesaje de eroare (INVALID_ALLOC_BLOCK): **28.03.2023** | ||
+ | * Adăugare clarificări arenă: **24.03.2023** | ||
Line 37: | Line 41: | ||
<code c> | <code c> | ||
- | { | + | { |
- | uint64_t start_address; // adresa de început a zonei, un indice din arenă | + | uint64_t start_address; // adresa de început a zonei, un indice din arenă |
- | size_t size; // dimensiunea totală a zonei, suma size-urilor miniblock-urilor | + | size_t size; // dimensiunea totală a zonei, suma size-urilor miniblock-urilor |
- | void* miniblock_list; // lista de miniblock-uri adiacente | + | void* miniblock_list; // lista de miniblock-uri adiacente |
- | } block_t; | + | } block_t; |
| | ||
</code> | </code> | ||
Line 129: | Line 133: | ||
* INVALID_ALLOC_BLOCK | * INVALID_ALLOC_BLOCK | ||
+ | * Dacă adresa de început a blocului ce se dorește a fi alocat depășește dimensiunea arenei, se va afișa **"The allocated address is outside the size of arena\n"**. | ||
+ | * Dacă adresa de final a blocului ce se dorește a fi alocat depășește dimensiunea arenei, se va afișa **"The end address is past the size of the arena\n"**. | ||
* Dacă există cel puțin o adresă din zona de memorie [adresă_din_arenă, adresă_din_arenă + dimensiune) care a fost alocată anterior, se va afișa **“This zone was already allocated.\n”**. | * Dacă există cel puțin o adresă din zona de memorie [adresă_din_arenă, adresă_din_arenă + dimensiune) care a fost alocată anterior, se va afișa **“This zone was already allocated.\n”**. | ||
* INVALID_ADDRESS_FREE | * INVALID_ADDRESS_FREE | ||
Line 164: | Line 170: | ||
ALLOC_BLOCK 12298 10 | ALLOC_BLOCK 12298 10 | ||
PMAP | PMAP | ||
- | WRITE 4096 25 Observ sisteme de operare | + | WRITE 4096 26 Observ sisteme de operare |
READ 4096 14 | READ 4096 14 | ||
FREE_BLOCK 12298 | FREE_BLOCK 12298 | ||
Line 263: | Line 269: | ||
* Eliberarea memoriei se va verifica folosind utilitarul Valgrind. O temă ce conține memory leaks va atrage după sine punctaj de **0p pe testul respectiv**. | * Eliberarea memoriei se va verifica folosind utilitarul Valgrind. O temă ce conține memory leaks va atrage după sine punctaj de **0p pe testul respectiv**. | ||
+ | <note warning> | ||
+ | |||
+ | * Este **obligatorie** construirea unei implementări care folosește conceptul de listă în listă. | ||
+ | |||
+ | * Orice tentativă de alocare a unui vector liniar, contiguu și de simulare a operațiilor aplicate arenei pe acesta este **interzisă**. Arena există doar la nivel conceptual, task-urile temei aplicându-se pe lista dublu înlănțuită de block-uri, respectiv miniblock-uri. | ||
+ | |||
+ | * Nerespectarea acestor constrângeri va conduce la **notarea temei cu 0 puncte**. | ||
+ | |||
+ | </note> | ||
===== Checker ===== | ===== Checker ===== | ||
Line 275: | Line 290: | ||
* fișier **Makefile** cu două reguli: | * fișier **Makefile** cu două reguli: | ||
* regula **build**: în urma căreia se generează un executabil numit **vma** | * regula **build**: în urma căreia se generează un executabil numit **vma** | ||
+ | * regula **run_vma**: în urma căreia va rula executabilul **vma** | ||
* regula **clean** care şterge executabilul si fișierele obiect | * regula **clean** care şterge executabilul si fișierele obiect | ||
* Compilarea trebuie sa se realizeze cu flagurile **-Wall -Wextra -std=c99** | * Compilarea trebuie sa se realizeze cu flagurile **-Wall -Wextra -std=c99** | ||
* fișier **README** care să conțină detalii despre implementarea temei | * fișier **README** care să conțină detalii despre implementarea temei | ||