System plików System plików struktura danych organizująca i porządkująca zasoby pamięci masowych w SO. Struktura ta ma charakter hierarchiczny: urządzenia fizyczne strefy (partycje) woluminy (w UNIXie: systemy plików) katalogi pliki System plików w większości systemów operacyjnych ma charakter drzewa W systemach operacyjnych ogólnego zastosowania plik jest nieinterpretowanym strumieniem danych. W takich systemach podział pliku na rekordy stałej czy zmiennej długości jest sprawą aplikacji (programu użytkownika). W niektórych SO, np. VMS czy systemach IBM do zastosowań biznesowych system operacyjny wspiera interpretację plików np. utrzymując indeksy plików czy wspierając rekordy zmiennej długości. Plik opisywany jest szeregiem atrybutów: o (nazwa) o (lokalizacja w strukturze logicznej systemu plików) o właściciel o rozmiar o prawa dostępu o informacje o modyfikacji i użyciu o krotność występowania o (typ pliku) o lokalizacja bloków pliku w pamięci masowej Warstwowy model systemu plików urządzenia sterowanie wejściem-wyjściem - sterowniki urządzeń podstawowy system plików - zarządzanie obszarem dyskowym - bloki fizyczne) moduł organizacji pliku - organizuje strukturę logiczną pliku, przydziela bloki, tłumaczy adresy logiczne na fizyczne logiczny system plików - organizuje strukturę katalogową programy użytkowe
Fizyczna realizacja elementów systemu plików System plików jest ciągiem bloków o określonej i stałej wielkości (zwykle wielokrotność 512b ), niekiedy bloki utożsamiane są z jednostkami organizacji fizycznej dysku (sektory) Plik jest ciągiem przydzielonych mu bloków, Fizyczny rozmiar pliku jest zawsze wielokrotnością bloku pomimo, że rozmiar faktycznie zapisanych w pliku danych (rozmiar logiczny) może być dowolny, W przypadku małych plików (o rozmiarach logicznych poniżej wielkości bloku) dochodzi do zjawiska fragmentacji wewnętrznej, Kolejne bloki pliku nie muszą być sąsiednimi blokami na urządzeniu fizycznym (fragmentacja zewnętrzna plików) Sposoby wiązania zbioru bloków w plik - kolejne bloki pliku mogą: być zapisane w odpowiednich tablicach - przydział indeksowy (np. UNIX) tworzyć listę (przydział listowy) o problem dostępu sekwencyjnego, o problem niezawodności
tworzyć spójny obszar na urządzeniu - przydział ciągły; obecnie rzadko stosowany, jedynie w odniesieniu do niektórych nośników fizycznych, np. CD- ROM, uniemożliwia swobodne rozszerzanie pliku Szczególnym sposobem implementacji zapisu listowego jest struktura FAT stosowana w DOS i wcześniejszych wersjach Windows
Fragmentacja zewnętrzna zmniejsza efektywność dostępu do plików, ale umożliwia ich swobodne rozszerzanie. Przykładowy układ bloków w systemie plików UNIXa: blok systemowy (zwykle zawiera program ładujący SO) blok informacyjny (wielkość systemu plików, maksymalna ilość plików. ilość bloków wolnych. listy podręczne itp.) lista bloków opisujących pliki (tzw. i-węzły) bloki danych Pamięć podręczna systemu plików: optymalizuje dostęp do plików zmniejszając liczbę czasochłonnych operacji na urządzeniu fizycznym, zakłada się, że pewna liczba bloków przechowywana jest w pamięci zmodyfikowany blok zapisywany jest z opóźnieniem (oszczędność gdy raz zapisane informacje są następnie wielokrotnie odczytywane)
przy odczycie z urządzenia fizycznego możliwy jest odczyt z wyprzedzeniem (oszczędność jeśli pomiędzy kolejnymi sekwencyjnymi odczytami następuje repozycjonowanie głowicy), z każdym blokiem w pamięci należy związać znacznik określający czy blok został zmodyfikowany przed ponownym użyciem zmodyfikowane bloki muszą być zapisane Struktura pliku w systemie plików w SO UNIX: każdy plik posiada opisujący go blok opisu (i-węzeł), i-węzeł oprócz wymienionych poprzednio atrybutów zawiera krótka tablicę indeksów bloków danych pliku - długość tablicy określona jest wielkością bloku, jeśli rozmiary tablicy bloków w i-węźle nie są wystarczające do pomieszczenia indeksów wszystkich bloków danych to tworzone są kolejne bloki (tzw. bloki pośrednie) zawierające indeksy bloków danych, struktura ta może być wielopoziomowa (do 3 poziomów w UNIXie)
może okazać się, że w pewnych zakresach pozycji brak jest danych (w wyniku wykonywania operacji pozycjonowania i zapisu) - w takim przypadku odpowiedni blok danych może wcale nie być zaalokowany do pliku Współdzielenie dostępu do plików: ten sam plik może być równocześnie otwarty przez wiele procesów, przy otwieraniu pliku procesy określają w jakim trybie współdzielenie plik ma być otwarty współdzielony, wyłączny lub z możliwością blokowania fragmentów; prowadzi to do dwóch trybów blokowania: o blokowanie całych plików, o blokowanie poszczególnych bloków. Każdy blok może być zablokowany przez program, który uzyskał do niego dostęp. Blokowanie może dotyczyć: o bloku opisu pliku (i-węzła) - blokowany jest cały plik, o bloku danych - blokowany jest fragment pliku.
Katalogi: Katalog jest jednostką grupującą pliki Pliki mogą być o zwykłe (fizyczne obszary w pamięci masowej do przechowywania informacji) o specjalne (np. urządzenia widziane jak pliki: porty szeregowy i równoległy, kanał komunikacyjny itp), o w katalogu jako plik może też wystąpić tzw. dowiązanie Katalogi są specjalnym rodzajem pliku, który zawiera nazwy plików oraz indeksy ich bloków opisujących (i-węzłów w UNIXie), Nazwy plików mogą być ograniczonej długości, co upraszcza konstrukcję katalogu (np. DOS, System V) Wiele pozycji (w tym samym lub różnych katalogach) może wskazywać na ten sam blok opisujący plik. Mamy wówczas do czynienia z tzw. dowiązaniem (ang. link). W Windows dowiązaniem jest tzw. skrót.
Operacje na plikach tworzenie zapisywanie (nadpisywanie, dopisywanie) odczytywanie pozycjonowanie usuwanie skracanie Obsługa operacji plikowych systemowa tablica otwartych plików tablica otwartych plików procesu w niektórych SO wielkość tablicy otwartych plików może być ograniczona W UNIXie korzysta się ze struktury trójpoziomowej
Proces w momencie otwarcia pliku uzyskuje tzw. uchwyt (handle) za pomocą którego odwołuje się do pliku. Uchwyt jest indeksem w odpowiedniej tablicy deskryptorów plików W większości SO istnieją pliki wirtualne stowarzyszane z działającym procesem: o standardowe wejście o standardowe wyjście, o standardowe wyjście błędów. Zwykle tym plikom wirtualnym odpowiadają zarezerwowane indeksy w tablicy deskryptorów Montowanie systemu plików Montowanie - wstawienie jednego systemu plików we wskazanym miejscu (katalogu) innego systemu plików. W SO UNIX operacja montowania pozwala utworzyć jednorodny logiczny system plików zawierający wszystkie dołączone urządzenia fizyczne Montowanie może odbywać się: o o automatycznie przy starcie systemu, na zlecenie np. przy wymianie nośników wymiennych (dyskietki, CD- ROMy)