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 Systemy operacyjne rekord logiczny Wykład 6 rekord logiczny obszar niewykorzystany 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 Maria, mgr Igrekowska Zetowski Jerzy, dr • • • • • • Zetowski Iksiński Wojciech, prof. plik indeksowy Systemy operacyjne plik stowarzyszony 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 Systemy operacyjne plik 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 Systemy operacyjne plik 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 Systemy operacyjne plik 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 Systemy operacyjne plik 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 katalog urządzenia dysk 1 katalog urządzenia Systemy operacyjne pliki dysk 2 strefa B katalog urządzenia strefa pliki dysk strefa A Podział na strefy pliki 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 Systemy operacyjne test.txt f.lst Wykład 6 sample.h 31/94 Struktura dwupoziomowa jacek prg.c Systemy operacyjne anna test.txt prg.c Wykład 6 sample.h 32/94 Struktura drzewiasta jacek programy prg.c prog.c Systemy operacyjne anna teksty programy abc.doc Wykład 6 prg.c s.txt sample.h 33/94 Graf acykliczny jacek teksty plik.txt Systemy operacyjne anna jacek prg1.c prg.c Wykład 6 readme sample.h 34/94 Graf ogólny teksty pisma plik.txt Systemy operacyjne poczta list2.txt s.doc list1.txt 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 Systemy operacyjne blok początkowy: 1 rozmiar: 10 bloków blok początkowy: 13 rozmiar: 11 bloków blok początkowy: 27 rozmiar: 9 bloków 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 Systemy operacyjne blok początkowy: 1 blok końcowy: 8 blok początkowy: 22 blok końcowy: 14 blok początkowy: 7 blok końcowy: 4 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 2 3 3 28 4 # 5 6 1 7 8 14 15 21 7 35 8 # 22 28 … 29 35 Systemy operacyjne 27 8 28 27 Wykład 6 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 44/94 Przydział indeksowy Katalog: 1 7 8 14 15 21 22 28 29 35 Systemy operacyjne blok indeksowy: 4 rozmiar: 4 bloki blok początkowy: 23 rozmiar: 3 bloki blok początkowy: 7 rozmiar: 4 bloki 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 … … Systemy operacyjne … … blok danych Wykład 6 … blok indeksowy 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 Systemy operacyjne 1 7 8 14 15 21 22 28 29 35 Wykład 6 52/94 Zarządzanie wolną przestrzenią — lista powiązana indeks pierwszego wolnego bloku Systemy operacyjne 1 7 8 14 15 21 22 28 29 35 Wykład 6 53/94 Zarządzanie wolną przestrzenią — grupowanie indeks bloku pierwszej grupy wolnych bloków 11 12 17 Systemy operacyjne 1 7 8 14 15 21 22 28 29 35 Wykład 6 19 23 24 25 30 31 54/94 Zarządzanie wolną przestrzenią — zliczanie Wykaz wolnych obszarów: 3, 11 12, 17 19, 23 24, 25 26, 30 31, 32 33 Systemy operacyjne 1 7 8 14 15 21 22 28 29 35 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 Systemy operacyjne współdziel. wyłączona zgodne wykluczone wykluczone wykluczone Wykład 6 67/94 System plików – przykłady implementacji • • • • Systemy operacyjne MS DOS ISO 9660 UNIX NTFS 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) typ (3 bajty) flagi (1 bajt) czas data ostatniego zapisu (4 bajty) numer pierwszego bloku (2 bajty) FAT 12 FAT 16 Systemy operacyjne rozmiar w bajtach (4 bajty) Wykład 6 72/94 MS Windows 98 — struktura wpisu katalogowego nazwa pliku (8 bajtów) typ (3 bajty) czas data utworzenia pliku (4 bajty) flagi (1 bajt) FAT 32 Systemy operacyjne data ostatniego dostępu Wykład 6 czas data ostatniego zapisu (4 bajty) bardziej znaczące 16 bitów numeru pierwszego bloku (2 bajty) rozmiar w bajtach (4 bajty) mniej znaczące 16 bitów numeru pierwszego bloku (2 bajty) 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) rozmiar (8 bajtów) data i czas (7 bajtów) flagi (1 bajt) wielkość rozszerzenia atrybutów (1 bajt) wielkość wpisu katalogowego w bajtach (1 bajt) Systemy operacyjne nr CD z nazwa lokalizacją (4 – 15 (4 bajty) bajtów) długość nazwy (1 bajt) rozszerzenia 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 … … Atrybuty: id właściciela i grupy typ pliku prawa dostępu czasy dostępu licznik dowiązań rozmiar w bajtach … UNIX — fizyczna struktura pliku … … … 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 nagłówek bezpośrednio w rekordzie rekordu MFT MFT (atrybut rezydentny), nagłówek wartość atrybutu atrybutu albo w bloku danych. wartość atrybutu … nagłówek 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 Systemy operacyjne numer rekordu MFT 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 nagłówek informacje info. std. standard. nagłówek informacje info. std. standard. nagłówek nazwy nazwa pliku nagłówek nazwy nagłówek danych dane mały plik nazwa pliku nagłówek informacje danych o blokach duży plik zakres bloków objętych opisem nagłówek listy przebiegów opis przebiegu 1 opis przebiegu 2 . . . indeks pierwszego bloku i liczba bloków w przebiegu Systemy operacyjne Wykład 6 opis przebiegu n 89/94 Implementacja atrybutu dane nagłówek rekordu MFT nagłówek informacje info. std. standard. nagłówek nazwy nagłówek listy atryb. nazwa pliku id atryb. dane id atryb. dane nagłówek informacje danych o blokach bardzo duży plik (pofragmentowany) Systemy operacyjne nagłówek rekordu MFT nagłówek listy przebiegów nagłówek informacje info. std. standard. opis przeb. k+1 nagłówek rekordu MFT nagłówek informacje info. std. standard. . . . opis przeb. m nagłówek listy przebiegów nagłówek listy przebiegów opis przebiegu 1 opis przeb. m+1 . . . . . . opis przebiegu k opis przeb. n Wykład 6 90/94 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 nazwa referencja rozmiar czasy nagłówek rekordu MFT nagłówek informacje info. std. standard. nagłówek nazwa nazwy katalogu wpis 1 nagłówek korzenia wpis 2 korzeń indeksu wpis 3 mały katalog . . . wpis n Systemy operacyjne Wykład 6 92/94 Implementacja katalogu nagłówek informacje info. std. standard. nagłówek nazwa nazwy katalogu nagłówek korzenia korzeń indeksu nagłówek alok. ind. alokacja indeksu nagłówek mapa bit. mapy bit. indeksu duży katalog nazwa wraz z długością Systemy operacyjne nazwa wraz z długością VCN 0 nazwa 1 VCN 00 wpis 1 nazwa 01 wpis 2 VCN 01 wpis 3 nazwa 02 wpis 4 VCN 02 wpis 5 . . . VCN 1 nazwa 2 … . . . VCN 2 nazwa 3 . . . VCN 10 wpis k nazwa 11 wpis k+1 VCN 11 wpis k+2 . . nazwa referencja . VCN n Wykład 6 … nagłówek rekordu MFT rozmiar czasy . . . 93/94 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