LAB-4.doc

(54 KB) Pobierz
SYSTEMY OPERACYJNE

SYSTEMY OPERACYJNE - LABORATORIUM

 

TERMIN 4

 

CEL ZAJĘĆ

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.

 

 

INFO DLA STUDENTÓW

(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.

 

 

 

 

 

 

 

DO WYKONANIA  (punkty z gwiazdkami są opcjonalne)

 

 

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.

    1. Treść pliku
    2. uprawnienia

·         dowiązania twarde tylko SA tworzone do pliku.

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 :

    1. Można utworzyć dowiązanie do nieistniejącego pliku lub katalogu
    2. Można utworzyć za pomocą dowiązań pętlę w drzewie katalogów

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:

    1. Pracując na końcówce tty01 zapisz plik do potoku (np. poleceniem cat lub cp)
    2. Zaloguj się na innej końcówce i odczytaj plik z potoku (np. poleceniem cat lub more)
    3. Opisz zachowanie się powłoki na końcówce tty01 podczas zapisu i po odczycie zawartości potoku.

 

 

 

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.

 

 

Zgłoś jeśli naruszono regulamin