• Nie Znaleziono Wyników

Cele i zadania systemu plików

6. SYSTEMY PLIKÓW

6.1. Cele i zadania systemu plików

Pod pojęciem pliku rozumiemy nazwany obszar pamięci zewnętrznej, do którego można zapisywać dane oraz je odczytywać. Do podstawowych cech plików należy zaliczyć:

 długotrwałe i pewne przechowywanie danych,

 jednoczesne korzystanie z danych przez wiele aplikacji oraz wielu użytkowników.

Użytkownicy oraz aplikacje posiadają możliwości wykonywania szeregu operacji na plikach oraz katalogach, a mianowicie: tworzenie, usuwanie, odczyt oraz modyfikacja danych. Plik zostaje utworzony przez jednego użytkownika (właściciela pliku), jednak mogą z niego korzystać wszyscy użytkownicy w ramach uprawnień przydzielonych przez właściciela. Wszystkie te operacje w systemie operacyjnym realizuje system plików.

W skład systemu plików wchodzą:

 zbiór wszystkich plików w pamięci masowej,

 zbiór struktur danych wykorzystywanych do zarządzania plikami, takich jak: katalogi, deskryptory plików, tablice zawierające informacje o aktualnie wolnych oraz zajętych obszarach dysków,

 zbiór programów systemowych realizujących poszczególne operacje na plikach, takich jak: tworzenie, usuwanie, odczyt, zapis, nadanie nazwy czy poszukiwanie pliku.

System plików udostępnia programom użytkowym zbiór podstawowych operacji na abstrakcyjnym obiekcie, jakim jest plik. Przy tym programista powinien być zwolniony z konieczności zajmowania się szczegółami, takimi jak rozmieszczenie pliku na poszczególnych powierzchniach, ścieżkach i sektorach pamięci dyskowej, buforowanie danych oraz inne niskopoziomowe operacje przesyłania danych. Wszystkie te operacje system plików powinien wykonywać samodzielnie. W ten sposób pełni on rolę pośredniej warstwy, ukrywającej wszystkie szczegóły związane z fizyczną organizacją pamięci masowej, tworzy prosty model logiczny tej pamięci oraz udostępnia dla programów zbiór funkcji pozwalających na manipulowanie plikami.

Zadania realizowane przez system plików są ściśle uzależnione od logicznej organizacji systemu komputerowego. W jednozadaniowym, jednostanowiskowym systemie operacyjnym (np. MS-DOS) system plików realizuje następujące zadania:

 identyfikacja plików poprzez nazwy,

 realizacja interfejsu programowego dla programów użytkowych,

 przeniesienie logicznego modelu systemu plików na fizyczną organizację pamięci masowej,

 zapewnienie odporności systemu plików na zaniki napięcia zasilania oraz błędne funkcjonowanie sprzętu i oprogramowania.

Zadania systemu plików komplikują się w wielozadaniowych, jednostanowiskowych systemach operacyjnych, które mimo że są przeznaczone dla jednego użytkownika, dają mu możliwość jednoczesnego uruchomienia wielu aplikacji, które mogą wykorzystywać wspólne pliki. W takim przypadku plik staje się zasobem współdzielonym, a system operacyjny musi rozwiązywać wiele z tym związanych problemów. W szczególności, w systemie plików muszą być przewidziane środki blokowania całych oraz części plików, zapobiegania wyścigom, wykluczania blokad itp.

W wielozadaniowych systemach operacyjnych pojawia się jeszcze jedno zadanie: ochrona plików jednego użytkownika przed nieupoważnionymi operacjami innych użytkowników, natomiast w sieciowych systemach operacyjnych powstaje wiele nowych zadań omówionych szczegółowo w rozdziale 8.

6.1.1. Rodzaje plików

Systemy plików obsługują różne typy plików, do których można zaliczyć: pliki zwykłe, katalogowe (katalogi), specjalne, potoki nazwane, dowiązania symboliczne itp.

Pliki zwykłe lub po prostu pliki, zawierają dowolne dane. Większość

współczesnych systemów operacyjnych (UNIX, Windows, OS) nie wprowadza ograniczeń i nie kontroluje ani zawartości, ani struktury plików zwykłych. Zawartość pliku zwykłego jest określona przez aplikację współpracującą z plikiem. Głównymi plikami zwykłymi są pliki tekstowe, zawierające zbiory bajtów reprezentujących znaki alfanumeryczne; pliki binarne, zawierające bajty danych, którym nie przypisuje się żadnego znaczenia, a także szczególny rodzaj plików binarnych – pliki wykonywalne, zawierające obrazy procesów.

