Interfejs systemu plików
Plik - logiczna (abstrakcyjna) jednostka przechowywania informacji, nazwany zbiór powiązanych ze sobą informacji, ciąg bitów, bajtów, wierszy lub rekordów (ogólnie); za pomocą s.o. pliki są odwzorowywane na urządzeniach fizycznych (nieulotnych).
Implementacje za pomocą struktur warstwowych lub modularnych: niższe poziomy obsługują fizyczne urządzenia, wyższe na symbolicznych nazwach, dotyczą logicznych własności, pośrednie poziomy odwzorowują logiczne koncepcje na właściwości urządzeń.
Organizacja systemu plików : jak system plików widzi użytkownik (def. pliku, atrybuty, dozwolone operacje, struktura katalogowa) / algorytmy i struktury danych do odwzorowania logicznego systemu plików na fizyczne urządzenia. Różne poziomy:
Programy użytkowe
Logiczny system plików - katalogi, nazwy symboliczne, ochrona
Moduł organizacji pliku - tłumaczy nazwy symboliczne na adresy fizyczne
Podstawowy system plików - wydaje ogólne instrukcje sterowaniu
Sterowanie we/wy - polecenia kontrolerowi
Urządzenia
Atrybuty pliku: nazwa (dla użytkownika najważniejsza!); inne atrybuty:
Typ; położenie (wskaźnik do urządzenia i położenia na nim), rozmiar, ochrona, czas, data, właściciel,...
Informacje o plikach są przechowywane w strukturze katalogowej.
Operacje plikowe (podstawowe):
Tworzenie (wolne miejsce, wpis do katalogu)
Zapisywanie (przez funkcję systemową: nazwa, co, skąd wskaźnik)
Czytanie (nazwa, skąd, gdzie umieścić informacje wskaźnik)
Zmiana pozycji (przeszukiwanie)
Usuwanie
Skracanie
Dodatkowe: dopisywanie, przemianowywanie, pobieranie, określanie atrybutów.
Wymaga to przeszukiwania katalogu (zapisanego na dysku), zatem zazwyczaj plik się otwiera tablica otwartych plików, na koniec zamknięcie pliku (usunięcie z tablicy).
Typy plików - przez nazwę+rozszerzenie, UNIX-liczba magiczna (z grubsza typ).
Struktura pliku - różnie, systemy obsługują dane struktury (Windows), Unix-ciąg 8bitowych bajtów (elastyczne, ale mało pomocne).
Struktura wewnętrzna: trudno znaleźć coś wewnątrz pliku, np. rekordy / zapisywanie plików blokami o stałej długości na dysku. Zawsze problem fragmentacji wewnętrznej.
Metody dostępu:
Sekwencyjny (informacje przetwarzane po kolei)
Bezpośredni (plik z rekordów logicznych o stałej długości jak do tablicy)
Struktura katalogowa
Podział na strefy (partycje, minidyski, voluminy) - dysk na kilka, 1:1, kilka dysków w 1.
W strefie katalog urządzenia (nazwa, położenie, rozmiar, typ...). Katalog jako tablica symboli tłumaczącą nazwy plików na ich wpisy katalogowe można to różnie zrobić!
Operacje: odnajdywanie pliku, tworzenie, usuwanie, wyświetlanie katalogu, przemianowywanie pliku, obchód systemu plików (wyświetlenie całej listy rekursywnie).
katalog jednopoziomowy: wszystkie pliki w tym samym katalogu
dwupoziomowy, np. dla wielu użytkowników każdy ma swój
katalogi o strukturach drzewiastych (najczęściej): usuwanie katalogów
acykliczne grafy katalogów - linki symboliczne / twarde, licznik dowiązań,
plik o wielu nazwach (jak go uwzględniać), usuwanie plików
graf ogólny katalogów - cykle problemy
Ochrona:
przed fizycznym uszkodzeniem - kopie zapasowe
przed niewłaściwym dostępem
rodzaje dostępu: kontrola : pozwolenie / zakaz:
czytanie / pisanie / wykonywanie / dopisywanie / usuwanie / opisywanie (atrybuty)
kopiowanie może być jako ciąg czytania.
Najczęściej: uzależnienie dostępu od identyfikacji użytkownika.
Najogólniej: skojarzenie z każdym plikiem wykazu dostępów (ale one mogą być długie i kłopotliwe) zagęszczenie: właściciel / grupa albo zespół roboczy / reszta (Unix)
Inaczej: hasła
Inaczej: dla każdego użytkownika lista praw dostępu
Budowa dysku: dysk o nieruchomych głowicach / ruchomych. 1 / wiele dysków. Obie powierzchnie, zwiększanie gęstości zapisu (głowica na poduszce powietrznej). Dyski elastyczne - twarda powierzchnia, głowica jedzie na niej. Napęd / sterownik. Cylinder - ścieżki na jednym napędzie. Informacja na ścieżce zapisana sektorami: o stałej / zmiennej długości (przerwy międzyblokowe)-trudniej. Zawsze odczyt i zapis blokami informacji: głowice są przesuwane na właściwą ścieżkę (czas przeszukiwania), elektronicznie przełączane na właściwą powierzchnię, czekają (czas oczekiwania) na przejście potrzebnego sektora pod głowicami. Adresowanie poszczególnych sektorów wymaga podania numeru ścieżki (lub cylindra), numeru powierzchni i sektora trójwymiarowa tablica sektorów, a system traktuje go jako jednowymiarową tablicę bloków dyskowych (blok = sektor).
Cechy dysków:
informacje można uaktualniać bez zmiany miejsca (przeczytać blok, zmienić go i zapisać w tym samym miejscu)
dowolny blok można zaadresować bezpośrednio: sekwencyjny albo swobodny dostęp do dowolnego pliku jest łatwy
Aby utworzyć nowy plik, program użytkowy wywołuje logiczny system plików, zna on format katalogów, czyta odp. katalog do RAM, uaktualnia go nowym wpisem i zapis na dysk. UNIX traktuje katalogi jak pliki, Windows NT inaczej. Po utworzeniu pliku można go używać, przed każdą operacją: znaleźć w katalogu, wczytać parametry, lokalozować bloki danych itd... ale to czasochłonne! otworzyć plik tj. odnaleźć wpis katalogowy, przechować w RAM w tablicy otwartych plików, dla programu indeks do tablicy (a nie nazwa symboliczna): deskryktor pliku (Unix) / uchwyt pliku (NT) / blok kontrolny pliku. Do zamknięcia wszystko z użyciem tablicy otwartych plików. Po zamknięciu przez wszystkich zapis na dysk. Montowanie systemu plików: jak plik trzeba otworzyć tak system plików zamontować, zanim będzie dostępny.
Metody przydziału miejsca na dysku: ciągła / listowa / indeksowa.
Aby efektywnie gospodarować przestrzenią i szybki dostęp.
Przydział ciągły - każdy plik musi zajmować ciąg kolejnych bloków na dysku (efektywne przy przeszukiwaniu, bo minimalne ruchy głowic). Ale trudno znajdować miejsce na nowy plik można tak jak dynamiczny przydział pamięci wg wolnych dziur: problemy usuwane przez okresowe upakowywanie (problem fragmentacji zewn.). Ale długość pliku w momencie tworzenia też nie zawsze jest znana (dać z nadmiarem - jakim? Fragmentacja wewnętrzna).
Przydział listowy - plik stanowi listę powiązanych ze sobą bloków dyskowych gdziekolwiek na dysku, katalog ma wskaźniki na 1. i ostatni. (rys niżej).
W miarę efektywne dla dostępu sekwencyjnego, mało odporne na błędy; marnotrawstwo miejsca (ok. 1% na wskaźniki --> grona (klastry) - po kilka bloków --> wewn. fragmentacja).
Odmiana: tablica przydziału plików (FAT) - na dysku wydziela się sekcję zawierającą tablicę: po jednej pozycji dla każdego bloku i indeksowana za pomocą numerów bloków; używanie podobnie jak listy powiązań: katalog zawiera numer pierwszego bloku pliku, pozycja indeksowana przez numer tego bloku zawiera numer następnego bloku...aż do ostatniego, gdzie specjalny symbol końca pliku; bloki nieużywane = 0. Przydzielenie nowego: pierwsza =0 pozycja i zastąpienie jej końcem, DOS. Jeśli FATa nie trzymamy w cache, to dość wolno. Szybki dostęp swobodny.
Przydział indeksowy - skupienie wskaźników w jednym miejscu - bloku indeksowym, który jest w każdym pliku (Unix), jest to tablica adresów bloków dyskowych. Pozycja i-ta w bloku indeksowym wskazuje na i-ty blok danego pliku, katalog zawiera adres bloku indeksowanego, przy tworzeniu wszystkie wskaźniki są nil, gdy i-ty blok po raz 1. zapisywany, to bierze się go od zarządcy wolnych, a jego adres w i-tej pozycji bloku indeksowanego.
Dostęp bezpośredni bez zewn. fragmentacji, ale marnowanie powierzchni, bo wskaźniki bloku indeksowego dużo miejsca na pusto blokują małe bloki indeksowe, ale jak za mały?:
schemat listowy: blok indeksowy zwykle w jednym, ale jak więcej to połączyć - ostatni albo nil albo wskaźnik za następny blok indeksowy
indeks wielopoziomowy: blok indeksowy 1. poziomu ma wskaźniki na bloki indeksowe 2.
Kombinowany: pierwsze np.15 wskaźników bloku indeksowanego w i-węźle: pierwsze 12 na bloki bezpośrednie (jak blok 4KB, to można do 48KB plik), następne na bloki pośrednie (4 bajtowe wskaźniki do 4GB).
Niezawodność dysków:
Paskowanie dysków (disk stripping) - przeplot: grupa dysków jako jeden: każdy blok danych jest podzielony na kilka podbloków (każdy na innym dysku) - odczyt szybszy (synchronizacja obrotów) RAID. Redundancja danych : mirroring, przeplatanie bloków parzystości. Odczyt szybszy, ale zapis wolniejszy. Tańsze dyski do odpowiedzialnych zadań.
Pamięć trzeciorzędna - taśmy, CD-R, CD-RW, dyskietki, zipy.
3