This shows you the differences between two versions of the page.
programare:teme_2015:tema4_2015_ca [2015/12/07 01:58] radu_silviu.visan |
programare:teme_2015:tema4_2015_ca [2015/12/22 22:15] (current) darius.neatu |
||
---|---|---|---|
Line 3: | Line 3: | ||
**Responsabili**: Darius Neațu, Radu Vișan | **Responsabili**: Darius Neațu, Radu Vișan | ||
- | **Deadline**: 20.12.2015 | + | **Deadline**: 20.12.2015, ora 23:55 |
- | **Ultima modificare**: 7.12.2015 | + | **Ultima modificare**: 22.12.2015 |
+ | |||
+ | **Publicare checker**: 22.12.2015 | ||
Line 22: | Line 24: | ||
----- | ----- | ||
- | Primul sector fizic de pe un hard-disk poartă numele de Master Boot Record (MBR). Acest sectore are 512 octeți și conține informații foarte importante despre modul cum este partiționat hard-disk-ul. Dacă acest sector este suprascris sau șters toate informațiile de pe hard-disk se șterg. | + | Primul sector fizic de pe un hard-disk poartă numele de Master Boot Record (MBR). Acest sector are 512 octeți și conține informații foarte importante despre modul cum este partiționat hard-disk-ul. Dacă acest sector este suprascris sau șters toate informațiile de pe hard-disk se șterg. |
În cadrul MBR se găsesc informații despre fiecare partiție de pe hard-disk. Aceste informații sunt stocate într-o tabelă de partiții primare care are doar patru intrări. Prin urmare MBR-ul poate reține informații doar pentru 4 partiții primare. Una dintre aceste patru partiții primare va fi marcată ca activă și de pe ea se va încerca pornirea sistemului de operare. | În cadrul MBR se găsesc informații despre fiecare partiție de pe hard-disk. Aceste informații sunt stocate într-o tabelă de partiții primare care are doar patru intrări. Prin urmare MBR-ul poate reține informații doar pentru 4 partiții primare. Una dintre aceste patru partiții primare va fi marcată ca activă și de pe ea se va încerca pornirea sistemului de operare. | ||
MBR-ul mai contine și bootloader-ul – un mic program care pornește un sistem de operare prezent pe computer. | MBR-ul mai contine și bootloader-ul – un mic program care pornește un sistem de operare prezent pe computer. | ||
În figura următoare se poate vedea configurația unui MBR: | În figura următoare se poate vedea configurația unui MBR: | ||
+ | |||
{{ :programare:teme_2015:mbr.jpg?400x300 }} | {{ :programare:teme_2015:mbr.jpg?400x300 }} | ||
Line 49: | Line 52: | ||
- o listă cu adresele de început pentru fiecare partiție existentă. În continuare ne vom referi la o adresă ca fiind o poziție din fișierul binar pe care se lucrează. Prima poziție din fișier este 0x00. | - o listă cu adresele de început pentru fiecare partiție existentă. În continuare ne vom referi la o adresă ca fiind o poziție din fișierul binar pe care se lucrează. Prima poziție din fișier este 0x00. | ||
- Partiție \\ O partiție înglobează un sistem de fișiere și directoare, având o dimensiune specificată. \\ Conține în ordine următoarele informații: | - Partiție \\ O partiție înglobează un sistem de fișiere și directoare, având o dimensiune specificată. \\ Conține în ordine următoarele informații: | ||
- | - header = o succesiune de 12 bytes cu următoarea semnificație: | + | - header = o succesiune de 20 bytes cu următoarea semnificație: |
- un int reprezentând lungimea numelui partiției | - un int reprezentând lungimea numelui partiției | ||
- 8 bytes reprezentând numele partiției; prin convenție, numele partiției este de forma “/dev/sd?”, unde ? este un character alfanumeric | - 8 bytes reprezentând numele partiției; prin convenție, numele partiției este de forma “/dev/sd?”, unde ? este un character alfanumeric | ||
Line 71: | Line 74: | ||
Pentru a ilustra cele spuse anterior vom considera exemplul din Figura 1: | Pentru a ilustra cele spuse anterior vom considera exemplul din Figura 1: | ||
- | {{ :programare:teme_2015:figura1.jpg?nolink&300 |}} | + | {{ :programare:teme_2015:dump-example.png?nolink&300 |}} |
In figură am folosit următoarele convenții: | In figură am folosit următoarele convenții: | ||
Line 78: | Line 81: | ||
* Descrierea unui director = albastru | * Descrierea unui director = albastru | ||
* Descrierea unui fișier = mov | * Descrierea unui fișier = mov | ||
- | * Indexul de start al liniilor, respective indicii coloanelor = negru (acesta este doar pentru exemple, fișierele de intrare nu vor conține aceste valori) | + | * Indexul de start al liniilor, respectiv indicii coloanelor = negru (acesta este doar pentru exemple, fișierele de intrare nu vor conține aceste valori) |
- | În exemplu, MBR conține două partiții: prima începe la poziția 0x0C în fișier, iar cea de-a doua partiție începe la poziția 0x44 (0x semnifică baza 16; 44 în baza 16 inseamnă 68 în baza 10). | + | În exemplu, MBR conține două partiții: prima începe la poziția 0x0C în fișier, iar cea de-a doua partiție începe la poziția 0x44 (0x semnifică baza 16; 44 în baza 16 înseamnă 68 în baza 10). |
Prima partiție are numele “/dev/sda”, MAXD = 1, MAXF = 1 și conține: | Prima partiție are numele “/dev/sda”, MAXD = 1, MAXF = 1 și conține: | ||
Line 124: | Line 127: | ||
A doua partiție contine doar un fișier, deci occupied_size este 12 bytes. Partiția mai are alocat spațiu pentru încă un fișier inexistent (12 bytes) , precum și pentru un director cu 2 fișiere în el (12 + 2*12 = 36 bytes). | A doua partiție contine doar un fișier, deci occupied_size este 12 bytes. Partiția mai are alocat spațiu pentru încă un fișier inexistent (12 bytes) , precum și pentru un director cu 2 fișiere în el (12 + 2*12 = 36 bytes). | ||
- | {{:programare:teme_2015:figura2a.jpg?nolink&300 |}} {{ :programare:teme_2015:figura2b.jpg?nolink&300 |}} | + | {{:programare:teme_2015:task1-wrong1.png?nolink&300 |}} {{ :programare:teme_2015:task1-wrong2.png?nolink&300 |}} |
Line 137: | Line 140: | ||
* CREATE_FILE <path> | * CREATE_FILE <path> | ||
Se va crea fișierul specificat prin calea absolută <path>. Întrucât un director are alocat un număr fix de sloturi pentru fișiere, unele fiind goale (pline de 0), se va folosi primul slot liber din directorul respectiv pentru a aloca noul fișier. | Se va crea fișierul specificat prin calea absolută <path>. Întrucât un director are alocat un număr fix de sloturi pentru fișiere, unele fiind goale (pline de 0), se va folosi primul slot liber din directorul respectiv pentru a aloca noul fișier. | ||
- | * RENAME_FILE <path> | + | * RENAME_FILE <path> <newName> |
Se va redenumi fișierul specificat prin calea absolută <path>. | Se va redenumi fișierul specificat prin calea absolută <path>. | ||
* DELETE_FILE <path> | * DELETE_FILE <path> | ||
Line 143: | Line 146: | ||
* CREATE_DIR <path> | * CREATE_DIR <path> | ||
Se va crea directorul specificat prin calea absolută <path>. Întrucât o partiție are alocat un număr fix de sloturi pentru directoare, unele fiind goale (pline de 0), se va folosi primul slot liber din partiția respectivă pentru a aloca noul director. | Se va crea directorul specificat prin calea absolută <path>. Întrucât o partiție are alocat un număr fix de sloturi pentru directoare, unele fiind goale (pline de 0), se va folosi primul slot liber din partiția respectivă pentru a aloca noul director. | ||
- | * RENAME_DIR <path> | + | * RENAME_DIR <path> <newName> |
Se va redenumi directorul specificat prin calea absolută <path>. | Se va redenumi directorul specificat prin calea absolută <path>. | ||
* DELETE_DIR <path> | * DELETE_DIR <path> | ||
Line 172: | Line 175: | ||
- | {{ :programare:teme_2015:figura3.jpg?nolink&300 |}} | + | {{ :programare:teme_2015:bonus-example.png?nolink&300 |}} |
Line 196: | Line 199: | ||
* Arhiva va fi trimisă atât pe vmchecker cât și pe moodle. | * Arhiva va fi trimisă atât pe vmchecker cât și pe moodle. | ||
* O temă care nu compilează nu va fi punctată. | * O temă care nu compilează nu va fi punctată. | ||
+ | * O temă care compilează dar care NU trece nici un test pe vmchecker nu va fi punctată. | ||
Line 207: | Line 211: | ||
=== Testare === | === Testare === | ||
------ | ------ | ||
- | + | Arhiva de testare se gaseste [[http://ocw.cs.pub.ro/courses/_media/programare/teme_2015/mbr-checker.zip|aici]]. | |
- | TODO | + |