Katalogi (pliki katalogowe) – to szczególny rodzaj plików zawierających

informacje o plikach zgrupowanych przez użytkownika. Można powiedzieć, że plik katalogowy zawiera listę plików oraz podkatalogów przypisanych do danego katalogu. W skład katalogu mogą wchodzić pliki dowolnego typu, w tym także inne katalogi, dzięki czemu tworzona jest drzewiasta struktura katalogów. Katalogi określają związek między nazwami plików a ich charakterystykami, wykorzystywanymi przez system plików do zarządzania

nimi. Do takich charakterystyk można zaliczyć informacje o typie pliku, rozmieszczeniu pliku w pamięci masowej, prawach dostępu do pliku oraz datach utworzenia, ostatniej modyfikacji, ostatnim dostępie. Dostęp do plików katalogowych jest możliwy jedynie za pośrednictwem właściwych funkcji systemowych wykonujących odpowiednie operacje na tych plikach. Wykonywanie operacji na plikach katalogowych z zastosowaniem programów służących do operacji na nich jest niemożliwy, gdyż mógłby doprowadzić do uszkodzenia systemu plików.

Pliki specjalne – to pliki fikcyjne związane z poszczególnymi urządzeniami

WE/WY, służące do unifikacji mechanizmów dostępu do plików i urządzeń WE/WY. Pliki specjalne pozwalają użytkownikowi na wykonywanie operacji WE/WY przy pomocy zwykłych poleceń zapisu oraz odczytu z pliku. Polecenia te w pierwszej kolejności są przetwarzane przez system plików, a następnie na określonym etapie wykonywania poleceń system operacyjny przetwarza je w polecenia zarządzania odpowiednimi urządzeniami WE/WY.

Współczesne systemy plików stosują także inne rodzaje plików, takie np. jak potoki nazwane, dowiązania symboliczne - omówione w dalszej części. 6.1.2. Hierarchiczna struktura systemu plików

Dzięki temu, że w skład katalogu mogą wchodzić katalogi niższego poziomu (podkatalogi), system plików posiada strukturę hierarchiczną. Graf opisujący hierarchię katalogów może mieć strukturę drzewa lub sieci. Katalogi tworzą drzewo, gdy dany plik może wchodzić w skład wyłącznie jednego katalogu (rys. 6.1), oraz sieć – gdy plik może być przypisany do wielu katalogów. W systemach operacyjnych MS-DOS oraz Windows katalogi tworzą strukturę drzewiastą, natomiast w systemie UNIX – sieciową.

Katalog główny Katalog_1 Katalog_2 PodKatalog_1 P1 P2 P3 P4 P5 Katalog główny Katalog_1 Katalog_2 P1 P2 P3 P4

Rys. 6.1. Hierarchia systemu plików 6.1.3. Montowanie systemu plików

W ogólnym przypadku system komputerowy może zawierać szereg urządzeń dyskowych. Nawet typowy komputer PC zwykle posiada jeden napęd dysków twardych, jeden napęd dysku elastycznego oraz jeden napęd dysku optycznego. Komputery profesjonalne są z zasady wyposażone w wiele

napędów dyskowych. Ponadto jeden napęd dyskowy może być podzielony za pomocą oprogramowania systemowego na szereg dysków logicznych (partycji). Zarządzanie zbiorem pamięci masowych danego komputera może odbywać się w dwojaki sposób:

 dla każdego urządzenia dyskowego (fizycznego lub logicznego) jest tworzony odrębny system plików,

 w systemie operacyjnym jest tworzony jeden system plików, obejmujący wszystkie urządzenia dyskowe.

W pierwszym przypadku każdy z systemów plików związanych z poszczególnymi urządzeniami dyskowymi posiada swoją nazwę logiczną. W systemach MS-DOS oraz Windows poszczególne systemy plików posiadają nazwy w postaci jednej litery alfabetu łacińskiego wraz z dwukropkiem (np. a:, c: itd.).

W drugim przypadku operacja łączenia wszystkich systemów plików w jeden system, reprezentowany przez jedną hierarchiczną strukturę katalogów, określana jest mianem montowania. Rozpatrzmy w jaki sposób jest realizowana ta operacja w systemach UNIX.

