Poznanie:
- Sposobu identyfikacji systemów plików w środowisku SO
- Sposobu tworzenia dowiązań twardych i symbolicznych
- Sposobu tworzenia potoków (łączy) z nazwą
- Zrozumienie w/w zagadnień poprzez ich użycie.
(dzisiaj krótsze )
I. Systemy plików
Każdy system operacyjny unix pracuje zazwyczaj z kilkoma systemami plików, przy czym tylko jeden z nich jest systemem głównym (root) zamontowanym do katalogu głównego ( / )
Pozostałe dołączone są (zamontowane) do wybranych katalogów systemu głównego.
Identyfikacja wszystkich systemów plików wraz z ich punktami (katalogami) montowania możliwa jest poprzez użycie polecenia mount (bez argumentów)
Inne informacje o systemach plików udostępnia polecenie df (patrz man df)
Należy pamiętać, że główny katalog każdego systemu plików opisany jest i-węzłem 2 i po zamontowaniu przybiera nazwą katalogu – punktu montowania.
II. Dowiązania
Dowiązanie twarde (hard link) jest to dowiązanie wskazujące na konkretny i-węzeł w systemie plików, przez co dowiązania twarde można tworzyć jedynie w obrębie tego samego systemu plików. Dla systemu dowiązanie jest dodatkową nazwą dla wskazywanego obiektu - plik z n dowiązaniami ma po prostu n nazw. Aby taki plik został skasowany z systemu muszą zostać usunięte wszystkie twarde dowiązania do niego, stąd funkcja systemowa do kasowania plików w języku C nazywa się unlink - kasowany nie jest plik, a jedynie jego nazwa oraz zmniejszany jest wskaźnik dowiązań, jeśli spadnie on do zera, to system automatycznie kasuje plik (zwalnia i-węzeł). Domyślnie każdy folder w Uniksowych systemach plików posiada zaraz po utworzeniu dwa dowiązania twarde - swoją nazwę (np. /home/c/przyklad) oraz wewnątrz dowiązanie ".". Dodatkowo, jeśli folder posiada podfoldery, to w każdym z nich znajduje się dowiązanie ".." wskazujące na niego jako folder nadrzędny. Ze względu na możliwość tworzenia nieskończonych rekurencji powodowanych dowiązaniami twardymi tylko użytkownik root może takie tworzyć. Stworzenie pętli między folderami może całkowicie zniszczyć system plików, na którym się one znajdują.
W systemach Unix do stworzenia dowiązania twardego służy polecenie ln:
$ ln plik_istniejący dowiązanie_twarde
Numer i-węzła oraz ilość dowiązań można sprawdzić wydając polecenie:
$ ls -li dowiązanie_twarde
360023 -rw-r----- 2 linio linio 143 2002-12-08 20:21 dowiązanie_twarde
Pierwsza od lewej liczba to numer i-węzła, trzecia to liczba dowiązań twardych.
Dowiązanie symboliczne ( symbolic link) jest to specjalny plik w uniksowych systemach plików wskazujący na inny plik lub katalog (który może nawet nie istnieć). Jest to związane z tym, że dowiązanie symboliczne zawiera tylko nazwę obiektu na który wskazuje.Dowiązanie symboliczne powstało w celu oszczędzania miejsca - zawartość dowiązania symbolicznego to ścieżka dostępu do wskazywanego obiektu.
Dowiązanie symboliczne może być realizowane pomiędzy obiektami różnych systemów plików w tym samym systemie operacyjnym.
W systemie plików efs2 gdy dowiązanie ma długość mniejszą niż 60B jest przechowywane w obszarze i-węzła zamiast wskaźników do bloków danych. Dla wszystkich "normalnych" aplikacji dowiązanie symboliczne udaje plik, na który wskazuje (tylko polecenia takie jak ls, mv, rm itp. wiedzą, że jest to link).W systemach unix do stworzenia dowiązania symbolicznego służy polecenie ln z opcją -s:
$ ln -s plik_istniejący link_symboliczny
III. Przetwarzanie potokowe – potoki z nazwą
Standardowe wyjście jednego procesu możne być połączone ze standardowym wejściowym
innego procesu, tworząc tzw. potok pomiędzy tymi procesami.
Przetwarzanie potokowe polega na buforowaniu przez system danych produkowanych
przez pierwszy proces i następnie odczytywaniu tych danych przez drugi proces.
Poprzednio prezentowane były potoki bez nazwy pozwalające kojarzyć procesy należące do tego samego użytkownika.
Drugi rodzaj potoków występujących w systemie UNIX stanowią potoki z nazwą (określane
także mianem potoków FIFO). Różnią się one od potoków nienazwanych głównie
tym, że towarzyszaą im wpisy w wykazach plików w odpowiednich katalogach.
Zatem w programach mogą być traktowane jak zwyk łe pliki. Dzięki temu potoki FIFO mogą łączyć niezależne procesy, a nie tylko pokrewne jak w przypadku potoków nienazwanych. Dodatkowo potoki FIFO można tworzyć nie tylko z poziomu programu, ale również z poziomu pow łoki (z linii poleceń). Dzięki temu potoków FIFO mozża latwo używać w programach pisanych nie tylko w językach C/C++, ale w dowolnych językach, które posiadają operacje czytania/pisania w plikach.
Do tworzenia potoków FIFO z linii komend służy polecenie mknod lub mkfifo
Sk ładnia tego polecenia jest następująca:
mknod nazwa p
lub
mkfifo –m uprawnienia nazwa (uprawnienia np. 644)
gdzie nazwa jest nazwą pliku specjalnego FIFO, który będzie używany jako potok
FIFO
Plik specjalny FIFO w wykazie zawartości katalogu (komenda ls -l) jest oznaczony literą p
(od pipe) w pierwszej kolumnie atrybutów pliku.
1. Zidentyfikuj wszystkie systemy plików w swoim systemie operacyjnym.
· df -T
2. Do jakich katalogów są zamontowane?
3. Utworzyć dowiązanie twarde do wybranego pliku we własnym katalogu
· dowiązania twarde tylko SA tworzone do pliku.
4. Zmodyfikować ten plik i sprawdzić wpływ tej operacji na dowiązanie.
5. Jaki numer i-węzła ma plik a jaki dowiązanie?
· ls –li p1.txt ls –li p1
6. Zmienić nazwę pliku (polecenie mv) tak aby nowa nazwa zlokalizowana była w innym systemie plików – jaki jest numer i-węzła po tej operacji?
7. Wykonać próbę realizacji dowiązania do pliku z innego systemu plików.
8. Prześledzić jak zmienia sie liczba dowiazan (twardych) katalogu jesli tworzymy w nim podkatalog. Napisz w sprawozdaniu jak zależy liczba dowiazan katalogu od liczby zawartych w nim podkatalogów.
9. Ile nazw i jakie posiada edytor vi ?
10. Utworzyć dowiązanie symboliczne do pliku, sprawdzić numer i-węzła i rozmiar dowiązania. Podać w sprawozdaniu efekt sprawdzenia.
11. Czy modyfikacja uprawnień w dostępie do pliku ma wpływ na uprawnienia dowiązania symbolicznego?
12. Czy uprawnienia dowiązania symbolicznego mają znaczenie przy dostępie do pliku?
13. Utworzyć dowiązanie symboliczne wskazujące na podkatalog w swoim prywatnym katalogu (najlepiej leżący dość głęboko w poddrzewie katalogów). Sprawdzić efekt komendy cd na tak utworzone dowiązanie. Do jakiego katalogu wrócimy po komendzie cd ..? Przeprowadzić kilka eksperymentów w celu sprawdzenia, czy :
14. Sprawdź czy dowiązanie symboliczne może wskazywać na inne dowiązanie symboliczne.
15. Utwórz potok z nazwą w swoim katalogu.
16. Prześlij z wykorzystaniem potoku dowolny plik wg schematu:
17. Utwórz plik tekstowy zawierający sprawozdanie z wykonanych czynności. Plik powinien zawierać informacje w jaki sposób i jakim rezultatem wykonano poszczególne punkty
18. Prześlij plik do Moodle zgodnie ze wskazówkami prowadzącego klikając na odpowiedni link na stronie Moodle.
Uwaga.
Sprawozdanie należy przesłać przed zakończeniem zajęć. Potem będzie to niemożliwe.
UWAGA.
Nadzorującym kurs Systemy Operacyjne jest dr inz. Zbigniew Sołtys
Wszelkie sugestie i uwagi co do zajęć proszę kierować do prowadzących lub do w/w.
piasek6