This shows you the differences between two versions of the page.
so:cursuri:curs-02 [2014/03/10 21:42] victor.oprea Fix typo cu referire la executabil |
so:cursuri:curs-02 [2019/04/14 09:08] (current) dragos_florin.costea [Curs 02 - Interfața sistemului de fișiere] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Curs 02 - Sistemul de fișiere ====== | + | ====== Curs 02 - Interfața sistemului de fișiere ====== |
- | <html> | + | * [[http://prezi.com/5-5ua6acyxv9/so-curs-2/?kw=view-5-5ua6acyxv9&rc=ref-31844697 | Curs 02 - Interfața sistemului de fișiere (vizualizare Prezi)]] |
- | <iframe src="http://prezi.com/embed/5-5ua6acyxv9/?bgcolor=ffffff&lock_to_path=0&autoplay=no&autohide_ctrls=0&features=undefined&disabled_features=undefined" width="550" height="400" frameBorder="0"></iframe> | + | * [[http://elf.cs.pub.ro/so/res/cursuri/SO_Curs-02.pdf | Curs 02 - Interfața sistemului de fișiere (PDF)]] |
- | </html> | + | |
- | * [[http://prezi.com/5-5ua6acyxv9/so-curs-2/?kw=view-5-5ua6acyxv9&rc=ref-31844697 | Curs 02 - Sistemul de fișiere (vizualizare Prezi)]] | + | * [[https://docs.google.com/document/d/1kH3Sg8OcW8oMUqsuG1jaicUxUze05vN_2wHaJix3W28/edit?usp=sharing|Notițe de curs]] |
- | * [[http://elf.cs.pub.ro/so/res/cursuri/SO_Curs-02.pdf | Curs 02 - Sistemul de fișiere (PDF)]] | + | |
* Suport curs | * Suport curs | ||
Line 12: | Line 10: | ||
* Capitolul 9 - File-System Interface | * Capitolul 9 - File-System Interface | ||
* Capitolul 10, Secțiunea 10.1 - File-System Structure | * Capitolul 10, Secțiunea 10.1 - File-System Structure | ||
- | * Modern Operating Systems | ||
- | * Capitolul 6 - File System Implementation (secțiunile 1 și 2) | ||
* Linux System Programming | * Linux System Programming | ||
* Capitolul 2 (programatic) | * Capitolul 2 (programatic) | ||
Line 19: | Line 15: | ||
* Capitolul 2 (programatic) | * Capitolul 2 (programatic) | ||
+ | <html> | ||
+ | <center> | ||
+ | <iframe src="https://prezi.com/embed/5-5ua6acyxv9/?bgcolor=ffffff&lock_to_path=0&autoplay=no&autohide_ctrls=0&features=undefined&disabled_features=undefined" width="550" height="400" frameBorder="0"></iframe> | ||
+ | </center> | ||
+ | </html> | ||
===== Demo-uri ===== | ===== Demo-uri ===== | ||
Line 50: | Line 51: | ||
</spoiler> | </spoiler> | ||
+ | <note> | ||
+ | Pe anumite sisteme descriptorul este marcat cu ''0u'' adică este read-write; dar, în mod practic, este folosit doar pentru citire. | ||
+ | </note> | ||
==== Descriptori de fișier pentru procesele daemon ==== | ==== Descriptori de fișier pentru procesele daemon ==== | ||
Line 78: | Line 82: | ||
==== Descriptorii de fișier după redirectare ==== | ==== Descriptorii de fișier după redirectare ==== | ||
- | Vrem să vedem cum se modifică descriptorii de fișier în cazul redicterării. Pentru a putea vedea acest lucru vom rula o comandă de durată (''sleep'') și vom redirecta intrarea și ieșirea standard:<code bash> | + | Vrem să vedem cum se modifică descriptorii de fișier în cazul redirectării. Pentru a putea vedea acest lucru vom rula o comandă de durată (''sleep'') și vom redirecta intrarea și ieșirea standard:<code bash> |
sleep 100 < /etc/passwd > f.txt | sleep 100 < /etc/passwd > f.txt | ||
</code> | </code> | ||
- | Pentru a investiga procesul ''sleep'' proaspăt porni, trebuie să știm PID-ul său. Deschidem o altă consolă și aflăm PID-ul procesului ''sleep'' creat folosind comanda:<code bash> | + | Pentru a investiga procesul ''sleep'' proaspăt pornit, trebuie să știm PID-ul său. Deschidem o altă consolă și aflăm PID-ul procesului ''sleep'' creat folosind comanda:<code bash> |
pidof sleep | pidof sleep | ||
</code> | </code> | ||
Line 180: | Line 184: | ||
</code> | </code> | ||
- Rapid, într-o altă consolă, urmărim **apelurile de bibliotecă** realizate de programul ''buffered'' folosind comanda:<code bash> | - Rapid, într-o altă consolă, urmărim **apelurile de bibliotecă** realizate de programul ''buffered'' folosind comanda:<code bash> | ||
- | ltrace -e putchar+fputc -p $(pidof buffered) | + | ltrace -e putchar,fputc -p $(pidof buffered) |
</code> | </code> | ||
Line 187: | Line 191: | ||
./buffered | ./buffered | ||
</code> | </code> | ||
- | - Rapid, într-o altă consolă, urmărim **apelurile de bibliotecă** realizate de programul ''buffered'' folosind comanda:<code bash> | + | - Rapid, într-o altă consolă, urmărim **apelurile de sistem** realizate de programul ''buffered'' folosind comanda:<code bash> |
strace -e write -p $(pidof buffered) | strace -e write -p $(pidof buffered) | ||
</code> | </code> | ||
- | Care este numărul de apeluri de bibliotecă și numărul de apeluri de sistem realizate de programul ''buffered''? | + | Care este numărul de apeluri de bibliotecă și numărul de apeluri de sistem realizate de programul ''buffered'' în cadrul buclelor ''for''? |
<spoiler Răspuns> | <spoiler Răspuns> | ||
Line 240: | Line 244: | ||
[[http://www.ibm.com/developerworks/aix/library/au-lsof.html|Finding open files with lsof]] | [[http://www.ibm.com/developerworks/aix/library/au-lsof.html|Finding open files with lsof]] | ||
- |