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 | + | |