This shows you the differences between two versions of the page.
|
programare:teme_2015:tema4_2015_ca [2015/12/07 15:43] radu_silviu.visan |
programare:teme_2015:tema4_2015_ca [2015/12/22 22:15] (current) darius.neatu |
||
|---|---|---|---|
| Line 5: | Line 5: | ||
| **Deadline**: 20.12.2015, ora 23:55 | **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. | ||
| Line 50: | 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 79: | 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 138: | 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 144: | 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 197: | 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 208: | Line 211: | ||
| === Testare === | === Testare === | ||
| ------ | ------ | ||
| - | + | Arhiva de testare se gaseste [[http://ocw.cs.pub.ro/courses/_media/programare/teme_2015/mbr-checker.zip|aici]]. | |
| - | TODO | + | |