Spis treści 1 Struktura pamięci masowej 1 1.1 Wprowadzenie.............................................. 1 1.2 Algorytmy dostępu do dysku....................................... 4 1.3 Zarządzanie dyskiem........................................... 5 1.4 Struktury RAID.............................................. 6 2 System plików 11 2.1 Pliki i struktury katalogowe........................................ 11 2.2 Partycje.................................................. 18 2.3 Montowanie systemu plików....................................... 18 2.4 Współdzielenie plików.......................................... 21 3 Implementacja systemu plików 21 3.1 Wprowadzenie Budowa i implementacja systemu plików....................... 21 3.2 Implementacja katalogu.......................................... 24 3.3 Przydział miejsca na dysku........................................ 25 3.4 Wydajność i bezpieczeństwo....................................... 29 1 Struktura pamięci masowej 1.1 Wprowadzenie Nośniki Papier karty perforowane taśma perforowana Nośniki magnetyczne taśmy dyskietki dyski twarde Nośniki optyczne płyty CD płyty DVD płyty BlueRay Pamięci półprzewodnikowe 1
Budowa dysku twardego Rysunek 1: Wn etrze dysku twardego Budowa dysku twardego Rysunek 2: Terminologia zwiazana z dyskiem twardym Talerz nos nik informacji w postaci kra z ka (wykonanego z materiału niemagnetycznego) na którym naniesiono warstw e magnetyczna. Do zapisu moga byc uz ywane jedna lub obie powierzchnie talerza. Kaz da powierzchnia talerza obsługiwana jest przez jedna głowic e. Głowica element odczytujacy i zapisujacy informacje na talerzu dysku twardego. Kaz dej powierzchni, na której moz e nast epowac zapis/odczyt odpowiada jedna głowica. Ilos c głowic jest toz sama z ilos cia wykorzystanych powierzchni talerzy i jest jednym z parametrów geometrii dysku twardego. S ciez ka okrag na powierzchni talerza wyznaczany przez ustawienie głowicy. W przypadku płyt CD/DVD/BlueRay mamy do czynienia z jedna, spiralna s ciez ka. W przeciwien stwie do płyt winylowych s ciez ka zaczyna si e przy s rodku, a kon czy przy kraw edzi kra z ka. Cylinder zbiór s ciez ek na wszystkich powierzchniach talerzy w danym ustawieniu głowic. Sektor wycinek s ciez ki, zawierajacy nagłówek, pole danych oraz sumy kontrolne. Sektory numeruje si e od 1 (nie ma sektora 0). Teoretycznie na s ciez ce mieszcza si e 63 sektory. 2
CHS Cylinders-Heads-Sectors sposób zapisu informacji o geometrii dysku liczba cylindrów, liczba głowic, liczba sektorów na ścieżce. Obecnie bardzo często ma nie wiele wspólnego z fizyczną organizacją zapisu na dysku twardym, w szczególności zapis taki używany jet także w odniesieniu do napędów SSD. Z zapisem geometrii dysków twardych wiążą się także ograniczenia związane z obsługą dużych dysków przez starsze komputery. Więcej szczegółów można znaleźć w Wikipedii (po angielsku odpowiednik artykułu w języku Polskim jest niestety bardzo ubogi). W praktyce geometria dysku prezentowana systemowi operacyjnemu nie musi być zgodna z fizycznym zapisem danych na nośniku. Zamiast ścieżek koncentrycznych o stałej ilości sektorów stosuje się podział na strefy (z większą ilością sektorów na zewnętrznej części talerza i mniejszą w strefie przyśrodkowej) tudzież ścieżki spiralne (analogicznie jak w przypadku płyt CD). Zadaniem kontrolera wbudowanego w dysk jest w takim przypadku konwersja pomiędzy geometrią klasyczną (używaną na styku dysku z resztą systemu komputerowego) a wewnętrznym formatem zapisu. Hierarchia pamięci Rysunek 3: Hierarchia pamięci Na schemacie nie są uwzględnione ani napędy SSD (Solid State Drive), ani macierze dyskowe, podobnie jak pamięci dołączane za pośrednictwem portu USB. Co oczywiste, wraz ze wzrostem szybkości rośnie cena pamięci. Czas dostępu do danych Czas dostępu do danych Czas od przyjęcia rozkazu przez urządzenie do momentu rozpoczęcia przesyłania danych. Czas wyszukiwania (seek time) W pamięciach dyskowych - czas potrzebny na przemieszczenie głowicy nad ścieżkę zawierającą dane do odczytania. W przypadku pamięci taśmowych odpowiada mu czas przewinięcia taśmy do żądanego sektora. Opóźnienie obrotowe Dodatkowe opóźnienie spowodowane oczekiwaniem, aż żądany sektor znajdzie się pod głowicą. 3
1.2 Algorytmy dostępu do dysku Obsługa w kolejności nadchodzenia żadań Pierwsze Przyszło - Pierwsze Obsłużone - FCFS Kolejne żądania obsługiwane są w kolejności napływania (FIFO) Najbardziej sprawiedliwy algorytm odporny na zagłodzenie. Nieoptymalny z punktu widzenia czasu dostępu. Zagłodzenie procesu Sytuacja, w której dany proces nie jest w stanie zakończyć działania, ponieważ nie ma dostępu do procesora lub innego współdzielonego zasobu. Najpierw najbliższy sektor SSTF Zadania oczekujące na wykonanie są szeregowane pod względem czasu wyszukiwania względem aktualnej pozycji głowicy Czas wyszukiwania jest proporcjonalny do odległości między ścieżkami Nie zawsze daje optymalne rezultaty Może prowadzić do zagłodzeń Omiatanie SCAN i C-SCAN oraz LOOK i C-LOOK Zadania porządkowane tak, by wykonywać je przy ruchu głowicy w jednym kierunku Gdy zostanie osiągnięte położenie końcowe: głowica zmienia kierunek na przeciwny (SCAN, LOOK) głowica jest przestawiana na początek (C-SCAN, C-LOOK) Algorytmy SCAN operują zawsze pomiędzy pierwszym a ostatnim cylindrem dysku Algorytmy LOOK operują pomiędzy pierwszym a ostatnim cylindrem na który zgłoszono zamówienie Przeszukiwanie cykliczne w algorytmach C-SCAN i C-LOOK wyrównuje czasy oczekiwania Nie prowadzą do zagłodzeń Trudności Współczesne dyski mają czas dostępu zbliżony do czasu opóźnienia obrotowego: konieczność uwzględnienia przy planowaniu operacji dyskowych wzajemnego położenia sektorów system operacyjny nie zna fizycznej organizacji danych dysku Rozwiazanie: system operacyjny wysyła do dysku pakiet żądań, a kontroler dokonuje właściwego szeregowania NCQ Niektóre operacje dyskowe nie mogą być wykonywane w dowolnej kolejności: nie można przerzucić całego zarządzania dostępem do dysku na sprzęt system operacyjny musi mieć możliwość wymuszenia kolejności wykonania żądań. 4
NCQ Native Command Queuing Kolejkowanie operacji po stronie urządzenia Uwzględnienie relacji przestrzennych Wykorzystywane także w dyskach SSD W przypadku dysków SSD mechanizm NCQ wykorzystywany jest w sposób odmienny niż w dyskach rotujących kolejkowanie operacji po stronie dysku wykorzystuje się, zapewnić operacje do wykonania przez dysk w czasie, gdy procesor prowadzi obliczenia. Pozwala to uzyskać nawet dwukrotny wzrost ilości wykonywanych operacji dyskowych w jednostce czasu. 1.3 Zarzadzanie dyskiem Przygotowanie dysku do pracy 1. Formatowanie fizyczne 2. Podział na partycje 3. Formatowanie logiczne Przygotowanie dysku do pracy Formatowanie niskiego poziomu (fizyczne) Podział nośnika na sektory. Każdy sektor składa się z nagłówka, pola danych oraz zakończenia. Pole danych ma zwykle długość 512B. Nagłówek i zakończenie zawierają m. in. numer sektora, sumy kontrolne oraz kody korekcyjne. Formatowanie logiczne Utworzenie na partycji struktur systemu plików. 5
1.4 Struktury RAID Geneza Terminem RAID określano technologię wykorzystania tanich (i stosunkowo zawodnych) dysków używanych w komputerach klasy PC do budowy pamięci masowych o dużej niezawodności. Obecnie termin ten stosowany jest do określenia ogółu technologii mających na celu budowę macierzy dyskowych. Redundant Array of Inexpensive Disks (nadmiarowa macierz tanich dysków) Redundant Array of Independent Disks (nadmiarowa macierz niezależnych dysków) Cele budowy macierzy RAID Bezpieczeństwo danych - utrata jednego lub więcej dysków nie pociąga za sobą utraty danych kopia 1 do 1 danych (mirror) sumy kontrolne i/lub kody korekcyjne Wysoka wydajność - zwielokrotnienie prędkości przesyłania danych przeplot (paskowanie - ang. stripping) - dane podzielone między dwa lub więcej dysków Kombinacja powyższych Kilka pojęć Awaria macierzy stan, w którym w wyniku awarii jednego lub więcej dysków następuje utrata danych Degeneracja macierzy stan, w którym część macierzy uległa awarii, ale nie nastąpiła utrata danych (np. awaria jednego z dysków lustrzanych) Na następnych slajdach: N - ilość dysków r - rozmiar najmniejszego dysku w macierzy RAID 0 Określany jako paskowanie (stripping) 6
Zapis z przeplotem bloków - dane rozdzielane pomiędzy dyski macierzy Zwiększona wydajność Brak odporności na awarie Pojemność: N * r Minimalnie 2 dyski RAID 1 Określany jako odbicie lustrzane (mirroring) Wszystkie dyski zawierają jednakowe kopie danych Zasadniczo brak poprawy wydajności Odporność na awarię N-1 dysków Pojemność: r Minimalnie 2 dyski RAID 2 Paskowanie z kontrolą błędów Część dysków zawiera dane zapisane z przeplotem na poziomie bitów lub bajtów, pozostałe przechowują bity parzystości Obliczanie kodów Hamminga powoduje spadek wydajności Odporność na awarię jednego dysku Pojemność: (N-log N) * r Minimalnie 3 dyski Praktycznie niespotykane 7
RAID 3 Parzystość w przeplocie bitów N-1 dysków zawiera dane zapisane z przeplotem na poziomie bitów, jeden dysk zawiera sumy kontrolne Zasadniczo brak poprawy wydajności, znaczny spadek w przypadku awarii jednego z dysków z danymi Odporność na awarię jednego dysku Pojemność: (N-1)*r Minimalnie 3 dyski RAID 4 Parzystość w przeplocie bloków N-1 dysków zawiera paskowane dane, jeden dysk zawiera sumy kontrolne Niewielka poprawa wydajności, znaczny spadek w przypadku awarii jednego z dysków z danymi Odporność na awarię jednego dysku Pojemność: (N-1)*r Minimalnie 3 dyski 8
RAID 5 Rozproszona parzystość w przeplocie bloków Jak RAID 4, ale brak wydzielonego dysku na sumy kontrolne Niewielka poprawa wydajności, znaczny spadek w przypadku awarii jednego z dysków z danymi Odporność na awarię jednego dysku Pojemność: (N-1)*r Minimalnie 3 dyski RAID 6 Podwójna rozproszona parzystość w przeplocie bloków Jak RAID 5, ale dla każdego paska przechowywane są dwie niezależne sumy kontrolne Niewielka poprawa wydajności, spadek w przypadku awarii jednego z dysków z danymi Odporność na awarię dwóch dysków Pojemność: (N-2)*r Minimalnie 4 dyski 9
Schematy kombinowane RAID 1+0, 1+0, 5+0... Implementacja RAID sprzętowy Opiera się na dedykowanym kontrolerze pamięci masowej zarządzającym macierzą. Potrzebne obliczenia wykonuje specjalizowany układ wchodzący w skład kontrolera. Rozwiązanie wydajne, ale kosztowne. RAID programowy Macierz zarządzana jest programowo przez system operacyjny. Potrzebne obliczenia wykonywane są przez CPU komputera. Pozwala wykorzystać tańsze kontrolery dysków twardych kosztem mocy obliczeniowej procesora, co skutkuje mniejszą wydajnością. 10
2 System plików 2.1 Pliki i struktury katalogowe Składowe systemu plików Pliki zbiór powiązanych ze sobą informacji Struktura katalogowa uporządkowany zbiór informacji o plikach Partycje (strefy, woluminy) Atrybuty plików wydzielony obszar dysku, zawierający pliki posiada własne struktury katalogowe nie zawsze odzwierciedlony w strukturze logicznej Nazwa w postaci czytelnej dla człowieka (ciąg liter) Identyfikator jednoznacznie wyodrębnia plik w całym systemie (zwykle numeryczny) Typ* tylko w systemach, gdzie typ pliku jest rozróżniany Lokalizacja opis położenia pliku (urządzenie -> partycja -> położenie) Rozmiar bieżący i/lub maksymalny rozmiar pliku Ochrona* kto i jakie ma prawa dostępu do pliku Właściciel* do kogo plik należy Data i czas czas utworzenia, ostatniej modyfikacji i ostatniego użycia pliku Operacje plikowe Podstawowe Tworzenie pliku Zapis do pliku Odczyt z pliku Zmiana pozycji w pliku Usuwanie pliku Skracanie pliku Dodatkowe Dopisywanie Zmiana nazwy* Zmiana uprawnień* 11
Typy plików Obsługiwane tylko przez niektóre systemy operacyjne typ włączony do nazwy - rozszerzenie DOS rozpoznawał rozszerzenia exe, com i bat niektóre programy używają rozszerzeń do identyfikacji plików skojarzenia plików typ jako atrybut pliku w systemie Apple Macintosh zapisywany jest typ pliku oraz informacja o programie, który go utworzył rozpoznawanie typu na podstawie zawartości pliku w systemach Unix magic number rozszerzenia dla ułatwienia pracy użytkownikowi Niektóre programy użytkowe wykorzystują mechanizm rozszerzeń aplikacja może wymagać konkretnego rozszerzenia aplikacja może pomijać rozszerzenie Kontrola dostępu W systemie Unix/Linux implementowane są mechanizmy kontroli dostępu do plików Prawa określane są dla właściciela (user), grupy (group) i pozostałych użytkowników (other) Typy praw dostępu: read (numerycznie - 4) odczyt pliku, wyświetlenie zawartości katalogu write (numerycznie - 2) zapis/zmiana pliku, tworzenie plików w katalogu execute (numerycznie 1) wykonanie pliku, wejście do katalogu Kontrola dostępu ciag dalszy Dodatkowe prawa - pliki wykonywalne: Set User ID (suid) program będzie wykonywany na prawach właściciela a nie uruchamiającego Set Group ID (sgid) program będzie wykonywany na prawach grupy właściciela Sticky Bit obecnie niewykorzystywany Ignorowane w przypadku skryptów Dodatkowe prawa - katalogi: Set User ID (suid) ignorowany Set Group ID (sgid) utworzone pliki/podkatalogi będą należały do tej samej grupy co katalog Sticky Bit utworzone pliki/katalogi będą mogły być usunięte tylko przez właściciela 12
Prawa dostępu do plików u g o numerycznie - r w x r - x - - x 751 - r w x - - - - - - 700 - r w - r - - - - - 640 - r w s r - x r - x 4755 (suid) d r w x r w s r w x 2777 (sgid) d r w x r w x r w t 1777 (sticky bit) 4 2 1 4 2 1 4 2 1 Struktura wewnętrzna Blok zwykle tożsamy z sektorem podstawowa jednostka alokacji miejsca na dysku operacje we/wy obejmują zawsze cały blok Plik zajmuje zawsze całkowitą ilość bloków podział pliku na bloki nazywa się upakowaniem zwykle ostatni blok nie jest pełny fragmentacja wewnętrzna Uwaga! Każdy system plików jest obarczony fragmentacją wewnętrzną. Dostęp do plików Dostęp sekwencyjny Plik może być odczytywany tylko w jednym kierunku (od początku do końca) rekord po rekordzie model taśmowy pliku. Dostęp swobodny Rekordy mogą być odczytywane w dowolnej kolejności model dyskowy pliku. Struktury katalogowe Zdefiniowane dla każdej partycji lub urządzenia logicznego Zawierają informacje o plikach: nazwa lokalizacja rozmiar typ Muszą wspierać operacje na plikach Różne sposoby organizacji 13
Operacje na strukturach katalogowych Odnajdywanie pliku Tworzenie pliku Usunięcie pliku Przemianowanie/przesunięcie pliku Wyprowadzenie katalogu Obchód systemu plików Organizacje struktur katalogowych Katalog jednopoziomowy Katalog dwupoziomowy Struktura drzewiasta Graf acykliczny Graf uogólniony Katalog jednopoziomowy Najprostszy w implementacji i utrzymaniu Nazwy plików muszą być unikatowe ograniczona pojemność (DOS konwencja 8.3, Unix - 255 znaków) nazwy nie opisują zawartości pliku problem, gdy z systemu korzysta większa ilość użytkowników Katalog dwupoziomowy Każdy użytkownik ma katalog swoich plików (UFD) Urządzenie posiada główny katalog plików (MFD) zawierający informacje o katalogach użytkowników Izolacja plików poszczególnych użytkowników pożądana, z punktu widzenia kontroli dostępu utrudnienia współpracy konieczne podanie ścieżki do pliku 14
Pliki wyszukiwane są w katalogu użytkownika utrudniony dostęp do programów i plików systemowych ścieżka przeszukiwania definiuje gdzie poszukiwać programów Rysunek 4: Katalog dwupoziomowy Katalogi i ścieżki - terminologia 1/3 Ścieżka dostępu (nazwa ścieżki) Opisuje położenie pliku w systemie plików Ścieżka bezwzględna - w stosunku do korzenia systemu plików W systemie Unix - zaczyna się znakiem / /usr/share/vim W systemie Windows - zaczyna się literą dysku c:\widows\user.dat Ścieżka względna - w stosunku do katalogu bieżacego./ - katalog bieżący../ - katalog poziom wyżej Katalogi i ścieżki - terminologia 2/3 Katalog bieżacy (roboczy) Katalog wskazany w ostatnim poprawnie wykonanym poleceniu zmiany katalogu lub ustalony domyślnie w środowisku zadania. W systemie Unix: pwd W systemie Windows: cd (bez parametru) Katalogi i ścieżki - terminologia 3/3 Ścieżka przeszukiwania Ciąg katalogów przeszukiwany w celu odnalezienia nazwy programu do wykonania. zmienna środowiskowa PATH Separator ścieżki W systemie UNIX / (slash) W systemie Windows \ (backslash) 15
Katalogi o strukturach drzewiastych Uogólnienie struktury dwupoziomowej Użytkownik może tworzyć podkatalogi i organizować w nich swoje pliki Ścieżki do plików stają się coraz dłuższe Katalog bieżący katalog w którym się aktualnie znajdujemy Brak wsparcia dla współdzielenia plików i katalogów Np. DOS Rysunek 5: Katalog drzewiasty Acykliczne grafy katalogów Usprawnienie współdzielenia plików dowiazania plik będący wskaźnikiem na inny plik/katalog Unix dowiązanie symboliczne Windows skrót zwielokrotniony wpis z strukturze katalogowej Unix dowiązanie twarde Kiedy właściwie plik/dowiązanie można usunąć? Dowiązania symboliczne ( miękkie ): dowiązanie kasujemy bez zastrzeżeń plik kasujemy bez dowiązań dowiązania wiszące Dowiązania twarde: licznik dowiązań zliczanie dowiązań twardych, fizyczne kasowanie pliku gdy osiągnie 0 W systemie Unix zabronione jest tworzenie dowiązań twardych do katalogów 16
Rysunek 6: Graf acykliczny Graf ogólny katalogów Uogólnienie struktury grafu acyklicznego Problem zapętleń nieskończenie długa ścieżka do pliku Problem w określeniu, czy usunięto już wszystkie dowiązania do pliku/katalogu i można już go usunąć konieczne przeszukanie całego obszaru dysku Pracochłonne i pamięciożerne algorytmy sprawdzania, czy nowe dowiązanie nie domknie cyklu Trudne w implementacji, nie spotykane w popularnych systemach Rysunek 7: Graf uogólniony 17
2.2 Partycje Partycje Partycja Struktura niskiego poziomu mieszcząca pliki i strukturę katalogową. Inne nazwy: minidysk, wolumen, strefa Stosowana do podzielenia dysku na mniejsze, niezależne obszary Niektóre systemy pozwalają na łączenie partycji w dyski wirtualne Partycje Rysunek 8: Podział dysku na partycje 2.3 Montowanie systemu plików Montowanie systemu plików System plików może składać się z wielu stref Aby system plików mógł być użyty, konieczne jest jego zamontowanie Procedura montowania systemu plików obejmuje: wczytanie i sprawdzenie poprawności informacji katalogowej określenie punktu montowania Punkt montowania Miejsce, gdzie zostaje przyłączony system plików Jak to działa? Windows (DOS) 18
Rysunek 9: Przed zamontowaniem Rysunek 10: Po zamontowaniu Jak to działa? Unix Rysunek 11: Przed zamontowaniem 19
Rysunek 12: Po zamontowaniu Do zapamiętania Przed użyciem systemu plików, musi być on zamontowany Montowanie może przebiegać w różny sposób: DOS/Windows niejawnie podczas startu systemu Unix podczas startu systemu i/lub w dowolnym momencie Różne zachowanie przy montowaniu przesłonienie zawartości punktu montowania suma systemu plików montowanego i zastanej zawartości montowanie zabronione, jeśli punkt montowania nie jest pustym katalogiem Nośniki wymienne również są montowane! Przed odłączeniem system plików należy odmontować! (Brak odmontowania grozi utrata danych!) Bezpieczne usuwanie sprzętu w kontekście urządzeń przechowywania danych (pamięci USB flash, przenośne dyski twarde) oznacza opróżnienie buforów urządzenia (zakończenie operacji zapisu i odczytu) oraz odmontowanie. Jeśli nie przeprowadzi się tego kroku, zmiany w plikach mogą nie zostać zapisane. W najgorszym przypadku, mogą nie zostać zapisane zmiany w strukturze katalogowej, która w takim przypadku pozostanie niespójna. Taka sytuacja może prowadzić do utraty większej ilości danych z całą zawartością nośnika włącznie! Niektóre systemy operacyjne wymuszają obsługę synchroniczną napędów wymiennych oznacza to, że jeśli wykonywana jest operacja zapisu, to nie jest ona buforowana, a proces piszący jest wstrzymywany do czasu zakończenia operacji. Znacząco zmniejsza to ryzyko utraty danych za cenę obserwowanego spadku wydajności. Procedura odmontowania ma na celu także upewnienie się, czy urządzenie jest już zwolnione. W razie siłowego usunięcia urządzenia, proces usiłujący z niego odczytywać (lub zapisywać) dane może zostać powiadomiony o błędzie operacji, zakończony (wyjątek) lub oczekiwać, aż urządzenie stanie się ponownie dostępne. 20
2.4 Współdzielenie plików Współdzielenie plików Kontrola dostępu i ochrona pliki domyślnie dostępne dla innych użytkowników pliki domyślnie niedostępne dla innych użytkowników Dodatkowe atrybuty pliku właściciel i grupa uprawnienia dostępu Zdalne systemy plików Semantyka spójności jak zachować się w przypadku konfliktu przy dostępie do pliku Semantyka spójności Sesja plikowa Ciąg operacji na pliku poprzedzony operacją open i zakończony operacją close. System UNIX Sesje istnieje jest tylko jeden obraz pliku zmiany natychmiast widoczne dla wszystkich użytkowników operacje plikowe przeprowadzane na kopii synchronizacja na początku i na końcu sesji obce zmiany widoczne po ponownym otwarciu pliku Stałe pliki dzielone pliki udostępnione tylko do odczytu nikt nie może zapisać pliku brak konfliktów 3 Implementacja systemu plików 3.1 Wprowadzenie Budowa i implementacja systemu plików Warstwowa organizacja systemu plików 21
Rysunek 13: Warstwowa struktura systemu plików Elementy składowe Sterowanie wejściem/wyjściem Sterowniki odpowiedzialne za współpracę systemu ze sprzętem. Tłumaczą polecenia wysokiego poziomu na ciąg poleceń niskiego poziomu specyficznych dla danego sprzętu. Podstawowy system plików Operuje na adresach fizycznych (urządzenie, cylinder, głowica, sektor) pośrednicząc między modułem organizacji plików a sterownikiem urządzenia. Elementy składowe Ciag dalszy Moduł organizacji plików Tłumaczy adresy logiczne (nazwa pliku, numer kolejny bloku) na adresy fizyczne. Logiczny system plików Opiera się na metadanych opisujących przechowywane dane. Obejmuje struktury katalogowe Struktury wspierajace realizację systemu plików Struktury przechowywane na dysku Blok sterowania rozruchem (boot control block, boot record) zawiera informacje potrzebne do uruchomienia systemu operacyjnego z danej partycji Blok sterujacy partycji (superblock, główna tablica plików) zawiera informacje o partycji: ilość bloków, ich rozmiar, ilość bloków wolnych, informacje na temat wolnych bloków kontrolnych plików. Struktura katalogowa informacja o organizacji systemu plików Blok kontrolny pliku (FCB) przechowuje wartości atrybutów pliku: nazwę pliku, nazwę właściciela, uprawnienia, umiejscowienie na dysku. W systemie Unix inode, w niektórych systemach plików (NTFS) informacje te fizycznie są zapisane w katalogu. Struktury wspierajace realizację systemu plików Struktury przechowywane w pamięci operacyjnej Tablica partycji zawiera informacje o zamontowanych systemach plików Struktura katalogowa fragment, który ostatnio był wykorzystywany Ogólnosystemowa tablica otwartych plików zawiera kopie FCB aktualnie otwartych plików oraz dodatkowe informacje (np. ilość procesów korzystających z pliku) 22
Procesowe tablice plików zawierają wskaźniki do ogólnosystemowych tablic plików i dodatkowe informacje (np. wskaźnik aktualnej pozycji w pliku, tryb otwarcia) Tworzenie nowego pliku 1. Program użytkownika wywołuje logiczny system plików 2. Logiczny system plików przydziela FCB, wczytuje zawartość potrzebnego katalogu, uzupełnia ją i zapisuje na dysku. Do operacji na katalogu wykorzystywany jest moduł organizacji pliku. 3. Moduł organizacji pliku przydziela bloki do pliku. Praca z plikiem Otwarcie pliku 1. Program wywołuje funkcję systemową open(), przekazując nazwę pliku do otwarcia 2. W strukturze katalogowej wyszukiwany jest plik o zadanej nazwie. 3. Jeśli dany plik nie jest jeszcze otworzony, FCB pliku zostaje skopiowany do systemowej tablicy plików, a licznik otwarć przyjmuje wartość 1. W przeciwnym wypadku licznik otwarć jest inkrementowany. 4. W procesowej tablicy plików tworzony jest wpis ze wskaźnikiem do pozycji w systemowej tablicy plików. 5. Funkcja open zwraca wskaźnik do pozycji w procesowej tablicy plików deskryptor pliku (uchwyt pliku). Praca z plikiem Odczyt, zapis oraz zamknięcie pliku 1. Do operacji na plikach wykorzystywane są m. in. funkcje systemowe read() i write(). 2. Po zakończeniu pracy z plikiem wywoływana jest funkcja systemowa close() (a) usunięcie wpisu z procesowej tablicy plików oraz dekrementacja licznika otwarć w systemowej tablicy plików (b) uaktualnienie informacji w strukturze katalogowej (c) jeśli było to ostatnie aktywne otwarcie pliku usunięcie wpisu z systemowej tablicy plików Ważne! W trakcie pracy z plikiem posługujemy się deskryptorem (uchwytem) pliku zwróconym przez funkcję open(). Obsługa różnych systemów plików Współczesne systemy operacyjne obsługują wiele systemów plików lokalne systemy plików UFS, ext2, FAT, NTFS sieciowe systemy plików NFS, CIFS Systemy plików różnią się między sobą: różna organizacja struktur katalogowych różne podzbiory atrybutów plików różny sposób dostępu do pliku Konieczne staje się ujednolicenie interfejsu dostarczanego użytkownikowi Wirtualny system plików Definiuje wirtualny interfejs systemu plików, którego realizację stanowią implementacje poszczególnych systemów plików. 23
Wirtualny system plików Rysunek 14: Schemat systemu plików 3.2 Implementacja katalogu Implementacja katalogu Lista liniowa Lista nazw plików ze wskaźnikami do bloków danych Prosta implementacja wyszukiwanie liniowe wstawianie na koniec listy mała wydajność Wariacja: lista sortowana poprawia wydajność przy wyszukiwaniu utrudnia operacje dodawania i usuwania plików Implementacja katalogu Tablica z haszowaniem Lista nazw plików zostaje uzupełniona tablicą haszowaną Każdy wiersz tablicy zawiera skrót nazwy pliku oraz wskaźnik na jej pozycję w katalogu szybkie wyszukiwanie funkcja haszująca nie jest różnowartościowa konieczność uwzględnienia kolizji Funkcja haszujaca (skrótu, mieszajaca) Funkcja, która przyporządkowuje argumentowi krótką, zwykle posiadającą stały rozmiar wartość (skrót wiadomości). 24
3.3 Przydział miejsca na dysku Przydział miejsca na dysku Alokacja pliku Przydział jednostek alokacji (bloków, klastrów) do pliku. Przydział ciągły Przydział listowy Przydział indeksowy Przydział ciagły Plikowi przydzielane są kolejne bloki - ciągły obszar na dysku Położenie pliku opisuje adres pierwszego bloku i ilość zajętych bloków Prosta implementacja dostępu sekwencyjnego i swobodnego Ograniczone przestawianie głowicy podczas operacji we/wy - dobra wydajność Przydział ciagły Wady Konieczność wyszukiwania wolnego miejsca na nowe pliki Pliki nie zawsze w pełni wypełniają luki po skasowanych plikach fragmentacja zewnętrzna Nowe pliki muszą się mieścić w wolnych obszarach Rozmiar pliku musi być znany przed jego zapisaniem Zmiana rozmiaru pliku często wymaga przeniesienia go Defragmentacja okupiona dużym narzutem czasowym Defragmentacja (upakowanie) Przemieszczenie plików na dysku w taki sposób, by wolne miejsca na dysku stanowiło jedną przestrzeń. Przydział ciagły Defragmentacja 25
Przydział listowy Usuwa niedogodności przydziału listowego Każdy blok pliku posiada wskaźnik na następny blok W ostatnim bloku wartość nil W katalogu umieszczone są wskaźniki na pierwszy i ostatni blok pliku Brak fragmentacji zewnętrznej Wskaźniki zajmują miejsce organizacja bloków w klastry (grona) Uszkodzenie wskaźnika powoduje utratę danych. Środki zaradcze: listy podwójnie wiązane umieszczenie w każdym bloku jego numeru i nazwy pliku Poważnie utrudniony dostęp swobodny (niska wydajność) Przydział listowy Rysunek 15: Alokacja listowa Przydział listowy Tablica alokacji plików - FAT Jedna pozycja na blok Indeksowana numerem bloku Zawiera numer następnego bloku pliku lub znak EOF jeśli dany blok jest ostatni Szybszy dostęp swobodny Poprawiona niezawodność kopia FAT 26
Przydział listowy Przydział listowy, FAT a defragmentacja Wcześniej powiedziano, że przydział listowy nie powoduje fragmentacji zewnętrznej...... ale w systemie Windows przy partycjach typu FAT zalecano wykonywać defragmentację... Jeśli kolejne bloki trzeba odczytywać z różnych cylindrów - konieczne jest przestawienie głowic Odczyt kolejnych sektorów jest zdecydowanie szybszy Warto zapamiętać Defragmentacja w systemach z przydziałem listowym ma na celu zwiększenie wydajności Przydział indeksowy Bloki indeksowe zawierają wskaźniki na bloki z danymi i-ty wskaźnik odpowiada i-temu blokowi pliku Łączy zalety przydziału ciągłego (łatwy dostęp bezpośredni) i listowego (brak fragmentacji) Jeśli jeden blok indeksowy to za mało - ostatni wskaźnik wskazuje na następny blok indeksowy Dla małych plików duża fragmentacja wewnętrzna - nie można wykorzystać niepotrzebnych pozycji w bloku indeksowym Przydział indeksowy Rysunek 16: Alokacja indeksowa 27
Przydział indeksowy W systemach uniksowych Rysunek 17: Alokacja indeksowa UFS Informacja o wolnym miejscu Wektor bitowy (mapa bitowa) bity odpowiadają kolejnym blokom na dysku 1 blok zajęty, 0 blok wolny prosta implementacja duży rozmiar mapy może nie mieścić się w pamięci Lista powiązana system posiada wskaźnik do pierwszego wolnego bloku każdy wolny blok posiada wskaźnik na następny wolny blok ustawianie wskaźników jest pracochłonne, podobnie jak wyszukiwanie wolnego bloku można łatwo przydzielać pierwszy wolny blok Informacja o wolnym miejscu Grupowanie w pierwszym wolnym bloku przechowywane są adresy n bloków n-1 adresów wskazuje bloki puste ostatni adres wskazuje na następny blok grupujący bloki puste szybkie wyszukiwanie większej ilości bloków pustych Zliczanie wolne obszary notowane są przy użyciu adresu pierwszego bloku i ilości kolejnych bloków pustych wygodne przy stosowaniu alokacji ciągłej efektywne, jeśli licznik zwykle jest większy od 1 28
3.4 Wydajność i bezpieczeństwo Wydajność Pamięć dyskowa jest najwolniejszym elementem systemu komputerowego Działania mające poprawić szybkość działania: wstępne rozlokowanie i-węzłów w systemie plików (UFS) klastry o wielkości dobranej do możliwości DMA zapis asynchroniczny (buforowanie zapisu) read-ahead czytanie z wyprzedzeniem free-behind wczesne zwalnianie Zapis synchroniczny/asynchroniczny W niektórych zastosowaniach (np. bazy danych) wymuszenie zapisu synchronicznego służy zapewnieniu integralności danych (niepodzielność transakcji). Powoduje to jednak, że proces czeka, aż fizyczny zapis zostanie wykonany. Bezpieczeństwo Zabezpieczenie przed niepowołanym dostępem (security) system uprawnień szyfrowane systemy plików Bezpieczeństwo danych (safety) sprawdzanie spójności czy zawartość katalogu jest zgodna z zawartością dysku systemy plików z dziennikiem (kroniką) transakcyjna obsługa operacji dyskowych kopie bezpieczeństwa składowanie i odtwarzanie danych Są dwa rodzaje ludzi: tacy, którzy robią kopie bezpieczeństwa i tacy, którzy jeszcze ich nie robią. 29