Spośród wszystkich dysków logicznych występujących w systemie, system operacyjny wyróżnia jeden, określany mianem systemowego. Na rys. 6.2 przedstawiono dwa systemy plików, umieszczone na dwu różnych dyskach logicznych. W celu połączenia obydwu systemów plików w strukturze katalogów dysku systemowego zostaje wybrany pewien (dowolny) katalog (na rys. 6.2 katalog PodKatalog_1), który po wykonaniu operacji montowania staje się katalogiem głównym dla drugiego systemu plików. Innymi słowy, poprzez katalog PodKatalog_1 drugi system plików zostaje domontowany do ogólnego drzewa katalogowego (rys. 6.3).

System plików 1 System plików 2

Katalog główny Katalog główny

Katalog_1 Katalog_2 Katalog_3

PodKatalog_1 PodKatalog_2

PK1 PK2

P1 P2 P3

Katalog główny

Katalog_1 Katalog_2 Katalog_3

PodKatalog_1 PodKatalog_2

PK1 PK2

P1 P2 P3

Rys. 6.3. System plików po wykonaniu operacji montowania

Po wykonaniu operacji montowania systemu plików system ten jest reprezentowany przez jedno drzewo katalogów, a użytkownik nie zdaje sobie sprawy, na którym dysku fizycznym (logicznym) znajduje się dany plik. 6.1.4. Atrybuty plików

Pojęcie pliku zawiera w sobie nie tylko dane oraz nazwę pliku, lecz także atrybuty, czyli dodatkowe informacje opisujące właściwości pliku. Do głównych atrybutów należy zaliczyć:

 typ pliku (np. plik zwykły, katalog, plik specjalny itp.),

 właściciela pliku,

 twórcę pliku,

 hasło dostępu do pliku,

 prawa dostępu do pliku,

 czas i datę stworzenia, ostatniego dostępu oraz ostatniej modyfikacji pliku,

 aktualny rozmiar pliku,

 maksymalny rozmiar pliku,

 znaczniki: o „tylko do odczytu”, o „plik ukryty”, o „plik systemowy”, o „plik archiwalny”, o „plik tymczasowy”, o „plik binarny/znakowy”, o blokady.

W systemach operacyjnych stosowane są różne podzbiory wymienionych wyżej atrybutów. Atrybuty plików mogą być zapisane w dwojaki sposób:

 w pliku katalogowym, w którym znajdują się opisy plików przypisanych do danego katalogu (np. MS-DOS),

 w specjalnych strukturach danych, przechowywanych w odrębnych tablicach. W takim przypadku w pliku katalogowym znajdują się odwołania do odpowiednich pozycji tej tablicy (np. UNIX).

Rekord pliku katalogowego w systemie operacyjnym MS-DOS zawiera następujące pola:  nazwa pliku,  rozszerzenie nazwy,  znaczniki,  czas,  data,

 numer pierwszego klastra,

 rozmiar.

W systemie operacyjnym UNIX zbiór atrybutów pliku jest umieszczony w strukturze określonej mianem węzła identyfikacyjnego pliku (ang. I-node), a zbiór wszystkich I-nodów jest umieszczony w tablicy I-nodów. Struktura pliku katalogowego jest w tym przypadku bardzo prosta i zawiera dwa pola: numer I-noda oraz nazwa pliku. Oddzielenie nazwy pliku od jego atrybutów zwiększa elastyczność systemu plików. Np. jeden plik fizyczny może być umieszczony w wielu katalogach, pod różnymi nazwami (są to tzw. dowiązania twarde – ang. hard links).

6.1.5. Logiczna organizacja pliku

W ogólnym przypadku dane przechowywane w plikach posiadają określoną strukturę, która jest podstawą opracowania programów przetwarzania danych przechowywanych w plikach. Aby tekst mógł być prawidłowo wyprowadzony na ekran, program musi mieć możliwość wydzielenia poszczególnych słów, zdań, akapitów itp. Znacznikami oddzielającymi poszczególne elementy mogą być określone kombinacje znaków. Inną możliwością wydzielenia poszczególnych elementów pliku może być określenie adresów dla poszczególnych elementów pliku względem początku pliku. Definiowanie struktury danych w pliku może być realizowane przez system operacyjny lub może być przekazane do aplikacji klienckiej.

W przypadku gdy wszystkie działania związane z określeniem struktury oraz interpretacją zawartości pliku są w całości przekazane do aplikacji klienckiej, plik stanowi ciąg bajtów i nie posiada żadnej narzuconej struktury. W celu wykonania określonej operacji na danych, aplikacja kliencka pobiera dane z pliku używając standardowych funkcji systemowych (np. podając przesunięcie względem początku pliku oraz liczbę bajtów), a następnie interpretuje pobrane dane zgodnie z zadanym w programie algorytmem. Format

