This shows you the differences between two versions of the page.
so:laboratoare:laborator-12 [2020/04/18 12:20] dragos_florin.costea [Exercițiul 3] |
so:laboratoare:laborator-12 [2022/05/29 20:59] (current) maria.mihailescu [Înainte de laborator: Feedback] Fix date |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Laborator 12 - Implementarea sistemelor de fișiere ====== | ====== Laborator 12 - Implementarea sistemelor de fișiere ====== | ||
- | ===== Materiale Ajutătoare ===== | ||
- | |||
- | * [[http://elf.cs.pub.ro/so/res/laboratoare/lab12-slides.pdf | lab12-slides.pdf]] | ||
===== Nice to read ===== | ===== Nice to read ===== | ||
Line 30: | Line 27: | ||
* [[#dirname_si_basename|dirname și basename]] | * [[#dirname_si_basename|dirname și basename]] | ||
+ | ===== Înainte de laborator: Feedback ===== | ||
+ | |||
+ | Pentru a îmbunătăți cursul de SO, componentele sale și modul de desfășurare, ne sunt foarte utile opiniile voastre. Pentru aceasta, vă rugăm să accesați și completați formularul de feedback de pe site-ul [[https://curs.upb.ro|curs.upb.ro]]. Trebuie să fiți autentificați și înrolați în cadrul cursului. | ||
+ | |||
+ | Formularul este anonim și este activ în perioada 23 mai 2022 - 3 iunie 2022. Rezultatele vor fi vizibile în cadrul echipei cursului doar după încheierea sesiunii. Este accesibil la link-ul "Formular feedback" a paginii principale a cursului de SO al seriei voastre pe [[https://curs.upb.ro|curs.upb.ro]]. **Nu** este în meta-cursul disponibil tuturor seriilor. | ||
+ | |||
+ | Vă invităm să evaluați activitatea echipei de SO și să precizați punctele tari și punctele slabe și sugestiile voastre de îmbunătățire a disciplinei. Feedback-ul vostru ne ajută să creștem calitatea materiei în anii următori și să îmbunătățim disciplinele pe care le veți face în continuare. | ||
+ | |||
+ | Vom publica la începutul semestrului viitor analiza feedback-ului vostru. | ||
+ | |||
+ | Ne interesează în special: | ||
+ | |||
+ | * Ce nu v-a plăcut și ce credeți că nu a mers bine? | ||
+ | * De ce nu v-a plăcut și de ce credeți că nu a mers bine? | ||
+ | * Ce ar trebuie să facem ca lucrurile să fie plăcute și să meargă bine? | ||
===== Device Nodes ===== | ===== Device Nodes ===== | ||
Line 230: | Line 242: | ||
===== Rezolvarea unei căi ===== | ===== Rezolvarea unei căi ===== | ||
- | Apelul [[http://man7.org/linux/man-pages/man3/realpath.3.html | realpath(3)]] dereferențiază link-ul simbolic primit ca argument în ''path'' și elimină subşirurile ''/./'', ''/../'' plus apariţii în plus ale caracterului ''/'' pentru a genera o cale absolută plasată în parametrul de ieşire ''realpath''. | + | Apelul [[http://man7.org/linux/man-pages/man3/realpath.3.html | realpath(3)]] dereferențiază link-ul simbolic primit ca argument în ''path'' **și** elimină subşirurile ''/./'', ''/../'' precum şi apariţii în plus ale caracterului ''/'' pentru a genera o cale absolută plasată în parametrul de ieşire ''realpath''. |
- | Exemplu: Dacă parametrul de intrare ''path'' ar fi ''/home/madalina/%%/%%/%%/%%/so/tema4/../../seriale/thewire/'' , în urma apelului ''realpath(path, resolved_path)'', parametrul de ieşire ''resolved_path'' devine ''/home/madalina/seriale/thewire/''. | + | Exemplu: Dacă parametrul de intrare ''path'' ar fi ''/home/madalina/%%/%%/%%/%%/so/tema4/../../seriale/thewire/'' , în urma apelului ''realpath(path, resolved_path)'', parametrul de ieşire ''resolved_path'' devine ''/home/madalina/seriale/thewire/''. Presupunem că ierarhia de directoare prezentată în exemplu există deja. |
<code c> | <code c> | ||
Line 260: | Line 272: | ||
====== Exerciții ====== | ====== Exerciții ====== | ||
+ | |||
+ | <note important> | ||
+ | În cadrul laboratoarelor vom folosi repository-ul de git al materiei SO - https://github.com/systems-cs-pub-ro/so. Va trebui sa clonați repository-ul pe masinile virtuale folosind comanda: ''git clone https://github.com/systems-cs-pub-ro/so''. Dacă doriți să descărcați repositoryul în altă locație, folosiți comanda ''git clone https://github.com/systems-cs-pub-ro/so ${target}''. | ||
+ | |||
+ | Pentru a actualiza repository-ul, folosiți comanda ''git pull origin master'' din interiorul directorului în care se află repository-ul. Recomandarea este să îl actualizați cât mai frecvent, înainte să începeți lucrul, pentru a vă asigura că aveți versiunea cea mai recentă. În cazul în care gitul detectează conflicte la nivelul vreunui fişier, folosiți următoarele comenzi pentru a vă păstra modificările: | ||
+ | <code> | ||
+ | git stash | ||
+ | git pull origin master | ||
+ | git stash pop | ||
+ | </code> | ||
+ | |||
+ | Pentru mai multe informații despre folosirea utilitarului git, urmați ghidul de la https://gitimmersion.com. | ||
+ | </note> | ||
===== Completare feedback ===== | ===== Completare feedback ===== | ||
Line 265: | Line 290: | ||
Vă invităm să **evaluați activitatea echipei de SO** și să precizați punctele tari și punctele slabe și sugestiile voastre de îmbunătățire a materiei. Feedback-ul vostru este foarte important pentru noi să creștem calitatea materiei în anii următori și să îmbunătățim materiile pe care le veți face în continuare. | Vă invităm să **evaluați activitatea echipei de SO** și să precizați punctele tari și punctele slabe și sugestiile voastre de îmbunătățire a materiei. Feedback-ul vostru este foarte important pentru noi să creștem calitatea materiei în anii următori și să îmbunătățim materiile pe care le veți face în continuare. | ||
- | <note tip>Găsiți **formularul de feedback** în partea dreaptă a paginii principale de SO de pe [[https://acs.curs.pub.ro|acs.cs.pub.ro]] într-un frame numit //"FEEDBACK"//. Trebuie să fiți înrolați la cursul de SO și să intrati pe pagina asociată seriei voastre (nu pe metaserie), altfel veți primi o eroare de acces. | + | <note tip>Găsiți **formularul de feedback** în partea dreaptă a paginii principale de SO de pe [[https://curs.upb.ro|curs.upb.ro]] într-un frame numit //"FEEDBACK"//. Trebuie să fiți înrolați la cursul de SO și să intrati pe pagina asociată seriei voastre **(nu pe metaserie)**, altfel veți primi o eroare de acces. |
</note> | </note> | ||
Vă mulțumim! | Vă mulțumim! | ||
Line 271: | Line 296: | ||
===== Linux ===== | ===== Linux ===== | ||
- | <note important>Pentru rezolvarea laboratorului descărcați arhiva de [[http://elf.cs.pub.ro/so/res/laboratoare/lab12-tasks.zip | lab12-tasks.zip]]. Codul va fi scris în fișierul ''mini.c'' din directorul ''1-mini/''. Pentru fiecare exercițiu decomentați linia TODO corespunzătoare. </note> | + | <note important>Codul va fi scris în fișierul ''mini.c'' din directorul ''1-mini/''. Pentru fiecare exercițiu decomentați linia ''TODO'' corespunzătoare. </note> |
Line 301: | Line 325: | ||
<code bash> | <code bash> | ||
- | mount /dev/mapper/vagrant--vg-root /mnt/my ext4 | + | mount /dev/mapper/vgvagrant-root /mnt/my ext4 |
</code> | </code> | ||
- | În cazul în care nu lucraţi în maşina virtuală de SO, folosiţi ''/dev/sda1'' în loc de ''/dev/mapper/vagrant--vg-root''. | + | În cazul în care nu lucraţi în maşina virtuală de SO, folosiţi ''/dev/sda1'' în loc de ''/dev/mapper/vgvagrant-root''. |
- | Într-o altă consolă, într-un shell obișnuit, verificați rezultatele folosind comanda<code bash> | + | Într-o altă consolă, într-un shell obișnuit, verificați rezultatele folosind comanda: |
+ | <code bash> | ||
cat /proc/mounts | cat /proc/mounts | ||
</code> | </code> | ||
Line 318: | Line 343: | ||
Pentru testare folosiți, în shell-ul aferent comenzii ''./mini'', comanda:<code bash> | Pentru testare folosiți, în shell-ul aferent comenzii ''./mini'', comanda:<code bash> | ||
- | symlink /etc/passwd local-passwd | + | symlink /proc/filesystems local-filesystems |
</code> | </code> | ||
Ca să verificați, într-o altă consolă, în același director cu cel în care ați rulat comanda ''./mini'', folosiți<code bash> | Ca să verificați, într-o altă consolă, în același director cu cel în care ați rulat comanda ''./mini'', folosiți<code bash> | ||
Line 324: | Line 349: | ||
</code> | </code> | ||
Pentru a șterge symlink-ul folosiți comanda<code bash> | Pentru a șterge symlink-ul folosiți comanda<code bash> | ||
- | unlink local-passwd | + | unlink local-filesystems |
</code> | </code> | ||
Pentru validare rulați din nou comanda<code bash> | Pentru validare rulați din nou comanda<code bash> | ||
Line 353: | Line 378: | ||
- | |||
- | ===== Soluții ===== | ||
- | |||
- | [[http://elf.cs.pub.ro/so/res/laboratoare/lab12-sol.zip | Soluții exerciții laborator 12]] | ||