Differences

This shows you the differences between two versions of the page.

Link to this comparison view

so:cursuri:curs-12 [2013/01/31 21:57]
127.0.0.1 external edit
so:cursuri:curs-12 [2019/05/11 15:36] (current)
razvan.deaconescu
Line 1: Line 1:
-====== Curs 12 - Securitatea ​sistemelor de operare ​======+====== Curs 12 - Implementarea ​sistemelor de fișiere ​====== 
 + 
 +  * [[http://​prezi.com/​i7gfiypqqpje/?​utm_campaign=share&​utm_medium=copy&​rc=ex0share|Curs 12 - Implementarea sistemelor de fișiere (Vizualizare Prezi)]] 
 +  * [[http://​elf.cs.pub.ro/​so/​res/​cursuri/​SO_Curs-12.pdf|Curs 12 - Implementarea sistemelor de fișiere (PDF)]] 
 + 
 +  * [[https://​docs.google.com/​document/​d/​1yQIKPYfAiUehhdSf1D10f3lIH3hnd5xXVyL2ftBH3iQ/​edit?​usp=sharing|Notițe de curs]] 
 + 
 +  * Suport curs 
 +    * Operating System Concepts Essentials 
 +      * Capitolul 10: File-System Implementation 
 +        * Secțiunile 10.1 -- 10.8 
 +    * Modern Operating Systems 
 +      * Capitolul 6: File Systems 
 +        * Secțiunile 6.3, 6.4
  
 <​html>​ <​html>​
-<iframe src="​https://​docs.google.com/present/embed?id=dgbccfz4_815d98458d5&size=m" frameborder="0" width="​555" height="​451"></​iframe>​+  <​center>​ 
 +    ​<iframe src="​https://​prezi.com/embed/​i7gfiypqqpje/​?bgcolor=ffffff&amp;​lock_to_path=0&​amp;​autoplay=0&​amp;​autohide_ctrls=0&​amp;​features=undefined&​amp;​disabled_features=undefined" width="​550" height="​400" frameBorder="​0"></​iframe
 +  </center>
 </​html>​ </​html>​
  
-  *[[https://​docs.google.com/​present/​view?​id=dgbccfz4_815d98458d5 | Curs 12 - Vizualizare]] +===== Demo-uri =====
-  *[[https://​docs.google.com/​present/​edit?​id=0AXh5Op_iFi3jZGdiY2NmejRfODE1ZDk4NDU4ZDU | Curs 12 Editare]]+
  
-  *Suport curs +Pentru parcurgerea demo-urilorfolosiț[[http://​elf.cs.pub.ro/​so/​res/​cursuri/curs-12-demo.zip|arhiva aferentă]].
-    *Operating System Concepts +
-      *Capitolul 14 -- Protection +
-      *Capitolul 15 -- Security +
-**** Secțiunile 15.115.2, 15.5 +
-    *Modern Operating Systems +
-      *Capitolul 9 -- Security +
-**** Secțiunile 9.4, 9.6 +
-  *[[:cursuri:curs-12:quiz Quiz curs 12]]+
  
 +  - Folosiți comanda ''​stat''​ pentru a afișa informații despre inode-ul corespunzător unui fișier, director, link simbolic, char device, block device:<​code bash>
 +stat /etc/passwd
 +stat /usr/lib/
 +stat /usr/bin/cc
 +stat /dev/null
 +stat /dev/loop0
 +</​code>​
 +    * Afișați informații despre un socket Unix, după ce îl căutați în ierarhia ''/​var/​run/'':<​code bash>
 +sudo find /var/run -type s
 +sudo stat /​var/​run/​udev/​control
 +</​code>​
 +    * Aflați dimensiunea fișierului ''/​sbin/​init''​ folosind ''​stat'':<​code bash>
 +stat -c %s /sbin/init
 +</​code>​
 +    * Urmăriți modificările timpilor de acces pe fișier (//access time//, //modify time//, ​ //change time//) folosind comenzile de mai jos:<​code bash>
 +cd /tmp
 +touch a.txt
 +stat a.txt
 +cat a.txt
 +stat a.txt
 +chmod a+rw a.txt
 +stat a.txt
 +echo "​abc"​ > stat.txt
 +stat a.txt
 +</​code>​
 +      * //access time// este timpul de acces al fișierului,​ deschis pentru citire.
 +      * //modify time// este timpul de modificare a datelor fișierului.
 +      * //change time// este timpul de modificare a metadatelor fișierului (informații din inode).
 +  - Creați un fișier simplu și urmăriți numărul de link-uri ale acestuia:<​code bash>
 +cd /tmp
 +touch first.txt
 +ls -i first.txt
 +ls -l first.txt
 +</​code>​
 +    * A doua coloana de la rularea ''​ls -l''​ este numărul de link-uri, inițial 1.
 +    * Creați un fișier ca hard link la primul:<​code bash>
 +ln first.txt second.txt
 +</​code>​
 +    * Observați că inode-ul este același iar numărul de link-uri este egal cu doi:<​code bash>
 +ls -i first.txt second.txt
 +ls -l first.txt second.txt
 +</​code>​
 +    * Creați un al treilea link și observați numărul de link-uri egal cu 3:<code bash>
 +ln second.txt third.txt
 +ls -i first.txt second.txt third.txt
 +ls -l first.txt second.txt third.txt
 +</​code>​
 +    * Ștergeți primele două link-uri/​nume și obsevați păstrarea inode-ului și reducerea numărului de link-uri la 1 pentru ultimul nume:<​code bash>
 +unlink first.txt
 +rm second.txt
 +ls -i third.txt
 +ls -l third.txt
 +</​code>​
 +      * ''​unlink''​ și ''​rm''​ pot fi folosite interschimbabil.
 +  - Urmăriți numărul de link-uri/​nume aferente unui director gol. Numărul este 2: un link este numele efectiv al directorului,​ iar altul este referința '​.'​ (punct, //dot//) către director însuși:<​code bash>
 +cd /tmp
 +mkdir /tmp/test-d
 +ls -ld /tmp/test-d
 +</​code>​
 +    * Creați un subdirector al directorului ''/​tmp/​test-d/''​. Numărul de link-uri va crește la 3, cu ajutorul referinței '​..'​ (punct punct, //dot dot//) de la subdirector:<​code bash>
 +mkdir /​tmp/​test-d/​test-subd
 +ls -ld /tmp/test-d
 +</​code>​
 +    * Creați un subfișier al directorul ''/​tmp/​test-d/''​. Numărul de link-uri nu se va modifica, întrucât fișierul nu are o referință la directorul părinte:<​code bash>
 +touch /​tmp/​test-d/​test-f
 +ls -ld /tmp/test-d
 +</​code>​
 +  - Creați un director simplu și vedeți ce spațiu ocupă pe disc, folosind comanda ''​stat'':<​code bash>
 +cd /tmp
 +mkdir /tmp/fill-d
 +stat -c %s /tmp/fill-d
 +</​code>​
 +    * Copiați scriptul ''​create-long-filenames''​ din arhivă și rulați-l în directorul proaspăt creat:<​code bash>
 +cd /tmp/fill-d
 +# TODO: copy script
 +./​create-long-filenames
 +</​code>​
 +    * Observați conținutul directorului și noua dimensiune a acestuia:<​code bash>
 +ls -l /tmp/fill-d
 +stat -c %s /tmp/fill-d
 +</​code>​
 +      * Dimensiunea directorului a crescut datorită numărului de intrări în director.
 +      * Dimensiunea directorului este multiplu de dimensiunea blocului sistemului.
 +  - Citirea intrărilor dintr-un director; simularea comenzii ''​ls''​
 +    * Intrați în directorul ''​5-dirent/''​.
 +    * Consultați fișierul ''​dirent.c''​.
 +    * Compilați fișierul folosind comanda ''​make''​.
 +    * Rulați executabilul obținut dându-i ca argument un director:<​code bash>
 +./dirent tmp
 +./dirent /usr
 +./dirent /var/run
 +./dirent /usr/lib
 +</​code>​
 +      * Observați afișarea intrărilor și a tipului acestora.
 +      * Structura ''​struct dirent''​ reține informațiile legate de o intrare dintr-un director.
 +    * Un director este, pe disc, un inode ale cărui bloc-uri conține un vector de intrări asemănătoare cu ''​struct dirent''​.
 +      * Intrările sunt citite de pe disc folosind apelul ''​readdir'',​ similar folosirii apelului ''​read''​ pentru fișiere.
 +      * La fel ca fișierele obișnuite (//regular files//) și directoarele folosesc intern un cursor de fișier care este actualizat după fiecare apel ''​readdir''​.
so/cursuri/curs-12.1359662221.txt.gz · Last modified: 2013/05/13 18:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0