danych w pliku znany jest jedynie aplikacji klienckiej, natomiast system operacyjny traktuje plik wyłącznie jako ciąg bajtów. Taki model pliku, zastosowany w systemie operacyjnym UNIX, stosowany jest we wszystkich współczesnych systemach operacyjnych.

Innym modelem pliku, stosowanym w wielu dawnych systemach operacyjnych (OS/360, DEC RSX, VMS), lecz praktycznie niestosowanym współcześnie, jest plik z określoną strukturą. W takim przypadku utrzymywanie struktury pliku jest realizowane przez system plików, który „widzi” plik jako uporządkowany ciąg rekordów i wszystkie operacje wykonuje na poziomie poszczególnych rekordów. System plików musi posiadać informacje o strukturze plików, niezbędne dla wydzielenia z pliku poszczególnych rekordów. System plików umożliwia aplikacji klienckiej dostęp do określonego rekordu, podczas gdy operacje przetwarzania danych zawartych w rekordzie są wykonywane przez aplikację kliencką. We współczesnych systemach informatycznych operacje przetwarzania plików o określonej strukturze są realizowane przez systemy zarządzania bazami danych. Elementarną strukturą danych, jaką może operować programista aplikacji klienckiej, jest w tym przypadku logiczny rekord, będący elementem pliku.

Systemy operacyjne mogą stosować dwa sposoby dostępu do rekordów w pliku:

 odczyt lub zapis rekordów w sposób sekwencyjny (pliki z dostępem sekwencyjnym),

 pozycjonowanie rekordów w pliku - przed operacją odczytu lub zapisu poszukiwany jest rekord o określonym numerze (pliki z dostępem swobodnym).

Pliki, w których rekordy posiadają stałą długość, mogą być plikami o dostępie sekwencyjnym oraz swobodnym. W przypadku dostępu sekwencyjnego poszczególne rekordy umieszczone w pliku mogą być wyłącznie odczytywane kolejno, poczynając od początku pliku, bez możliwości zmiany tej kolejności. Aby więc odczytać rekord o numerze N, należy najpierw odczytać wszystkie N-1 rekordów początkowych. Natomiast gdy plik charakteryzuje się dostępem swobodnym, w celu odczytu rekordu o numerze

N wyznaczany jest najpierw adres początku tego rekordu w pliku, równy (N-1)*R (R – długość rekordu), a następnie wykonywana jest operacja odczytu

tego rekordu (rys. 6.4a). Pliki z dostępem swobodnym charakteryzują się znacznie krótszym czasem dostępu do danych niż pliki z dostępem sekwencyjnym.

Pliki zawierające rekordy o zmiennej długości mogą być wyłącznie plikami o dostępie sekwencyjnym, gdyż nie ma w takim przypadku możliwości określenia adresu początkowego rekordu o podanym numerze (rys. 6.4b).

Szczególnym typem plików są pliki indeksowane. Ten sposób dostępu do danych przechowywanych w pliku zapewnia bardzo dużą szybkość oraz może być stosowany dla plików o stałej i zmiennej długości rekordu. W takim przypadku z plikiem danych zostaje związana tablica indeksowa, będąca tablicą

2-kolumnową, w której zapisywany jest klucz indeksowy jednoznacznie opisujący poszczególne rekordy oraz adres rekordu o podanym kluczu (rys. 6.4c). Dzięki takiej organizacji, podczas poszukiwania określonego rekordu w pliku najpierw należy przeszukać tablicę indeksową (o niewielkim rozmiarze w stosunku do rozmiaru pliku) w celu wyznaczenia adresu danego rekordu, a następnie wykonać odpowiednią operację odczytu lub zapisu rekordu. R R R R R1 R2 R3 Rn R1 R2 R3 Tablica indeksowa 1 9 7 5 rekord 5 rekord 3 rekord 2 rekord 1 indeks a) b) c) Indeks Adres 1 35 2 237 3 423 Logiczna organizacja indeksu

Rn

Rys. 6.4. Różne logiczne organizacje plików

W systemach operacyjnych można się także spotkać z indeksowo-sekwencyjną organizacją plików. Polega ona na tym, że w tablicy indeksowej podany jest adres początkowy pewnej sekwencji rekordów. W takim przypadku podczas poszukiwania określonego rekordu należy w pierwszej kolejności sięgnąć do tablicy indeksowej i wyznaczyć adres początkowy sekwencji rekordów, a następnie sekwencyjnie poszukiwać określonego rekordu.