System plików I. Interfejs systemu plików. Pojęcie pliku i jego atrybuty, typy plików, operacje plikowe. Tablica otwartych plików. Struktura pliku. Metody dostępu do pliku. Struktura katalogowa. Montowanie systemu plików. Dzielenie plików. Ochrona. II. Implementacja systemu plików. Struktura systemu plików. Implementacja systemu plików. Metody przydziału miejsca na dysku. Zarządzanie wolną przestrzenią. Implementacja katalogu. Efektywność i wydajność. Rekonstrukcja. System plików ze strukturą dziennika. Wiesław Płaczek Systemy Operacyjne: Wykład 8 1
Pojęcie pliku Plik (file) jest logiczną jednostką magazynowania informacji w pamięci pomocniczej (dyski, taśmy, pamięci Flash itd.). Plik jest ciągiem bitów, bajtów, wierszy lub rekordów, których znaczenie określa twórca pliku i jego użytkownik. W pliku można przechowywać różnego rodzaju informacje: programy źródłowe, programy wynikowe, programy wykonywalne, dane liczbowe, teksty, listy płac, obrazy grafiki komputerowej, nagrania dźwiękowe itd. Za pomocą systemu operacyjnego pliki odwzorowywane są na fizycznych urządzeniach pamięci, które charakteryzują się nieulotnością (nonvolatile devices). System plików składa się z dwóch lub trzech części: Zbiór plików; Struktura katalogów (folderów) do organizowania i udostępniania informacji o wszystkich plikach w systemie; W niektórych systemach występują ponadto partycje (strefy) (partitions), służące do wyodrębniania (fizycznie lub logicznie) wielkich zbiorów katalogów. Wiesław Płaczek Systemy Operacyjne: Wykład 8 2
Atrybuty pliku Nazwa czytelna dla człowieka symboliczna nazwa pliku, za pomocą której można się do niego odwoływać; na ogół jest ciągiem znaków (niektóre systemy rozróżniają wielkie i małe litery, inne zaś nie). Identyfikator pole o niepowtarzalnej wartości, zwykle liczbowej; wyodrębnia plik w całym systemie (jest to nazwa pliku nieczytelna dla człowieka). Typ informacja potrzebna w systemach, w których rozróżnia się typy plików. Lokacja wskaźnik do urządzenia i położenia pliku na tym urządzeniu. Rozmiar atrybut zawierający bieżący rozmiar pliku (w bajtach, słowach lub blokach); może też określać maksymalny dopuszczalny rozmiar pliku. Ochrona informacje kontroli dostępu, służące do sprawdzania, kto może plik czytać, zapisywać, wykonywać itd. Czas, data i identyfikator użytkownika dane o czasie utworzenia pliku, ostatniej modyfikacji, ostatnim użyciu itp. Ø Informacje o wszystkich plikach są przechowywane w strukturze katalogowej, która również rezyduje w pamięci pomocniczej. Wiesław Płaczek Systemy Operacyjne: Wykład 8 3
Typy plików Typ pliku Rozszerzenie Funkcja Wykonywalny exe, com, bin, x lub brak rozszerzenia Gotowy do wykonania program w języku maszynowym Wynikowy obj, o Plik skompilowany, w języku maszynowym, nieskonsolidowany Kod źródłowy c, c++, cpp, cxx, java, pas, f, asm, a Kod źródłowy wyrażony w różnych językach Wsadowy bat, sh, csh Polecenie dla interpretera poleceń Tekstowy txt, doc Dane i dokumenty tekstowe Plik edytora tekstu doc, rtf, wp, tex Formaty plików edytorów tekstu Biblioteka lib, a, so, dll Biblioteki podprogramów Druk lub obraz dvi, ps, pdf, gif, jpg, png, tiff Plik binarny lub ASCII w formacie do drukowania lub oglądania Archiwalny arc, zip, tar Archiwum plików Multimedialny mpeg, mov, rm mp3, avi Plik binarny zawierający informację audio lub audio-wideo Wiesław Płaczek Systemy Operacyjne: Wykład 8 4
Operacje plikowe Tworzenie pliku (create) niezbędne dwa kroki: (1) znalezienie miejsca na plik oraz (2) utworzenie wpisu pliku w katalogu (nazwa pliku i informacja o jego położeniu w systemie plików). Zapisywanie pliku (write) wywołanie odpowiedniej funkcji systemowej i podanie jej nazwy pliku oraz informacji, która ma być zapisana; system musi przechowywać wskaźnik pisania określający miejsce w pliku, do którego będzie się odnosić kolejna operacja pisania (musi być uaktualniany podczas każdego pisania). Czytanie pliku (read) wywołanie funkcji systemowej, której podaje się nazwę pliku oraz miejsce (w pamięci operacyjnej), gdzie należy umieścić następny blok pliku; potrzebny jest wskaźnik czytania. Niektóre systemy utrzymują tylko jeden wskaźnik bieżącego położenia w pliku (current-file-position) używany zarówno do czytania, jak i pisania (oszczędność miejsca, uproszczenie systemu). Zmiana pozycji w pliku (repositioning) lub przemieszczenie w pliku (seek) nadanie określonej wartości wskaźnikowi bieżącego położenia w pliku. Usuwanie pliku (deleting) zwolnienie całej przestrzeni zajmowanej przez plik i likwidacja danego wpisu katalogowego. Skracanie pliku (truncating) ponowne ustalenie zerowej długości pliku przy niezmienionych pozostałych atrybutach. Ø Mogą też istnieć inne operacje, jak: dopisywanie (appending) na końcu pliku, przemianowywanie (renaming) istniejącego pliku itd. Wiesław Płaczek Systemy Operacyjne: Wykład 8 5
Tablica otwartych plików Większość operacji plikowych zawiera przeszukiwanie katalogu. Aby uniknąć ciągłego przeszukiwania, wiele systemów otwiera (open) plik przy pierwszym jego użyciu oraz przechowuje tablicę otwartych plików, zawierającą informację o wszystkich otwartych plikach; przy operacjach plikowych używa się indeksu tej tablicy (nie trzeba przeszukiwać). Kiedy plik przestaje być potrzebny, zostaje przez proces zamknięty (close), a system operacyjny usuwa jego wpis z tablicy otwartych plików. W systemach wielodostępnych (np. UNIX) istnieją na ogół dwa poziomy tablic: Procesowa tablica otwartych plików informacje o plikach otwartych w procesie. Ogólnosystemowa tablica otwartych plików informacje o wszystkich otwartych plikach w systemie: położenie pliku na dysku, daty dostępu, rozmiar pliku, licznik otwarć (open count) pokazujący w ilu procesach plik został otwarty. Ø Każdy wpis w tablicy procesowej wskazuje na tablicę ogólnosystemową. Niektóre systemy umożliwiają ponadto: Blokowanie (locking) części otwartego pliku umożliwia współużytkowanie fragmentów pliku przez kilka procesów (np. funkcje fcntl i lockf w systemie UNIX). Odwzorowywanie pliku w pamięci (memory mapping) logiczne przyporządkowanie części wirtualnej przestrzeni adresowej do pliku lub jego fragmentu (np. funkcja mmap w systemie UNIX). Wiesław Płaczek Systemy Operacyjne: Wykład 8 6
Elementy związane z otwartym plikiem Wskaźnik plikowy wskaźnik bieżącej pozycji w pliku (inny dla każdego procesu działającego na pliku); utrzymywany w systemach, w których funkcje czytania i pisania plikowego nie zawierają informacji o odległości w pliku. Licznik otwarć pliku służy do nadzorowania liczby otwarć i zamknięć pliku; staje się równy zeru po ostatnim zamknięciu pliku, wtedy system może usunąć jego wpis w tablicy otwartych plików. Położenie (lokacja) pliku na dysku informacje potrzebne do zlokalizowania pliku na dysku; przechowywane w pamięci operacyjnej w celu unikania konieczności wczytywania ich z dysku podczas każdej operacji plikowej. Prawa dostępu informacja o trybie dostępu, w którym proces otworzył plik; przechowywana w tablicy procesowej; w oparciu o nią system operacyjny może zezwalać na następne operacje wejścia-wyjścia na pliku lub ich odmawiać. Wiesław Płaczek Systemy Operacyjne: Wykład 8 7
Struktura pliku Minimalna struktura: plik jako ciąg bajtów lub słów (np. UNIX, MS-DOS); każdy program użytkowy musi posiadać własny kod interpretujący plik wejściowy jako odpowiednią strukturę. Każdy system operacyjny musi realizować przynajmniej jedną strukturę plik wykonywalny, po to by ładować do pamięci i wykonywać programy. Niektóre systemy realizują pewien zbiór struktur plików zaopatrzonych w zestawy specjalnych operacji do manipulowania takimi plikami (np. DEC VMS, Mac OS). Wewnętrzna struktura pliku: Blok (rekord fizyczny) jednostka fizycznej pamięci dyskowej; wszystkie bloki są tego samego rozmiaru. Rekord logiczny logiczna jednostka informacji; rekordy logiczne na ogół różnią się rozmiarem od rekordów fizycznych i mogą być różnej długości. Ø Często stosuje się upakowywanie (packing) pewnej liczby rekordów logicznych w fizycznych blokach, np. w systemie UNIX rekord logiczny ma długość 1B, a blok fizyczny zwykle 512B. Ø Przydział przestrzeni dyskowej w postaci bloków prowadzi do fragmentacji wewnętrznej im większe bloki tym większa fragmentacja. Wiesław Płaczek Systemy Operacyjne: Wykład 8 8
Metody dostępu Dostęp sekwencyjny (sequential access) informacje w pliku są przetwarzane sekwencyjnie, jeden rekord za drugim; najpowszechniejszy rodzaj dostępu (np. edytory, kompilatory). Początek Pozycja bieżąca Koniec Przewiń Czytaj lub pisz Dostęp bezpośredni (direct access) plik składa się z rekordów logicznych o stałej długości, które mogą być przetwarzane bez jakiegokolwiek porządku, tzn. bezpośrednio: Operacje czytania i pisania typu: czytaj n; pisz n; gdzie n jest numerem bloku zwykle tzw. numerem względnym bloku (relative block number), tzn. indeksem względem początku pliku. Przy pomocy dostępu bezpośredniego można łatwo symulować dostęp sekwencyjny; symulacja w drugą stronę jest bardzo nieefektywna. Dostęp indeksowy (indexed access) z plikiem związany jest indeks zawierający wskaźniki do bloków pliku; dla dużych plików wprowadza się podwójne indeksowanie, tzn. pierwotny indeks zawiera wskaźniki do wtórnego indeksu, a ten do danych. Wiesław Płaczek Systemy Operacyjne: Wykład 8 9
Struktura katalogowa Duże zasoby dyskowe często dzieli się na partycje (strefy) (partition), w niektórych systemach zwane minidyskami lub wolumenami (volumes). Jeden dysk może być podzielony na kilka partycji, ale też kilka dysków może tworzyć jedną partycję. Katalog urządzenia (device directory) zawiera informacje o plikach w danej partycji: nazwy, położenia, rozmiary, typy. Katalog można uważać za tablicę symboli tłumaczącą nazwy Ø plików na ich wpisy katalogowe. Operacje na katalogu: Odnajdywanie pliku znajdowanie plików według ich nazw. Tworzenie pliku tworzenie plików i dołączanie ich do katalogu. Usuwanie pliku usuwanie plików z katalogu. Wyprowadzanie katalogu sporządzanie wykazu plików w katalogu. Przemianowywanie pliku zmiana nazwy pliku lub jego miejsca w strukturze katalogowej. Obchód systemu plików uzyskiwanie dostępu do każdego pliku i katalogu w obrębie struktury katalogowej; regularne zapamiętywanie struktury i zawartości całego systemu plików (kopie zapasowe). Wiesław Płaczek Systemy Operacyjne: Wykład 8 10
Wiesław Płaczek Systemy Operacyjne: Wykład 8 11 Katalogi jedno- i dwupoziomowe Katalog jednopoziomowy jeden katalog dla wszystkich plików. Katalog kat dok a dane test poczta hex inne Pliki Katalog dwupoziomowy oddzielny katalog dla każdego użytkownika. Główny katalog plików Katalog plików użytkownika Użytkownik 1 Użytkownik 2 Użytkownik 3 Użytkownik 4 kat dok a test a dane a test x dane a Możliwe te same nazwy plików dla różnych użytkowników. Nazwa użytkownika i nazwa pliku definiuje nazwę ścieżki (path name). L Brak możliwości grupowania plików, użytkowników itd. Master file directory MFD User file directory UFD
Wiesław Płaczek Systemy Operacyjne: Wykład 8 12 Katalogi o strukturach drzewiastych Korzeń teksty binaria programy start poczta spec klucz rachunki wykazy zmiany p e poczta prog kopie druki eksport zmiany listy klucz wykazy rachunki listy wyniki teksty wszystko pierwszy ostatni
Własności katalogów drzewiastych Katalog zawiera zbiór plików lub podkatalogów. Jeden bit w każdym wpisie katalogowym określa, czy wpis dotyczy pliku (0), czy podkatalogu (1). Do tworzenia, usuwania, kopiowania, przenoszenia, zmiany katalogów służą specjalne funkcje systemowe. Podczas normalnej pracy każdy użytkownik ma do dyspozycji katalog bieżący (current directory). Nazwy ścieżek mogą być: Bezwzględne biegnie od korzenia aż do danego pliku (podkatalogu). Względne od bieżącego (lub domowego) katalogu do pliku (podkatalogu). Użytkownik ma możliwość tworzenia własnych podkatalogów, a tym samym kształtowania struktury własnych plików. Niektóre systemy pozwalają usuwać tylko puste katalogi (np. MS- DOS), a inne również katalogi z zawartością (np. UNIX: rm -r). Użytkownicy mogą mieć dostęp do plików innych użytkowników. Niektóre systemy pozwalają użytkownikom definiować własne ścieżki przeszukiwań (np. UNIX: zmienna PATH). Wiesław Płaczek Systemy Operacyjne: Wykład 8 13
Wiesław Płaczek Systemy Operacyjne: Wykład 8 14 Acykliczne grafy katalogów Korzeń słownik wymowa listy wszystko w licznik licznik wyrazy listy listy inne w7 Graf acykliczny (acyclic graph) umożliwia dzielenie plików i katalogów. Do dzielonych plików czy katalogów mogą odnosić się z różnych miejsc różne nazwy (aliasy). Powszechną metodą implementacji dzielenia plików/katalogów są tzw. dowiązania (links), np. dowiązania symboliczne (symbolic links) w systemie UNIX. ü Problem: Jak pogodzić istnienie dowiązań z usuwaniem plików? Ø UNIX: Dowiązania symboliczne pozostają po usunięciu pliku, ale nie mają żadnego efektu; użytkownik musi sam je usuwać. Ø Można wprowadzić licznik dowiązań do pliku plik zostaje usunięty, gdy licznik dowiązań wyniesie zero, np. twarde dowiązania (hard links) w systemie UNIX.
Korzeń rachunki ala ala książka rachunki Graf ogólny katalogów tc poczta jan pisma książka poczta inne inne wykazy dane Dodanie dowiązań do struktury drzewiastej katalogu przekształca ją w ogólną strukturę grafu. W strukturze mogą pojawiać się cykle niebezpieczeństwo nieskończonych pętli przeszukiwania katalogów! Potrzebne staje się odśmiecanie (garbage collection), tzn. usuwanie cykli oderwanych od reszty struktury katalogów kosztowny proces! Można użyć algorytmu wykrywania cykli w grafach i nie pozwalać na tworzenie dowiązań prowadzących do takich cykli wymaga to jednak sporych nakładów obliczeniowych! Ø Prostsze rozwiązanie: pomijanie dowiązań podczas obchodu katalogów. Wiesław Płaczek Systemy Operacyjne: Wykład 8 15
Montowanie systemu plików Zanim system plików stanie się dostępny dla procesów musi zostać zamontowany (mounted). Procedura montażu: Systemowi operacyjnemu podaje się nazwę urządzenia oraz punkt montażu (mount point), tzn. miejsce w strukturze plików, do którego należy przyłączyć system plików; na ogół jest to pusty katalog. System operacyjny sprawdza, czy urządzenie zawiera właściwy system plików (tzn. przy pomocy modułu obsługi urządzenia czyta katalog i sprawdza jego format). Na koniec system operacyjny zaznacza w swojej strukturze katalogowej zamontowanie systemu plików w określonym punkcie montażu. q Przykłady: Komputery Macintosh system operacyjny automatycznie poszukuje systemu plików na dołączonym urządzeniu i w przypadku znalezienia takowego wykonuje automatyczne montowanie, umieszczając na ekranie odpowiednią ikonę. MS Windows 95/98/NT/XP/VISTA/7/8 rozszerzona dwupoziomowa struktura katalogów: urządzenia i partycje mają przydzielone oznaczenia literowe, tzw. literę napędu (drive letter) ścieżka: litera-napędu:\ścieżka\do\pliku; podczas rozruchu automatycznie wykrywane są wszystkie urządzenia i montowane są zlokalizowane na nich systemy plików (również przy podłączaniu urządzeń podczas działania SO). System UNIX polecenia montowania są jawne; plik konfiguracji systemu (fstab) zawiera wykaz urządzeń i punktów montażu do automatycznego montowania przy rozruchu, ale można też wykonywać ręcznie inne montowania. Wiesław Płaczek Systemy Operacyjne: Wykład 8 16
Dzielenie plików ü W systemach umożliwiających użytkownikom wspólne korzystanie z plików konieczne jest kontrolowanie dostępu i ochrona system operacyjny musi pośredniczyć w dzieleniu plików. W większości systemów przyjęto koncepcję właściciela (użytkownika) i grupy pliku lub katalogu. Właścicielem jest użytkownik, który może zmienić atrybuty, zezwalać na dostęp i ma największą kontrolę nad plikiem lub katalogiem. Grupowy atrybut pliku służy do definiowania podzbioru użytkowników, którzy mogą dzielić dostęp do pliku. Atrybuty właściciela realizowane są przez zarządzanie wykazem nazw użytkowników i przynależnych im identyfikatorów użytkowników (user identifiers, UIDs) są one niepowtarzalne dla każdego użytkownika. Atrybuty grupowe realizuje się przy pomocy identyfikatorów grup (group identifiers, GIDs); użytkownik może należeć do jednej lub więcej grup. Identyfikatory użytkownika i jego grup są dołączane do wszystkich wątków i procesów użytkownika kiedy proces lub wątek zamawia operację na pliku, wtedy system operacyjny porównuje odpowiednie identyfikatory i związane z nimi prawa dostępu do pliku, zezwalając na daną operację lub nie. Ø Wraz z rozwojem sieci komputerowych problem dzielenia plików stał się bardziej złożony! (Zagadnienia te będą omawiane na kursie dt. sieci komputerowych.) Wiesław Płaczek Systemy Operacyjne: Wykład 8 17
Semantyka spójności ü Semantyka spójności (consistency semantics) właściwość systemu określająca semantykę jednoczesnego dostępu do pliku dzielonego przez wielu użytkowników. Semantyka spójności systemu UNIX: Wynik operacji pisania wykonanej przez jednego użytkownika na otwartym pliku jest natychmiast widoczny przez innych użytkowników, którzy mają otwarty ten plik. Istnieje tryb dzielenia, w którym użytkownicy wspólnie korzystają ze wskaźnika bieżącego położenia w pliku przesuwanie wskaźnika przez dowolnego użytkownika jest odbierane przez pozostałych użytkowników. Ø Dostęp do pliku dzielonego odbywa się na zasadzie wyłączności. Semantyka sesji (np. rozproszony system plików Andrew, tzw. AFS): Wynik operacji pisania wykonanej przez dowolnego użytkownika na otwartym pliku nie jest natychmiast widoczny dla innych użytkowników, którzy mają otwarty równocześnie ten plik. Zmiany wprowadzone do pliku będą widoczne po jego zamknięciu dopiero w następnych sesjach. Semantyka stałych plików dzielonych (immutable shared files): Z chwilą gdy twórca pliku zadeklaruje go jako dzielony, nie wolno go modyfikować (dopuszcza się tylko czytanie) stosowana w systemach rozproszonych. Wiesław Płaczek Systemy Operacyjne: Wykład 8 18
Ochrona ü Ochrona (protection) systemu plików przed niewłaściwym dostępem jest jednym z podstawowych zagadnień związanych z przechowywaniem informacji w systemie komputerowym. Kontroli mogą podlegać następujące operacje: Czytanie czytanie z pliku. Pisanie pisanie do pliku lub zapisywanie go na nowo. Wykonywanie załadowanie pliku do pamięci i wykonanie go. Dopisywanie zapisywanie danych na końcu pliku. Usuwanie usuwanie pliku i zwalnianie jego obszaru dyskowego. Wyświetlanie wyświetlanie nazwy i atrybutów pliku. Ø Ochronę innych operacji (wyższego poziomu, np. kopiowanie, zmiana nazwy) można zaimplementować za pośrednictwem powyższych operacji. Kontrolowanie dostępu: Najogólniejsza metoda skojarzenie z każdym plikiem i katalogiem listy kontroli dostępów (ACL) zawierającego nazwy użytkowników i dozwolone dla nich rodzaje dostępu. L Wysokie koszty utrzymywania i uaktualniania. Efektywniejsza metoda skojarzenie z każdym plikiem trzech klas użytkowników: właściciel, grupa, wszechświat i przypisywanie praw dostępu (np. czytania, pisania, wykonywania) do każdej z klas (np. system UNIX). Wiesław Płaczek Systemy Operacyjne: Wykład 8 19
Struktura systemu plików Dyski (disks) stanowią podstawową część pamięci pomocniczej, w której utrzymywany jest system plików (file system). System plików ma na ogół strukturę warstwową każda warstwa korzysta z własności niższych warstw do tworzenia nowych właściwości, używanych przez warstwy wyższe. Warstwa najniższa: sterowanie wejściem-wyjściem (I/O control) moduły obsługi urządzeń i procedury obsługi przerwań związane z przesyłaniem informacji między pamięcią operacyjną a systemem dyskowym. Podstawowy system plików (basic file system) wydaje ogólne instrukcje odpowiedniemu modułowi obsługi urządzenia w celu czytania i pisania poszczególnych bloków na dysku (każdy blok ma swój adres liczbowy), zarządza buforami pamięci i pamięcią podręczną systemu plików. Moduł organizacji pliku (file-organization module) w oparciu o zastosowany rodzaj przydziału miejsca oraz położenia pliku tłumaczy adresy logiczne na adresy fizyczne bloków używane przez podstawowy system plików; zawiera również zarządcę wolnych obszarów. Logiczny system plików (logical file system) zarządza metadanymi systemu plików; używa struktury katalogowej, aby w oparciu o symboliczną nazwę pliku dostarczać informacji potrzebnych modułowi organizacji pliku; odpowiada także za ochronę i bezpieczeństwo. Wiesław Płaczek Systemy Operacyjne: Wykład 8 20
Warstwowy system plików Programy użytkowe Logiczny system plików Moduł organizacji pliku Podstawowy system plików Sterowanie wejściem-wyjściem Urządzenia Aby utworzyć nowy plik, program użytkowy wywołuje logiczny system plików. Logiczny system plików czyta do pamięci odpowiedni katalog, uaktualnia go dodając nowy wpis i zapisuje ponownie na dysku (niektóre systemy, np. UNIX, traktują katalogi tak samo jak pliki, a np. Windows XP/Vista/ 7/8 jako odrębne jednostki). Aby udostępnić plik operacjom WE/WY należy go otworzyć. Informacje o otwartych plikach są przechowywane w tablicy otwartych plików, rezydującej w pamięci operacyjnej. Do programu użytkownika przekazuje się indeks tej tablicy, zwany deskryptorem pliku (UNIX) lub uchwytem plikowym (file handle) (MS Windows). Wszystkie dalsze odwołania do pliku odbywają się za pomocą tego indeksu, a nie nazwy symbolicznej. Po zamknięciu pliku przez wszystkich korzystających z niego użytkowników uaktualnione informacje o nim są z powrotem kopiowane do dyskowej struktury katalogowej. Wiesław Płaczek Systemy Operacyjne: Wykład 8 21
Implementacja systemu plików ü Do realizacji systemu plików używanych jest kilka struktur, które przechowywane są w pamięci dyskowej i operacyjnej. Struktury utrzymywane na dysku: Blok sterujący rozruchem (boot control block) zawiera informacje potrzebne do rozruchu systemu operacyjnego z danej partycji. Blok sterujący partycji (partition control block) zawiera szczegóły dotyczące partycji: liczba i rozmiar bloków, wskaźniki do bloków FCB itd. (UFS systemu UNIX: superblok, Windows NTFS: master file table MFT). Struktura katalogowa używana do organizowania plików (NTFS: w MFT). Blok kontrolny pliku (file control block: FCB) zawiera szczegóły dotyczące pliku; w UFS zwany jest i-węzłem (inode), a w NTFS przechowywany w tablicy MFT. Struktury przechowywane w pamięci operacyjnej (podręcznej): Tablica partycji zawiera informacje o zamontowanych partycjach. Struktura katalogowa zawiera informacje odnoszące się do ostatnio odwiedzanych katalogów. Ogólnosystemowa tablica otwartych plików zawiera kopię bloku FCB każdego otwartego pliku i inne informacje. Procesowa tablica otwartych plików zawiera wskaźnik do odpowiedniego wpisu w ogólnosystemowej tablicy otwartych plików i inne informacje. Bufory do przechowywania bloków systemu plików podczas ich czytania z dysku lub zapisu na dysk. Wiesław Płaczek Systemy Operacyjne: Wykład 8 22
Wirtualny system plików (Virtual File System) Interfejs systemu plików (open, read, write, close) Interfejs wirtualnego systemu systemu plików (VFS) Lokalny system Lokalny system Zdalny system plików typu 1 plików typu 2 plików typu 1 Dysk Dysk Sieć Interfejs wirtualnego systemu plików (VFS) oddziela ogólne operacje plikowe od ich implementacji (może współistnieć kilka implementacji interfejsu VFS). VFS opiera się na strukturze reprezentacji pliku zwanej v-węzłem (vnode), zawierającej liczbowy oznacznik pliku, jednoznaczny w całej sieci. Wiesław Płaczek Systemy Operacyjne: Wykład 8 23
Metody przydziału miejsca na dysku v Podstawowa kwestia: Dysk powinien być zagospodarowany efektywnie, a dostęp do plików powinien być szybki. Ø Główne metody przydziału: ciągła, listowa i indeksowa. Przydział ciągły (contiguous allocation) Każdy plik musi zajmować ciąg kolejnych bloków na dysku. Wpis katalogowy pliku zawiera adres bloku początkowego i długość obszaru przydzielonego danemu plikowi. J Dostęp do pliku jest łatwy; możliwy dostęp sekwencyjny jak i bezpośredni (adres bloku i w pliku o bloku początkowym b: b + i). J Minimalny ruch głowicy dysku w obrębie danego pliku. L Problem przydziału miejsca dla nowego pliku dynamiczny przydział pamięci (jak dla pamięci operacyjnej): najpowszechniej stosowane strategie pierwszego lub najlepszego dopasowania. L Występuje fragmentacja zewnętrzna. L Plik nie może rosnąć albo trzeba z góry określić jego maksymalny rozmiar (na ogół trudne!) fragmentacja wewnętrzna. Wiesław Płaczek Systemy Operacyjne: Wykład 8 24
Wiesław Płaczek Systemy Operacyjne: Wykład 8 25 Ciągły przydział miejsca na dysku licznik 0 1 2 3 f 4 5 6 7 8 9 10 11 tr 12 13 14 15 16 17 18 19 poczta 20 21 22 23 Plik Katalog Początek Długość licznik 0 2 tr 14 3 poczta 19 6 lista 28 4 f 6 2 24 25 26 27 lista 28 29 30 31
Przydział listowy W przydziale listowym (linked allocation) każdy plik jest listą powiązanych ze sobą bloków dyskowych; bloki te mogą znajdować się gdziekolwiek na dysku. Katalog zawiera wskaźnik do pierwszego i ostatniego bloku pliku. Każdy blok zawiera wskaźnik do następnego bloku. J Łatwy i efektywny dostęp sekwencyjny do pliku (np. przy pisaniu znajduje się kolejne wolne bloki i tworzy odpowiednie dowiązania). J Brak fragmentacji zewnętrznej nie ma potrzeby upakowywania. J Plik może rosnąć dopóki są wolne bloki nie trzeba deklarować rozmiaru pliku. L Realizacja dostępu bezpośredniego jest niewydajna (dostęp do bloku i wymaga przeszukiwania listy od początku pliku). L Wskaźniki pochłaniają część przestrzeni dyskowej: Ø W celu zaoszczędzenia miejsca czasami bloki łączy się po kilka w tzw. klastry i przydziela się klastry zwiększa to jednak fragmentację wewnętrzną. L Gorsza niezawodność zagubienie lub uszkodzenie wskaźnika w którymś bloku może spowodować utratę fragmentu pliku. Wiesław Płaczek Systemy Operacyjne: Wykład 8 26
Wiesław Płaczek Systemy Operacyjne: Wykład 8 27 Listowy przydział miejsca na dysku 0 1 10 2 3 4 5 6 7 8 9 16 10 25 11 Katalog Plik Początek Koniec test.c 9 25 12 13 14 15 16 1 17 18 19 20 21 22 23 24 25 1 26 27 28 29 30 31
Tablica przydziału plików Odmianą przydziału listowego jest tablica przydziału (alokacji) plików (file allocation table FAT), np. w systemach MS-DOS i OS/2. Początkowa część każdej partycji dysku jest zarezerwowana na tablicę FAT. Tablica FAT ma po jednej pozycji na każdy blok dyskowy, jest indeksowana numerami bloków i zawiera numer następnego bloku pliku; wolne bloki oznaczone są zerami. Wpis katalogowy zawiera numer pierwszego bloku pliku (indeks tablicy FAT). L Może powodować znaczny ruch głowic dyskowych (między FAT a blokami). Wpis katalogowy test.c... 217 Nazwa Blok początkowy 0 217 618 339 Koniec pliku 618 339 Numery bloków dyskowych 1 Tablica FAT Wiesław Płaczek Systemy Operacyjne: Wykład 8 28
Przydział indeksowy W przydziale indeksowym (indexed allocation) każdy plik ma własny blok indeksowy, będący tablicą adresów bloków dyskowych. Pozycja o numerze i w bloku indeksowym wskazuje na blok i pliku. Katalog zawiera adres bloku indeksowego. J Umożliwia dostęp bezpośredni (bez fragmentacji zewnętrznej). L Marnowanie przestrzeni dyskowej na bloki indeksowe, szczególnie dla małych plików (potrzebny dodatkowy blok dyskowy na indeks). Ogólna struktura bloków indeksowych (dla dużych plików): Schemat listowy: Bloki dyskowe zawierające indeksy połączone w listę, tzn. ostatnia pozycja bloku zawiera wskaźnik do kolejnego bloku z indeksami itd. Indeks wielopoziomowy: Blok indeksowy pierwszego poziomu zawiera wskaźniki do zbioru bloków indeksowych drugiego poziomu itd., a dopiero zbiór bloków ostatniego poziomu zawiera wskaźniki do bloków plików. Schemat kombinowany np. UNIX BSD: 15 pierwszych wskaźników bloku indeksowego przechowywane w i-węźle (inode) pliku, z czego pierwszych 12 wskazuje na bloki bezpośrednie (tzn. bloki z danymi pliku), 13-ty jest adresem bloku jednopośredniego zawierającego adresy bloków z danymi, 14-ty bloku dwupośredniego, a 15-ty bloku trójpośredniego. Wiesław Płaczek Systemy Operacyjne: Wykład 8 29
Wiesław Płaczek Systemy Operacyjne: Wykład 8 30 Indeksowy przydział miejsca na dysku 0 1 2 3 4 5 6 7 Katalog Plik Blok indeksowy test.c 19 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 19 9 16 1 10 25 1 1
Zarządzanie wolną przestrzenią ü Obszar dysku jest ograniczony, zatem należy dbać o zagospodarowywanie dla nowych plików przestrzeni po plikach usuniętych. Ø System utrzymuje listę wolnych obszarów (free-space list), na której odnotowane są wszystkie wolne bloki dyskowe. Wektor bitowy (bit vector): Każdy blok jest reprezentowany przez 1 bit: blok wolny bit ma wartość 1, blok zajęty bit ma wartość 0. J Umożliwia proste i wydajne odnajdywanie wolnych bloków na dysku; często wspierane sprzętowo, np. procesory Intel od 80386 i Motorola od 68020 dysponują rozkazami przekazującymi pozycję pierwszego bitu o wartości 1. L Mało wydajne dla dużych dysków, kiedy nie można przechowywać całego wektora bitowego w pamięci operacyjnej (czasem bloki łączy się w klastry). Lista powiązana: Powiązanie ze sobą wszystkich wolnych bloków (jak w przydziale listowym miejsca na dysku dla pliku) i przechowywanie wskaźnika do pierwszego wolnego bloku w specjalnym miejscu na dysku oraz podręcznie w pamięci operacyjnej. L Mało wydajna aby przejść przez listę trzeba odczytać każdy blok. Grupowanie: Powiązana lista bloków pierwszy zawiera n adresów bloków, z których n 1 bloków to bloki wolne, a n-ty blok zawiera n kolejnych adresów bloków w tym samym schemacie. Zliczanie: Dla przylegających n wolnych bloków przechowuje się adres pierwszego wolnego bloku i liczbę n wolnych bloków następujących po sobie. Wiesław Płaczek Systemy Operacyjne: Wykład 8 31
Implementacja katalogu ü Wybór algorytmów przydzielania miejsca dla katalogu i zarządzania katalogiem ma istotny wpływ na wydajność, działanie i niezawodność systemu plików. Lista liniowa: Liniowa lista nazw plików ze wskaźnikami do bloków danych. W celu znalezienia konkretnej pozycji na liście wpisów katalogowych stosuje się przeszukiwanie liniowe. J Metoda łatwa do zaprogramowania. L Liniowe przeszukiwanie jest zbyt wolne! Ø Zwykle stosuje się pamięć podręczną do przechowywania ostatnio używanych katalogów; czasem stosuje się listę uporządkowaną i przeszukiwanie binarne lub struktury drzewiaste, np. B-drzewa. Tablica z haszowaniem (hash table): Wpisy katalogowe przechowuje się na liście liniowej, ale stosuje się dodatkowo haszowaną strukturę danych zawierającą wskaźniki do wpisów. Wartość obliczona na podstawie nazwy pliku jest odnoszona do tablicy haszowanej, z której pobiera się wskaźnik do nazwy pliku na liście liniowej. J Mniejszy czas przeszukiwania katalogu, proste wstawianie i usuwanie wpisu. L Stały rozmiar tablicy z haszowaniem oraz problem sytuacji kolizyjnych. Wiesław Płaczek Systemy Operacyjne: Wykład 8 32
Efektywność i wydajność ü Dyski są najwolniejszymi spośród podstawowych elementów komputera, dlatego bywają główną przeszkodą jego sprawnego działania. Efektywność (efficiency) zależy od: Algorytmów przydziału miejsca na dysku i algorytmów obsługiwania katalogów, np. w systemie UNIX bloki danych umieszcza się blisko bloku z i-węzłem, a bloki łączy się w klastry, co zwiększa szybkość dostępu. Typów danych przechowywanych we wpisie katalogowym pliku im więcej informacji o pliku znajduje się w takim wpisie i im częściej wymaga ona aktualizacji (jak np. data ostatniego dostępu), tym wolniejszy system; przy większym rozmiarze wskaźników do danych zwiększa się maksymalna długość pliku (np. dla adresu 32 bitowego jest to 4 GB), ale potrzeba więcej przestrzeni dyskowej na przechowywanie wskaźników. Metody poprawiania wydajności (performance) systemu plików: Pamięć podręczna bloków dyskowych (disk cache) specjalne miejsce w pamięci operacyjnej do przechowywania często używanych bloków. Wczesne zwalnianie (free-behind) i czytanie z wyprzedzeniem (readahead) techniki do optymalizacji dostępu sekwencyjnego. Dyski wirtualne (RAM-dyski) część pamięci operacyjnej, na której wykonuje się operacje dyskowe (dziś rzadziej stosowane). Wiesław Płaczek Systemy Operacyjne: Wykład 8 33
Różne lokalizacje dyskowej pamięci podręcznej RAM-dysk Sterownik dysku Dysk Procesor Tablica otwartych plików Bufor bloków Pamięć operacyjna Bufor ścieżek dysku Dziś w roli pamięci podręcznej dla dysku magnetycznego może występować dysk SSD RAM-dysk jest w całości pod nadzorem użytkownika. Pamięć podręczna bloków dyskowych jest pod kontrolą systemu operacyjnego. Wiesław Płaczek Systemy Operacyjne: Wykład 8 34
Rekonstrukcja ü Ponieważ pliki i katalogi są przechowywane zarówno na dysku jak i w pamięci operacyjnej, należy zadbać o to by awaria systemu nie doprowadziła do utraty danych, czy ich niespójności. Sprawdzanie spójności: Informacje w dyskowej pamięci podręcznej są na ogół nowsze niż odpowiadające im informacje na dysku; dane na dysku zapisuje się zwykle z pewnym opóźnieniem. Awaria komputera może pozostawić system plików w stanie niespójnym bieżący stan niektórych plików będzie niezgodny z widniejącym w strukturze katalogowej. Program sprawdzania niespójności (consistency checker) porównuje dane w strukturze katalogowej z blokami na dysku i próbuje usunąć napotkane niezgodności. Wiesław Płaczek Systemy Operacyjne: Wykład 8 35
Rekonstrukcja c.d. Składowanie (backup) i odtwarzanie (restoring): Aby nie utracić danych na skutek awarii dysku magnetycznego, można stosować systemowe programy do składowania informacji na innych urządzeniach, jak zewnętrzne dyski magnetyczne (np. podłączane przez USB), taśmy magnetyczne lub dyski optyczne. Aby zminimalizować niezbędne kopiowanie, często tylko pierwszego dnia wykonuje się składowanie pełne (full backup), a w kolejnych dniach tzw. składowanie przyrostowe (incremental backup), tzn. kopiowanie tylko zmienionych plików. W celu zrekonstruowania utraconego pliku lub całego dysku można zastosować odtworzenie danych na podstawie danych zawartych w kopii zapasowej. Wiesław Płaczek Systemy Operacyjne: Wykład 8 36
Systemy plików ze strukturą dziennika ü Dyskowe struktury danych (struktury katalogowe, wskaźniki do wolnych bloków, wskaźniki do bloków FCB itp.) mogą utracić spójność wskutek załamania systemu (np. awaria). Rozwiązanie tego problemu polega na uaktualnianiu metadanych systemu plików za pomocą technik odtwarzania opartych na dzienniku transakcyjne systemy plików ze strukturą dziennika (log-based transaction-oriented file systems), zwane też systemami plików z kronikowaniem (journaling file systems). Wszystkie zmiany metadanych zapisuje się po kolei w dzienniku (bufor cykliczny) każdy zestaw operacji jest transakcją. Z chwilą zapisania zmian do dziennika uważa się je za zatwierdzone i może nastąpić powrót z wywołania systemowego do procesu użytkownika. W międzyczasie wpisy zarejestrowane w dzienniku są odtwarzane w rzeczywistych strukturach systemu. Po zakończeniu zmian uaktualniany jest wskaźnik pokazujący, które działania zostały zakończone, a które są jeszcze niekompletne. Po zakończeniu całej zatwierdzonej transakcji usuwa się ją z dziennika. q Przykłady: MS Windows system NTFS; Linux system ext3 (system ext2 rozszerzony o kronikowanie), ext4,veritas file system. Wiesław Płaczek Systemy Operacyjne: Wykład 8 37
Zagadnienia 1. Co to jest plik, do czego służy i gdzie jest przechowywany? Z jakich części składa się system plików? Jakie są podstawowe atrybuty pliku? Jakie mogą być typy plików? Omówić podstawowe operacje plikowe. 2. Do czego służy tablica otwartych plików, jak jest jest najczęściej realizowana w systemach wielodostępnych i jakie są jej główne elementy? 3. Scharakteryzować strukturę pliku oraz opisać metody dostępu do pliku. 4. Co to jest, do czego służy i jak realizowana jest struktura katalogowa? 5. Na czym polega montowanie systemu plików? Jak realizuje się dzielenie plików oraz związaną z tym semantykę spójności? Czego dotyczy i jak realizowana jest ochrona systemu plików? 6. Omówić warstwową budowę systemu plików. 7. Przedstawić implementację systemu plików opisując najważniejsze struktury utrzymywane na dysku oraz w pamięci operacyjnej. Na czym polega wirtualny system plików? 8. Przedstawić najważniejsze metody przydziału miejsca na dysku dla pliku podając ich zalety i wady. 9. Opisać metody implementacji katalogu. Jakie są sposoby zarządzania wolną przestrzenią dyskową? 10. Od czego zależy efektywność systemu plików i jak można poprawiać jego wydajność? Na czym polega rekonstrukcja systemu plików? Scharakteryzować systemy plików ze strukturą dziennika? Wiesław Płaczek Systemy Operacyjne: Wykład 8 38