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