System plików - warstwa logiczna - warstwa fizyczna - przykłady implementacji Systemy operacyjne Wykład 6 1
System plików warstwa logiczna Pojęcie pliku. Typy i struktury plików. Metody dostępu do plików. Interfejs dostępu do plików w systemach uniksopodobnych. Organizacja logiczna systemu plików: strefy, katalogi. Logiczna struktura katalogów. Systemy operacyjne Wykład 6 2/94
Pojęcie pliku Plik jest abstrakcyjnym obrazem informacji gromadzonej i udostępnianej przez system komputerowy. Plik jest podstawową jednostką logiczną magazynowania informacji w systemie komputerowym, widoczną dla użytkownika. Plik jest nazwanym zbiorem powiązanych ze sobą informacji, zapisanym w pamięci pomocniczej. Systemy operacyjne Wykład 6 3/94
Zadania systemu operacyjnego Zadaniem systemu operacyjnego w odniesieniu do plików jest zapewnienie odwzorowania pomiędzy abstrakcyjnym obrazem informacji a jego reprezentacją na urządzeniu fizycznym. Wyszczególnienie zadań: identyfikacja pliku (hierarchiczna struktura katalogów), udostępnienie interfejsu operacji plikowych (API), realizacja operacji dostępu do plików i katalogów z zapewnieniem bezpieczeństwa (synchronizacja i autoryzacja dostępu), spójności i efektywności. Systemy operacyjne Wykład 6 4/94
Atrybuty pliku Nazwa ciąg znaków służących użytkownikowi do identyfikacji pliku. Typ informacja służąca do rozpoznania rodzaju zawartości pliku i tym samym sposobu interpretacji. Lokalizacja informacja służąca do odnalezienia pliku w systemie komputerowym (urządzenie i położenie pliku w tym urządzeniu). Rozmiar bieżący rozmiar pliku w ustalonych jednostkach (bajtach, słowach, blokach itp.). Ochrona informacje umożliwiające kontrolę dostępu. Czasy dostępów daty i czasy wykonywania pewnych operacji na pliku, typu odczyt, modyfikacja, utworzenie. Systemy operacyjne Wykład 6 5/94
Typy plików Typ pliku określa rodzaj informacji przechowywanej w pliku i tym samym sposób interpretacji jego zawartości, np. program binarny, wynik kompilacji, kod źródłowy, makrodefinicja (plik wsadowy, skrypt powłoki itp.), tekst, biblioteka programisty, grafika, dane aplikacji. Informacja o typie pliku może być przechowywana w strukturach wewnętrznych systemu plików, w zawartości samego pliku, w katalogach lub w nazwie pliku. Typ pliku może być rozpoznawany przez system operacyjny, ale może to być również tylko informacja interpretowana przez użytkownika lub aplikację. Systemy operacyjne Wykład 6 6/94
Struktura pliku Struktura logiczna: określa organizację informacji wewnątrz pliku, może być definiowana i rozpoznawana na poziomie jądra systemu operacyjnego lub na poziomie aplikacji. Struktura fizyczna: określa sposób przechowywania informacji, narzucana jest przez urządzanie, na którym plik jest składowany. Systemy operacyjne Wykład 6 7/94
Odwzorowanie obrazu logicznego w fizyczny nośnik fizyczny (dysk) plik rekord logiczny rekord logiczny rekord logiczny obszar niewykorzystany Systemy operacyjne Wykład 6 8/94
Metody dostępu do plików Metody dostępu określają sposób identyfikacji odczytywanego lub zapisywanego fragmentu pliku. Użycie określonej metody wynika z charakteru przetwarzania oraz struktury pliku. Dostępność określonej metody może być ograniczona ze względu na własności urządzenia oraz sposób organizacji lub implementacji systemu plików (zwłaszcza atrybutu lokalizacja). Systemy operacyjne Wykład 6 9/94
Wyszczególnienie metod dostępu Dostęp sekwencyjny (sequential access) informacje w pliku przetwarzane są rekord po rekordzie, tzn. po wykonaniu operacji na określonym rekordzie system przygotowuje się do wykonania operacji na kolejnym rekordzie w pliku. Dostęp bezpośredni (swobodny, direct access) lokalizacja rekordu do przetwarzania podawana jest jako parametr odpowiedniej operacji. Dostęp indeksowy rekord, na którym ma być wykonana operacja identyfikowany jest przez klucz, odwzorowywany na konkretny rekord w pliku stowarzyszonym poprzez plik indeksowy. Systemy operacyjne Wykład 6 10/94
Przykład pliku indeksowego klucz Iksiński Igrekowska Igrekowska Maria, mgr Zetowski Jerzy, dr Zetowski plik indeksowy Iksiński Wojciech, prof. plik stowarzyszony Systemy operacyjne Wykład 6 11/94
Podstawowe operacje na plikach Tworzenie pliku konieczne jest określenie podstawowych atrybutów pliku, znalezienie miejsca na ten plik w systemie komputerowym oraz jego zaewidencjonowanie (utworzenie wpisu katalogowego). Zapis do pliku konieczne jest określenie, co ma być zapisane i gdzie ma być zapisane (w którym pliku i w jakim miejscu tego pliku, zależnie od sposobu dostępu). Odczyt z pliku konieczne jest określenie, co ma być odczytane (z którego pliku i z jakiego miejsca tego pliku, zależnie od sposobu dostępu) i gdzie mają być umieszczone odczytane dane. Usuwanie informacji z pliku należy określić jaki fragment pliku (i którego pliku) ma być usunięty. Najczęściej możliwe jest tylko skracanie pliku, czyli usuwanie jego końcowej zawartości lub całej jego zawartości. Usuwanie pliku należy określić plik do usunięcia. Usuwana jest zawartość oraz wpis ewidencyjny pliku. Dodatkowe operacje na plikach, wykonywane w celu uzyskania dostępu do zawartości pliku: otwieranie, zamykanie, przesuwanie wskaźnika bieżącej pozycji. Systemy operacyjne Wykład 6 12/94
Interfejs dostępu do pliku w systemach UNIX i podobnych Tworzenie pliku funkcja creat. Usuwanie dowiązania do pliku funkcja unlink. Odczyt z pliku funkcja read. Zapis do pliku funkcja write. Skracanie pliku (usuwanie końcowej zawartości, obcinanie) funkcja truncate. Przesunięcie wskaźnika bieżącej pozycji funkcja lseek. Otwieranie pliku funkcja open. Zamykanie otwartego pliku funkcja close. Systemy operacyjne Wykład 6 13/94
Systemy uniksopodobne tworzenie pliku Funkcja systemowa: creat. Parametry: nazwa pliku (ścieżka), prawa dostępu. Wartość zwrotna: deskryptor pliku lub -1 w przypadku błędu. Uwaga: funkcja tworzy plik i otwiera go do zapisu. Systemy operacyjne Wykład 6 14/94
Systemy uniksopodobne otwieranie pliku Funkcja systemowa: open. Parametry: nazwa pliku (ścieżka), tryb otwarcia (do zapisu, do odczytu itp.). Wartość zwrotna: deskryptor pliku lub -1 w przypadku błędu. Wersja 3-argumentowa funkcji umożliwia również tworzenie pliku. Systemy operacyjne Wykład 6 15/94
Systemy uniksopodobne zamykanie deskryptora pliku Funkcja systemowa: close. Parametry: deskryptor. Wartość zwrotna: 0 w przypadku poprawnego zakończenia lub -1 w przypadku błędu. Systemy operacyjne Wykład 6 16/94
Systemy uniksopodobne usuwanie dowiązania do pliku Funkcja systemowa: unlink. Parametry: nazwa pliku (ścieżka). Wartość zwrotna: 0 w przypadku poprawnego zakończenia lub -1 w przypadku błędu. Systemy operacyjne Wykład 6 17/94
Systemy uniksopodobne skracanie pliku Funkcja systemowa: truncate. Parametry: nazwa pliku (ścieżka) lub deskryptor. wielkość w bajtach do jakiej ma nastąpić skrócenie (docelowa wielkość pliku). Wartość zwrotna: 0 w przypadku poprawnego zakończenia lub -1 w przypadku błędu. Systemy operacyjne Wykład 6 18/94
Systemy uniksopodobne odczyt zawartości pliku Funkcja systemowa: read. Parametry: deskryptor pliku, adres w pamięci, pod którym zostaną zapisane dane odczytane z pliku, liczba odczytywanych bajtów. Wartość zwrotna: liczba rzeczywiście odczytanych bajtów lub -1 w przypadku błędu. Systemy operacyjne Wykład 6 19/94
Systemy uniksopodobne zapis zawartości pliku Funkcja systemowa: write. Parametry: deskryptor pliku, adres w pamięci, spod którego zostaną pobrane dane do zapisu, liczba zapisywanych bajtów. Wartość zwrotna: liczba rzeczywiście zapisanych bajtów lub -1 w przypadku błędu. Systemy operacyjne Wykład 6 20/94
Przykład realizacji operacji odczytu w systemach uniksopodobnych read(d, buf, 8) read(d, buf, 11) read(d, buf, 6) bufor w pamięci plik Systemy operacyjne Wykład 6 21/94
Przykład realizacji operacji zapisu w systemach uniksopodobnych write(d, buf, 8) write(d, buf, 11) write(d, buf, 6) bufor w pamięci plik Systemy operacyjne Wykład 6 22/94
Systemy uniksopodobne zmiana wskazania bieżącej pozycji Funkcja systemowa: lseek. Parametry: deskryptor pliku, wielkość przesunięcia w bajtach, punkt odniesienia (początek pliku, bieżąca pozycja, lub koniec pliku). Wartość zwrotna: położenie wskaźnika po przesunięciu lub -1 w przypadku błędu. Systemy operacyjne Wykład 6 23/94
Zmiana wskazania bieżącej pozycji - odczyt read(d, buf, 8) lseek(d, 11, SEEK_CUR) read(d, buf, 6) bufor w pamięci plik Systemy operacyjne Wykład 6 24/94
Zmiana wskazania bieżącej pozycji - zapis write(d, buf, 8) lseek(d, 11, SEEK_CUR) write(d, buf, 6) bufor w pamięci plik Systemy operacyjne Wykład 6 25/94
Organizacja logiczna systemu plików Podział na strefy (wolumeny, woluminy, tomy, partycje): strefa obejmuje część dysku, jeden lub kilka dysków, strefa zawiera pliki i katalogi. Organizacja katalogów: katalog jest tablicą kojarzącą nazwy plików z wpisami katalogowymi, obejmującymi inne atrybuty plików, katalogi mogą być jedno- lub wielopoziomowe, katalogi wielopoziomowe zorganizowane mogą być w różne struktury logiczne (drzewo, graf acykliczny, dowolny graf). Pliki identyfikowane są przez nazwy, znajdujące się w katalogach. Systemy operacyjne Wykład 6 26/94
Organizacja logiczna systemu plików ilustracja katalog katalog katalog plik plik plik strefa/partycja/wolumen plik plik plik strefa/partycja/wolumen Systemy operacyjne Wykład 6 27/94
dysk 2 dysk dysk 1 Podział na strefy strefa B strefa A strefa katalog urządzenia pliki katalog urządzenia pliki katalog urządzenia pliki Systemy operacyjne Wykład 6 28/94
Operacje na katalogu Tworzenie katalogu. Usuwanie katalogu. Tworzenie wpisu katalogowego gdy tworzony jest plik, jego nazwa alternatywna, podkatalog itp. Usuwanie wpisu katalogowego. Przemianowanie pliku (zmiana nazwy). Odnajdowanie wpisu katalogowego. Tworzenie wykazu wpisów katalogowych (listing zawartości). Systemy operacyjne Wykład 6 29/94
Struktura logiczna katalogów Struktura jednopoziomowa wpisy katalogowe poszczególnych plików znajdują się w tym samym katalogu (na tym samym poziomie). Struktura dwupoziomowa wpisy katalogowe plików znajdują się w różnych katalogach, ale katalogi nie mogą zawierać innych katalogów. Struktura drzewiasta w katalogach można tworzyć podkatalogi oraz pliki. Graf acykliczny podkatalog (lub plik) może być umieszczony w wielu katalogach. Graf ogólny dopuszcza się cykl w powiązaniach pomiędzy katalogami Systemy operacyjne Wykład 6 30/94
Struktura jednopoziomowa prg.c test.txt f.lst sample.h Systemy operacyjne Wykład 6 31/94
Struktura dwupoziomowa jacek anna prg.c test.txt prg.c sample.h Systemy operacyjne Wykład 6 32/94
Struktura drzewiasta jacek anna programy teksty programy s.txt prg.c prog.c abc.doc prg.c sample.h Systemy operacyjne Wykład 6 33/94
Graf acykliczny jacek anna teksty jacek readme plik.txt prg1.c prg.c sample.h Systemy operacyjne Wykład 6 34/94
Graf ogólny teksty pisma poczta s.doc plik.txt list2.txt list1.txt Systemy operacyjne Wykład 6 35/94
System plików warstwa fizyczna Przydział miejsca na dysku Zarządzanie wolną przestrzenią Implementacja katalogu Przechowywanie podręczne Integralność systemu plików Semantyka spójności Systemy operacyjne Wykład 6 36/94
Organizacja fizyczna systemu plików Przydział miejsca na dysku: przydział ciągły, przydział listowy, przydział indeksowy, Zarządzanie wolną przestrzenią: wektor bitowy, lista powiązana, grupowanie, zliczanie. Implementacja katalogu: lista liniowa, tablica haszowa, struktura indeksowa. Systemy operacyjne Wykład 6 37/94
Przydział miejsca na dysku Przydział ciągły (contiguous allocation) cały plik zajmuje ciąg kolejnych bloków. Przydział listowy (łańcuchowy, linked allocation, chained allocation) bloki pliku tworzą listę powiązaną. Przydział indeksowy (indexed allocation) bloki z danymi wskazywane są przez bloki indeksowe, które mogą być zorganizowane w: schemat listowy, schemat wielopoziomowy, schemat kombinowany. Systemy operacyjne Wykład 6 38/94
Przydział ciągły Katalog: 1 7 8 14 15 21 22 28 29 35 blok początkowy: 1 rozmiar: 10 bloków blok początkowy: 13 rozmiar: 11 bloków blok początkowy: 27 rozmiar: 9 bloków Systemy operacyjne Wykład 6 39/94
Przydział ciągły właściwości Efektywność dostępu (niewielkie ruchy głowic dysk.). Łatwa lokalizacja bloków pliku zarówno przy dostępie sekwencyjnym jak i bezpośrednim. Problem fragmentacji zewnętrznej po usuniętych plikach pozostają dziury, które trudno połączyć w jeden większy blok. Problem rozszerzania pliku: pliku nie da się rozszerzyć, będzie go trzeba przenieść w nowe miejsce (znaleźć większą dziurę), będzie trzeba z góry zarezerwować więcej miejsca w przestrzeni dyskowej. Systemy operacyjne Wykład 6 40/94
Przydział listowy (łańcuchowy) Katalog: 1 7 8 14 15 21 22 28 29 35 blok początkowy: 1 blok końcowy: 8 blok początkowy: 22 blok końcowy: 14 blok początkowy: 7 blok końcowy: 4 Systemy operacyjne Wykład 6 41/94
Przydział listowy właściwości Nie ma problemu fragmentacji zewnętrznej. Łatwa realizacja dostępu sekwencyjnego. Problem realizacji dostępu bezpośredniego. Konieczność pamiętania wewnątrz bloku wskaźnika do bloku następnego. Zawodność utrata jednego bloku pociąga za sobą stratę wszystkich następnych. Systemy operacyjne Wykład 6 42/94
Tablica alokacji plików FAT (File Allocation Table) FAT jest dodatkową strukturą (tablicą) umieszczoną w odpowiednim obszarze na dysku. Każdy element tablicy FAT odpowiada dokładnie jednej jednostce alokacji (blokowi) z przestrzeni bloków plikowych i indeksowany jest numerem bloku. Element tablicy FAT zawiera indeks następnego bloku przydzielonego danemu plikowi lub pewną wartość specjalną oznaczającą wolną pozycję lub ostatnią pozycję danego pliku. Systemy operacyjne Wykład 6 43/94
Struktura tablicy alokacji plików 1 7 8 14 15 21 22 28 29 35 1 2 3 4 5 6 7 8 27 28 3 28 # 35 # 8 27 Katalog: blok początkowy: 1 blok końcowy: 8 blok początkowy: 22 blok końcowy: 14 blok początkowy: 7 blok końcowy: 4 Systemy operacyjne Wykład 6 44/94
Przydział indeksowy Katalog: 1 7 8 14 15 21 22 28 29 35 blok indeksowy: 4 rozmiar: 4 bloki blok początkowy: 23 rozmiar: 3 bloki blok początkowy: 7 rozmiar: 4 bloki Systemy operacyjne Wykład 6 45/94
Struktura bloku indeksowego Schemat listowy w ostatnim elemencie bloku indeksowego znajduje się wskaźnik do następnego bloku indeksowego tego pliku. Schemat wielopoziomowy blok indeksowy pierwszego poziomu zawiera wskaźnik do bloków drugiego poziomu itd. Schemat kombinowany zastosowanie do pewnej liczby bloków indeksu pierwszego poziomu, dla następnych bloków indeksu dwupoziomowego itp. Systemy operacyjne Wykład 6 46/94
Struktura bloku indeksowego schemat listowy blok danych blok indeksowy Systemy operacyjne Wykład 6 47/94
Struktura bloku indeksowego indeks wielopoziomowy blok danych blok indeksowy Systemy operacyjne Wykład 6 48/94
Struktura bloku indeksowego schemat kombinowany blok danych blok indeksowy Systemy operacyjne Wykład 6 49/94
Przydział indeksowy właściwości Stosunkowo szybka lokalizacja dowolnego bloku pliku. Łatwa realizacja dostępu bezpośredniego. Brak problemu fragmentacji zewnętrznej. Konieczność przeznaczenie pewnej części przestrzeni dyskowej na bloki indeksowe. Zawodność: utrata bloku indeksowego oznacza utratę sporej części pliku lub nawet całej zawartości. Systemy operacyjne Wykład 6 50/94
Zarządzanie wolną przestrzenią Wektor bitowy każdy bit odpowiada jednemu blokowi, wartość 1 oznacza wolny blok. Lista powiązana każdy wolny blok zawiera indeks następnego wolnego bloku. Grupowanie niektóre wolne bloki zapełnione są w całości indeksami innych wolnych bloków, ostatni indeks wskazuje na kolejny blok zapełniony w całości indeksami. Zliczanie wykaz wolnych bloków obejmuje indeks pierwszego wolnego bloku oraz liczbę wolnych bloków znajdujących się za nim, stanowiących ciągły obszar. Systemy operacyjne Wykład 6 51/94
Zarządzanie wolną przestrzenią wektor bitowy wektor bitowy w superbloku 00100000001100001010001111000111100 1 7 8 14 15 22 29 21 28 35 Systemy operacyjne Wykład 6 52/94
Zarządzanie wolną przestrzenią lista powiązana indeks pierwszego wolnego bloku 1 7 8 14 15 22 29 21 28 35 Systemy operacyjne Wykład 6 53/94
Zarządzanie wolną przestrzenią indeks bloku pierwszej grupy wolnych bloków grupowanie 1 7 8 14 15 21 22 28 29 35 11 12 17 25 30 31 19 23 24 Systemy operacyjne Wykład 6 54/94
Zarządzanie wolną przestrzenią zliczanie Wykaz wolnych obszarów: 3, 11 12, 17 19, 23 24, 25 26, 30 31, 32 33 1 7 8 14 15 21 22 29 28 35 Systemy operacyjne Wykład 6 55/94
Implementacja katalogu lista liniowa Katalog składa się z ciągu wpisów katalogowych ogólnej postaci: nazwa pliku inne atrybuty Lokalizacja wpisu polega na przeszukiwaniu liniowym (sprawdzane są kolejne pozycje, począwszy od pierwszej). Lokalizacją wpisu można przyspieszyć poprzez posortowanie wg. nazwy, jednak utrzymanie takiej struktury jest kosztowne. Systemy operacyjne Wykład 6 56/94
Implementacja katalogu tablica haszowa Wpisy ułożone są na pozycjach odpowiadających wartościom funkcji haszującej. Funkcja haszująca odwzorowuje nazwę pliku na wartość z określonego przedziału, traktowaną jako indeks wpisu. Ta sama funkcja haszująca wykorzystywana jest do lokalizacji wpisu. W katalogu mogą być potrzebne dodatkowe struktury pomocne przy usuwaniu konfliktów. Systemy operacyjne Wykład 6 57/94
Implementacja katalogu struktura indeksowa Wpisy katalogowe powiązane są w strukturę drzewiastą przyspieszającą wyszukiwanie (np. drzewo binarne, B drzewo, B±drzewo). Lokalizacja wpisu polega na przejściu drzewa zgodnie z zasadami jego budowy. Struktura drzewa jest zoptymalizowana w taki sposób, żeby minimalizować liczbę operacji dyskowych podczas przeszukiwania. Systemy operacyjne Wykład 6 58/94
Przechowywanie podręczne w systemie plików Logiczny system plików Organizacja fizyczna systemu plików Bufor pamięci podręcznej Moduł sterujący Systemy operacyjne Wykład 6 59/94
Zasady przechowywania podręcznego Zawartość aktualnie wykorzystywanych bloków dyskowych utrzymywana jest w podręcznej pamięci buforowej. Obsługa żądania odczytu bloku polega najpierw na sprawdzeniu czy dany blok znajduje się w podręcznej pamięci buforowej, a później ewentualnie sprowadzenia z dysku. Żądany fragment kopiowany jest z podręcznej pamięci buforowej w odpowiednie miejsce w przestrzeni adresowej procesu. Obsługa żądania zapisu oznacza transfer danych do podręcznej pamięci buforowej. Systemy operacyjne Wykład 6 60/94
Przechowywanie podręczne w realizacji operacji odczytu 1. Znajdź adres bloku dyskowego, zawierającego fragment pliku, którego odczytu zażądano. 2. Przekopiuj zawartość tego bloku do bufora w pamięci podręcznej systemu plików (jeśli ten blok się tam jeszcze nie znajduje). 3. Przekopiuj żądany fragment z bufora do przestrzeni adresowej procesu. Systemy operacyjne Wykład 6 61/94
Przechowywanie podręczne w realizacji operacji zapisu 1. Znajdź adres bloku dyskowego, zawierającego fragment pliku, którego zapisu zażądano. 2. Przekopiuj zawartość tego bloku do bufora w pamięci podręcznej systemu plików (jeśli ten blok się tam jeszcze nie znajduje). 3. Przekopiuj żądany fragment z przestrzeni adresowej procesu do bufora. 4. Zapisz na dysk uaktualniony blok z bufora (albo w trybie natychmiastowym albo z opóźnieniem). Systemy operacyjne Wykład 6 62/94
Integralność systemu plików W wyniku awarii systemu zawartość podręcznej pamięci buforowej może nie zostać zapisana na dysku lub może zostać zapisana tylko częściowo. Skutkiem w/w awarii może być pozostawienie systemu plików w stanie niespójnym. Większość systemów operacyjnych dostarcza odpowiednie narzędzie do sprawdzania integralności systemu plików, uruchamiane w ramach restartu systemu po awarii. Systemy operacyjne Wykład 6 63/94
Przejawy braku integralności systemu plików Brak bloku zarówno w wykazie bloków zaalokowanych jak i bloków wolnych. Obecność bloku zarówno w wykazie bloków zaalokowanych jak i bloków wolnych. Wielokrotne powtórzenie się bloku w wykazie bloków wolnych (duplikacja wolnego bloku). Wielokrotne powtórzenie się bloku w wykazie bloków zaalokowanych (duplikacja zaalokowanego bloku). Niespójność informacji we wpisach katalogowych (np. niezgodność licznika dowiązań w systemie UNIX). Systemy operacyjne Wykład 6 64/94
Semantyka spójności Semantyka spójności określa sposób postrzegania zmian zawartości pliku, dokonywanych przez współbieżnie działające procesy. Przykłady semantyki spójności: semantyka spójności systemu UNIX wynik operacji zapisu jest natychmiast widoczny dla innych procesów, semantyka sesji zmiany w pliku stają się widoczne tylko dla procesów, otwierających ten plik po zamknięciu sesji, w której był zapis, semantyka stałych plików dzielonych współdzielony plik może być tylko czytany. Systemy operacyjne Wykład 6 65/94
Synchronizacja dostępu do plików Współbieżny dostęp do zawartości pliku można synchronizować na poziomie całego pliku lub poszczególnych jego fragmentów (zajmowanie rekordów). Najczęściej dopuszcza się dwa rodzaje blokad: blokada współdzielona (shared lock, read lock), blokada wyłączna (exclusive lock, write lock). Systemy operacyjne Wykład 6 66/94
Synchronizacja dostępu do plików zgodność blokad współdziel. wyłączona współdziel. zgodne wykluczone wyłączona wykluczone wykluczone Systemy operacyjne Wykład 6 67/94
System plików przykłady implementacji MS DOS ISO 9660 UNIX NTFS Systemy operacyjne Wykład 6 68/94
Przykłady implementacji systemu plików DOS wpis katalogowy zawiera indeks pierwszej jednostki alokacji, a pozostałe jednostki wynikają z tablicy FAT. ISO 9660 (CD ROM) bloki zorganizowane są wg. zasady przydziału ciągłego, wpis katalogowy zawiera indeks pierwszej jednostki alokacji oraz rozmiar pliku, wpisy katalogowe są posortowane alfabetycznie. UNIX plik opisany jest przez i-węzeł, wpis katalogowy zawiera indeks i-węzła, który z kolei zawiera indeks (kombinowany) jednostek alokacji. NTFS plik identyfikowany jest przez referencję, która jest indeksem rekordu w tablicy MFT, rekord zawiera atrybuty pliku (w szczególności dane) lub odnośniki do bloków z atrybutami. Systemy operacyjne Wykład 6 69/94
MS DOS informacje ogólne Katalog zawiera 32-bajtowe wpisy, obejmujące podstawowe atrybuty pliku (nazwa, typ, rozmiar itp.). Katalogi tworzą strukturę wielopoziomową. Dane znajdują się w blokach (jednostkach alokacji) o ustalonym rozmiarze. Bloki identyfikowane są z pośrednictwem tablicy FAT, a indeks pierwszego bloku znajduje się we wpisie katalogowym. Wolne bloki identyfikowane są poprzez specjalny kod, wpisany na odpowiadających im pozycjach w tablicy FAT. Systemy operacyjne Wykład 6 70/94
MS DOS format partycji blok nadrzędny tablica FAT kopia tablicy FAT katalog główny bloki danych i podkatalogów Systemy operacyjne Wykład 6 71/94
MS DOS struktura wpisu katalogowego nazwa pliku (8 bajtów) FAT 12 FAT 16 typ (3 bajty) flagi (1 bajt) czas data ostatniego zapisu (4 bajty) numer pierwszego bloku (2 bajty) rozmiar w bajtach (4 bajty) Systemy operacyjne Wykład 6 72/94
MS Windows 98 struktura wpisu katalogowego nazwa pliku (8 bajtów) FAT 32 typ (3 bajty) flagi (1 bajt) czas data utworzenia pliku (4 bajty) data ostatniego dostępu bardziej znaczące 16 bitów numeru pierwszego bloku (2 bajty) czas data ostatniego zapisu (4 bajty) mniej znaczące 16 bitów numeru pierwszego bloku (2 bajty) rozmiar w bajtach (4 bajty) Systemy operacyjne Wykład 6 73/94
ISO 9660 informacje ogólne Dane na płycie CD nie są rozkładane w cylindrach, lecz tworzą układ spiralny. Spirala dzielona jest na bloki logiczne (sektory) o rozmiarze 2352 bajtów (w tym preambuły, kody korekcyjne itp.), z czego na dane pozostaje 2048 bajtów. Binarne pola numeryczne są reprezentowane podwójnie: zgodnie z uporządkowaniem grubokońcówkowym oraz cienkokońcówkowym. Maksymalny poziom zagnieżdżeń katalogów 8. Systemy operacyjne Wykład 6 74/94
ISO 9660 format partycji 16 bloków do dowolnego wykorzystania deskryptor głównego wolumenu wpis katalogowy korzenia drzewa katalogów bloki danych i katalogów Systemy operacyjne Wykład 6 75/94
ISO 9660 struktura wpisu katalogowego lokalizacja pierwszego bloku (8 bajtów) wielkość rozszerzenia atrybutów (1 bajt) wielkość wpisu katalogowego w bajtach (1 bajt) rozmiar (8 bajtów) data i czas (7 bajtów) flagi (1 bajt) nr CD z lokalizacją (4 bajty) długość nazwy (1 bajt) nazwa (4 15 bajtów) rozszerzenia Systemy operacyjne Wykład 6 76/94
UNIX informacje ogólne Z każdym plikiem związany jest i-węzeł, który przechowuje wszystkie atrybuty pliku z wyjątkiem nazwy. Nazwa znajduje się w katalogu obok numeru i-węzła danego pliku. Katalogi tworzą strukturę wielopoziomową (katalog zawiera wpis specyfikujący inny katalog). Dane (zawartość pliku) znajdują się w blokach (jednostkach alokacji) o ustalonym rozmiarze. Bloki danych identyfikowane są za pośrednictwem indeksu kombinowanego. Wolne bloki zorganizowane są zgodnie z zasadą grupowania. Systemy operacyjne Wykład 6 77/94
UNIX format partycji blok nadrzędny tablica i-węzłów bloki danych Systemy operacyjne Wykład 6 78/94
UNIX fizyczna struktura pliku Atrybuty: id właściciela i grupy typ pliku prawa dostępu czasy dostępu licznik dowiązań rozmiar w bajtach Systemy operacyjne Wykład 6 79/94
UNIX struktura wpisu katalogowego nazwa pliku (14 bajtów) numer i-wezła (2 bajty) Systemy operacyjne Wykład 6 80/94
NTFS informacje ogólne Plik jest zbiorem atrybutów, obejmującym w szczególności atrybut dane. Każdy plik ma swój wpis (rekord) w głównej tablicy plików (MFT), a indeks w tej tablicy jest składnikiem identyfikatora wewnętrznego (referencji pliku). Tablica MFT sama jest plikiem, podobnie jak każdy inny obiekt w obrębie systemu plików. Wolne bloki identyfikowane są przez wektor bitowy, przechowywany w jednym z plików. Systemy operacyjne Wykład 6 81/94
NTFS format partycji blok nadrzędny MFT strefa MFT bloki danych kopia 16 pierwszych rekordów MFT bloki danych Systemy operacyjne Wykład 6 82/94
NTFS struktura rekordu MFT Rekord MFT ma ustalony rozmiar 1KB 4KB. Rekord MFT składa się z nagłówka rekordu i tabeli atrybutów. Atrybut składa się z nagłówka atrybutu oraz wartości. Wartość znajduje się albo bezpośrednio w rekordzie MFT (atrybut rezydentny), albo w bloku danych. nagłówek rekordu MFT nagłówek atrybutu nagłówek atrybutu wartość atrybutu wartość atrybutu Systemy operacyjne Wykład 6 83/94
NTFS zawartość nagłówka rekordu Magiczna liczba wartość używana do sprawdzania poprawności. Numer sekwencyjny wartość zwiększana o 1 za każdym razem, gdy rekord używany jest dla nowego pliku. Liczba odniesień do pliku. Liczba wykorzystywanych bajtów przez rekord. Identyfikator rekordu bazowego (referencja) w przypadku rekordu rozszerzeń. Systemy operacyjne Wykład 6 84/94
NTFS zawartość nagłówka atrybutu Identyfikator atrybutu (typ i opcjonalna nazwa). Długość wartości atrybutu w bajtach. Lokalizacja wartości atrybutu. Flagi. Systemy operacyjne Wykład 6 85/94
NTFS wybrane atrybuty pliku Informacje standardowe ($STANDARD_INFORMATION). Nazwa pliku ($FILE_NAME). Dane ($DATA). Korzeń indeksu ($INDEX_ROOT). Alokacja indeksu ($INDEX_ALLOCATION). Mapa bitowa indeksu ($BITMAP). Lista atrybutów ($ATTRIBUTE_LIST). Systemy operacyjne Wykład 6 86/94
NTFS identyfikacja rekordu MFT Rekord MFT i tym samym plik identyfikowany jest wewnętrznie przez 64-bitową referencję. 48 mniej znaczących bitów referencji jest numerem rekordu w tablicy MFT. 16 bardziej znaczących bitów referencji jest numerem sekwencyjnym zwiększanym o 1 po każdym przydzieleniu rekordu do nowo utworzonego pliku, co zapobiega błędnym odwołaniom do plików z użyciem zdezaktualizowanych referencji. numer sekwencyjny numer rekordu MFT Systemy operacyjne Wykład 6 87/94
NTFS rekord bazowy Jeśli lista atrybutów pliku nie mieści się w jednym rekordzie MFT, do pliku przydzielane są dodatkowe rekordy. Pierwszy rekord MFT nazywany jest bazowym (lub podstawowym). Dodatkowe rekordy MFT danego pliku określane są jako rekordy rozszerzeń. Identyfikacja atrybutów, umieszczonych w rekordach rozszerzeń, znajduje się w atrybucie lista atrybutów, znajdującym się w rekordzie bazowym. Systemy operacyjne Wykład 6 88/94
Implementacja atrybutu dane nagłówek rekordu MFT nagłówek rekordu MFT zakres bloków objętych opisem nagłówek info. std. nagłówek nazwy nagłówek danych mały plik informacje standard. nazwa pliku dane nagłówek info. std. nagłówek nazwy nagłówek danych duży plik informacje standard. nazwa pliku informacje o blokach indeks pierwszego bloku i liczba bloków w przebiegu nagłówek listy przebiegów opis przebiegu 1 opis przebiegu 2... opis przebiegu n Systemy operacyjne Wykład 6 89/94
Implementacja atrybutu dane nagłówek rekordu MFT nagłówek info. std. nagłówek nazwy nagłówek listy atryb. nagłówek danych informacje standard. nazwa pliku id atryb. dane id atryb. dane informacje o blokach bardzo duży plik (pofragmentowany) nagłówek listy przebiegów opis przebiegu 1... opis przebiegu k nagłówek rekordu MFT nagłówek info. std. informacje standard. nagłówek rekordu MFT nagłówek info. std. informacje standard. nagłówek listy przebiegów opis przeb. k+1 Systemy operacyjne Wykład 6 90/94... opis przeb. m nagłówek listy przebiegów opis przeb. m+1... opis przeb. n
NTFS katalogi Katalog zawiera sekwencję wpisów (rekordów), z których każdy odpowiada jednemu plikowi i obejmuje jego następujące atrybuty: referencja pliku, nazwa (wraz z długością), rozmiar, czasy dostępów. Implementacja dużych katalogów oparta jest na strukturze indeksowej (B±drzewo). Systemy operacyjne Wykład 6 91/94
Implementacja katalogu nagłówek rekordu MFT nagłówek info. std. nagłówek nazwy nagłówek korzenia informacje standard. nazwa katalogu korzeń indeksu mały katalog wpis 1 wpis 2 wpis 3... wpis n nazwa referencja rozmiar czasy Systemy operacyjne Wykład 6 92/94
Implementacja katalogu nagłówek rekordu MFT nagłówek info. std. nagłówek nazwy nagłówek korzenia nagłówek alok. ind. nagłówek mapy bit. informacje standard. nazwa katalogu korzeń indeksu alokacja indeksu mapa bit. indeksu duży katalog nazwa wraz z długością nazwa wraz z długością VCN 0 nazwa 1 VCN 1 nazwa 2 VCN 2 nazwa 3... VCN n VCN 00 nazwa 01 VCN 01 nazwa 02 VCN 02 Systemy operacyjne Wykład 6 93/94... VCN 10 nazwa 11 VCN 11... nazwa referencja rozmiar czasy wpis 1 wpis 2 wpis 3 wpis 4 wpis 5... wpis k wpis k+1 wpis k+2...
NTFS wybrane pliki metadanych $MFT główna tablica plików $MTFMIRR kopia MFT $LOGFILE plik dziennika $VOLUME plik wolumenu $DEFATTR definicja atrybutów plików $ katalog główny (korzeń drzewa) $BITMAP wektor bitowy (informacja o wolnych/zajętych blokach) Systemy operacyjne Wykład 6 94/94