w8 System plikow


System plików
Wprowadzenie
System plików to struktura logiczna, której właścicielem jest system operacyjny. System
plików pełni w systemie operacyjnym rolę pamięci trwałej. Jak wiemy fizyczna pamięć
trwała to najczęściej dyski magnetyczne. Informacje przechowywane na dysku podzielone są
na równe porcje zwane blokami czy stronami. Korzystanie z tak zapisanej informacji byłoby
niezwykle uciążliwe (jak zapamiętać, że dane programu zawarte są w bloku 26, 139 i 452?).
Wyjściem jest połączenie tych bloków w jedną strukturę plik. Informacje przechowywane
na dysku są więc pogrupowane w pliki i katalogi, które są indeksami plików. W ten sposób
powstaje struktura logiczna  system plików , którą zarządza system operacyjny. Czytelnik
zapewne bardzo dobrze zna te pojęcia. Niemniej warto zapoznać się z tym, co system plików
może nam udostępniać -- być może kryje nie znane nam jeszcze możliwości.
Implementacja systemu plików to ciekawy temat, choć zapewne większość czytelników nie
będzie miała okazji implementować żadnego systemu plików. Warto jednak wiedzieć jakie są
możliwe implementacje i jaki mają one wpływ na efektywność systemu plików. Ta wiedza
może być bardzo przydatna przy konfigurowaniu systemu komputerowego.
Organizacja systemu plików
W systemie plików występują dwa podstawowe rodzaje obiektów: pliki i katalogi. Pliki służą
bezpośrednio do przechowywania informacji, a katalogi służą do grupowania plików i innych
(pod)katalogów.
Pojęcie pliku jest zapewne doskonale znane czytelnikowi, niemniej przedstawmy pokrótce
typowe cechy pliku:
" Nazwa -- symboliczna nazwa identyfikująca plik w obrębie katalogu, w którym się on
znajduje. W niektórych systemach plików, ten sam plik może występować pod
wieloma nazwami i w wielu katalogach. Nie zawsze więc plik ma jednoznacznie
określoną nazwę, natomiast zawsze nazwa i katalog jednoznacznie określają plik.
" Typ -- określa rodzaj informacji przechowywanej w pliku. W zależności od rodzaju
systemu operacyjnego, typ pliku może być mniej lub bardziej kontrolowany przez
system operacyjny. Przykładowe typy plików to: program wykonywalny, plik
tekstowy, dokument, grafika w określonym formacie, itd.
Jeśli system operacyjny ściśle kontroluje typy plików, to typ pliku określa sposób jego
wykorzystania i może określać strukturę pliku (np. program można tylko uruchomić,
obrazek wyświetlić, a tekst przeczytać).
Z drugiej strony, jeżeli system operacyjny nie kontroluje ściśle typów plików, to typ
pliku może mieć charakter konwencji związanej z nazywaniem plików (np. programy
wykonywalne mają nazwę kończącą się na .exe, a pliki tekstowe na .txt).
(Oczywiście każdy system operacyjny określa strukturę plików stanowiących
programy wykonywalne, gdyż musi być w stanie je uruchamiać.) Wówczas, z punktu
widzenia systemu operacyjnego, wszystkie pliki mają jednolitą strukturę, a sposób ich
interpretacji określa konwencja. Tak jest np. w systemie Unix, Linux i Windows.
" Treść -- informacje przechowywane w pliku. W zależności od rodzaju systemu
operacyjnego, treści plików mogą posiadać zróżnicowaną strukturę lub nie. W
systemach Unix, Linux i Windows pliki to ciągi bajtów określonej długości. Ich
interpretacja zależy od typu pliku. Może też być tak, że system operacyjny określa
bardziej złożoną strukturę plików, np. traktuje plik jak ciąg rekordów określonej
wielkości.
" Wskaznik pliku -- wskazuje miejsce w pliku, którego będzie dotyczyć kolejna
operacja czytania/pisania.
" Prawa dostępu -- w systemach zapewniających ochronę danych, z każdym plikiem
(jak również z katalogiem) są związane prawa dostępu, określające jakie operacje
mają prawo wykonywać dani użytkownicy. Dokładny zestaw praw dostępu i ich
znaczenie zależy od konkretnego systemu operacyjnego. Przykładowe prawa dostępu
to: prawo do odczytu pliku, prawo do modyfikacji pliku, prawo do dopisywania
informacji na końcu pliku czy prawo do zmiany praw dostępu.
" Czas utworzenia/ostatniej modyfikacji/ostatniego dostępu -- są to dane o
charakterze administracyjnym, ułatwiające archiwizację, porównywanie wersji
plików, zarządzanie plikami tymczasowymi itp.
Wszystkie te atrybuty mają również zastosowanie do katalogów, pod warunkiem, że za treść
katalogu przyjmiemy listę plików i podkatalogów znajdujących się w danym katalogu.
Operacje systemu plików
Pliki i katalogi możemy traktować jak trwałe obiekty pewnego abstrakcyjnego typu
danych. Z punktu widzenia użytkownika istotne jest, jakie operacje można wykonywać na
nich. Operacje te możemy podzielić na dwie grupy: operacje na całych plikach/katalogach
oraz operacje modyfikujÄ…ca/odczytujÄ…ce informacje z pojedynczego pliku/katalogu. Typowe
operacje na całych plikach/katalogach, to:
" zmiana nazwy pliku/katalogu,
" przeniesienie pliku/katalogu do innego katalogu,
" usunięcie pliku/katalogu,
" skopiowanie pliku,
" utworzenie nowego (pustego) katalogu,
" wypisanie treści pliku/zawartości katalogu,
" zmiana aktualnego katalogu roboczego.
Dostępne operacje wykonywane na pojedynczym pliku to:
" otwarcie pliku,
" odczytanie bajtu/rekordu (wskazywanego przez wskaznik pliku) -- powoduje
przesunięcie wskaznika pliku do następnego bajtu/rekordu,
" odczytanie wielu bajtów/rekordu -- równoważne wielu operacjom odczytania jednego
bajtu/rekordu, ale efektywniejsze,
" zapisanie bajtu/rekordu (wskazywanego przez wskaznik pliku) -- powoduje
przesunięcie wskaznika pliku do następnego bajtu/rekordu; jeżeli wskaznik pliku
wskazuje na koniec pliku, to plik ulega wydłużeniu,
" zapisanie wielu bajtów/rekordu -- równoważne wielu operacjom zapisania jednego
bajtu/rekordu, ale efektywniejsze,
" przesunięcie wskaznika pliku na zadaną pozycję,
" zamknięcie pliku.
Chcąc wykonywać operacje na pojedynczym pliku, musimy najpierw otworzyć ten plik.
Otwierając plik musimy zidentyfikować go w strukturze katalogów. W wyniku otwarcia
uzyskujemy pewnego rodzaju "uchwyt" pliku, zwany deskryptorem. Dalsze operacje sÄ…
wykonywane za pośrednictwem tego uchwytu. Operacja otwarcia pliku może również
powodować utworzenie nowego, pustego pliku. Pojęcie wskaznika pliku dotyczy deskryptora
pliku -- jeśli równocześnie kilka procesów otworzy dany plik, to każdy z nich będzie miał
własny wskaznik pliku. Deskryptor pliku jest niszczony w momencie wykonania operacji
zamknięcia pliku. Najczęściej dane czytane z / pisane do pliku są buforowane. Zamknięcie
pliku wiąże się z zapisaniem danych oczekujących w buforze.
W momencie otwarcia wskaznik pliku jest ustawiony na poczÄ…tek pliku. Operacja otwarcia
pliku może określać, czy będziemy czytać z pliku, czy też pisać do niego. W przypadku, gdy
możemy pisać do pliku, możliwe jest też otwarcie pliku z jednoczesnym ustawieniem
wskaznika pliku na koniec pliku -- tzw. otwarcie pliku w celu dopisywania (ang. append).
Jeżeli po otwarciu pliku dostępna jest operacja ustawienia wskaznika, to mamy do czynienia
z plikiem o dostępie swobodnym. W przeciwnym przypadku operacje na pliku, siłą rzeczy,
przetwarzają kolejne bajty/rekordy. Mówimy wówczas o dostępie sekwencyjnym do pliku.
Współużytkowanie plików
Ze względu na to, że wiele procesów może jednocześnie korzystać z tych samych plików,
należy określić semantykę operacji wykonywanych współbieżnie na tym samym pliku. W
szczególności semantyka ta powinna określać kiedy zmiany dokonane w pliku przez jeden z
procesów stają się widoczne dla pozostałych procesów. Poniżej przedstawiamy trzy
podstawowe podejścia do określenia semantyki plików:
" Zmiany zawartości pliku wykonywane przez jeden proces są natychmiast widoczne
dla pozostałych procesów. Każdy proces w każdej chwili widzi dokładnie tę samą
treść pliku. W podejściu tym system operacyjny jest całkowicie odpowiedzialny za
synchronizowanie dostępu do plików i buforowanie danych.
" System gwarantuje, że po zamknięciu pliku wszystkie zmiany treści pliku będą
widoczne dla procesów, które otworzą plik po tym zamknięciu. Zmiany te mogą być
częściowo widoczne już wcześniej. Jeżeli kilka procesów współbieżnie modyfikuje
plik, to wynik tych operacji będzie pewnym przemieszaniem dokonywanych
modyfikacji. W podejściu tym system operacyjny może ograniczyć się do
synchronizowania jedynie operacji dyskowych, a ewentualne buforowanie danych
może być wykonywane przez każdy proces niezależnie. Jest to podejście najprostsze
do zaimplementowania, ale najmniej wygodne.
" Współdzielenie pliku przez kilka procesów wyklucza zapisywanie do pliku. Jeżeli
proces próbuje otworzyć plik do zapisu, to nie może on być otwarty przez inne
procesy -- najpierw procesy, które wcześniej otworzyły plik muszą go zamknąć. Plik
otwarty do zapisu nie może być otwarty przez inne procesy, dopóki nie zostanie
zamknięty. Plik może być otwarty przez kilka procesów tylko do czytania.
Rozwiązanie to zapewnia spójną semantykę plików przy jednocześnie stosunkowo
prostej implementacji -- synchronizacja dostępu do plików odbywa się na poziomie
operacji otwierania i zamykania plików.
Struktura katalogów
Katalogi to pliki, których zawartość treści stanowi wykaz (lista) innych plików. Służą do
grupowania plików, ze względu na podobne własności (np. ten sam właściciel, podobna
zawartość treści, data utworzenia itp.). Struktury katalogów ewoluowały w miarę rozwoju
systemów operacyjnych, odzwierciedlając pojawiające się potrzeby użytkowników.
Katalog jednopoziomowy
Katalog jednopoziomowy to najprostsza i najstarsza struktura katalogów. W systemie
plików jest tylko jeden katalog, w którym zgromadzone są wszystkie pliki. Każdy plik jest
jednoznacznie identyfikowany przez swojÄ… nazwÄ™. Taka prymitywna struktura realizuje
jedynie podstawową potrzebę prostego grupowania wielu plików w systemie.
Katalog dwupoziomowy
Jeżeli z komputera korzysta wielu użytkowników, to nie mogą oni wszyscy korzystać ze
wspólnego katalogu, bo powodowałoby to liczne konflikty w nazywaniu plików przez
różnych użytkowników. Problem ten rozwiązano wprowadzając dwupoziomową strukturę
katalogów.
Katalog główny zawiera szereg podkatalogów, po jednym dla każdego użytkownika. W
podkatalogach znajdują się pliki -- bez możliwości tworzenia dalszych podkatalogów. W
takiej strukturze plik jest jednoznacznie identyfikowany przez podanie nazwy podkatalogu i
nazwy pliku. Rozwiązanie likwiduje konflikty między użytkownikami, jednak nie umożliwia
grupowania plików o podobnym przeznaczeniu dla określonego użytkownika.
Drzewiasta struktura katalogów
Pomysł grupowania plików poszczególnych użytkowników w podkatalogi łatwo uogólnić.
Katalog może zawierać pliki i podkatalogi, a cała struktura katalogów może mieć kształt
drzewa, którego korzeń stanowi główny katalog. Każdy użytkownik może mieć swój
katalog oraz dodatkowo może dowolnie grupować swoje pliki w podkatalogi. Pliki są
identyfikowane poprzez podanie ścieżki w drzewie (złożonej z nazw podkatalogów) oraz
nazwy pliku.
Struktura grafu acyklicznego
W strukturze tej dopuszczamy, aby katalogi i pliki tworzyły graf acykliczny. Oznacza to, że
każdy plik i podkatalog (ale nie katalog główny) występuje w jednym lub więcej
katalogach. Warunek acykliczności gwarantuje nam, że z katalogu głównego możemy
dotrzeć do każdego katalogu i pliku.
Przy takiej strukturze katalogów mamy nową operację: wstawienie istniejącego pliku lub
podkatalogu do określonego katalogu. W wyniku wykonania takiej operacji mamy więcej niż
jedno dowiązanie do danego pliku/podkatalogu. Ponadto plik/katalog ten może w różnych
katalogach pojawiać się pod różnymi nazwami. Tak więc nazwa przestaje być atrybutem
pliku/podkatalogu, lecz jest związana z katalogiem, w którym występuje. Natomiast z każdym
plikiem i podkatalogiem wiążemy nowy atrybut: licznik dowiązań. W momencie utworzenia
pliku lub podkatalogu licznik ten jest ustawiany na 1. Każde wstawienie pliku/katalogu do
kolejnego katalogu powoduje zwiększenie licznika dowiązań, a każde usunięcie
pliku/podkatalogu z określonego katalogu powoduje jego zmniejszenie o 1. W momencie gdy
wartość licznika spada do zera, plik/podkatalog jest faktycznie usuwany.
Struktura grafu spójnego
Ograniczenie się do grafów acyklicznych wynika wyłącznie z chęci zapewnienia osiągalności
wszystkich podkatalogów. Można więc od razu ograniczyć się do takich grafów, w których z
głównego katalogu można dotrzeć do wszystkich podkatalogów i plików.
Implementacja systemu plików
Pliki przechowywane są (zwykle) na dyskach magnetycznych. Struktura fizyczna dysków jest
o wiele prostsza niż systemu plików. Dysk jest podzielony na sektory czyli jednostki tej samej
wielkości. Wielkość sektorów jest (zwykle) potęgą 2 i przeważnie jest to 512B. Z punktu
widzenia systemu operacyjnego, pojedynczy dysk można traktować jak liniową tablicę
sektorów.
Implementacja systemu plików ma architekturę warstwową, zbliżając stopniowo proste
urządzenia, jakimi są dyski, do złożonego systemu plików. Wyróżniamy następujące
warstwy:
" sterownik dysku,
" podstawowy system plików,
" moduł organizacji plików,
" logiczny system plików.
Sterownik dysku to prosty moduł, który tłumaczy podstawowe polecenia odczytu/zapisu
sektorów na odpowiednie polecenia przesyłane do odpowiedniego urządzenia dysku.
Podstawowy system plików tworzy pojęcie bloku dyskowego. Blok dyskowy to
podstawowa jednostka zapisu/odczytu z dysku. Wielkość bloku jest wielokrotnością
wielkości sektorów dyskowych, zwykle jest to 1, 2 lub 4 kB. Podstawowy system plików, na
podstawie identyfikatora dysku i numeru bloku przekazuje polecenie odczytu/zapisu do
odpowiedniego sterownika dysków.
Moduł organizacji plików jest odpowiedzialny za implementację pojęcia pliku. Na tym
poziomie pliki nie majÄ… nazw i nie sÄ… pogrupowane w katalogi. Pliki sÄ… identyfikowane na
podstawie numerów. Moduł ten jest odpowiedzialny za rozmieszczenie pliku na dysku. Plik
zajmuje zawsze całkowitą liczbę bloków. Oznacza to, że (tak jak w przypadku pamięci ze
stronicowaniem) mamy do czynienia z fragmentacją wewnętrzną -- ostatni blok zajmowany
przez plik jest zajęty tylko częściowo. Z grubsza rzecz biorąc, można przyjąć, że średnio
tracimy 1/2 bloku dyskowego na plik. Moduł organizacji plików, znając rozmieszczenie
pliku na dysku, jest w stanie przetłumaczyć numer kolejnego bloku w określonym pliku, na
położenie tego bloku na dysku. Moduł ten zarządza też pulą wolnych bloków dyskowych i
przydziela je plikom.
Logiczny system plików jest odpowiedzialny za implementację katalogów. Odpowiada on
również za kontrolę praw dostępu do plików.
System plików FAT
(idea)
Na etapie formatowania logicznego definiowany jest podział partycji (dysku logicznego), na
obszar tablicy FAT, katalogu głównego oraz przestrzeni przeznaczonej na bloki danych i
podkatalogów. Schemat systemu plików FAT pokazuje poniższy rysunek.
Rozmiar tablicy FAT określa liczba jednostek
alokacji (bloków) możliwych do zaadresowania.
Przykładowo, w przypadku FAT16 do dyspozycji
jest 216=65536 numerów adresów bloków.
Przeznaczanie zatem wiÄ™cej niż 128 KB (65536·16
bitów) na tę strukturę nie ma sensu, bo większej
liczy jednostek i tak nie da się obsłużyć.
Tablica FAT jest newralgicznym elementem
systemu plików, dlatego oprócz samej tablicy
przechowywana jest także jej kopia. Niestety oba
obszary leżą tuż obok siebie, co niestety zwiększa
prawdopodobieństwo uszkodzenia ich obu naraz.
Bloki należące do pliku odszukiwane są za
pośrednictwem katalogu i tablicy FAT.
Indeks pierwszego bloku pliku znajduje się we wpisie katalogowym. Następne bloki
odszukujemy przy pomocy tablicy FAT (patrz rysunek poniżej). Przykładowo wpis
katalogowy dla pliku DANE.TXT daje nam indeks pierwszego bloku równy 1 i rozmiar
(4bloki). Korzystając teraz z tablicy FAT widzimy, że musimy przejść do bloku nr 3,
następnie 28, potem 27 i zakończyć na bloku 8 (kod # przy indeksie 8). Wolne bloki
identyfikowane sÄ… poprzez specjalny kod (flagÄ™), wpisany na odpowiadajÄ…cych im pozycjach
w tablicy FAT.
Struktura wpisu katalogowego
Katalog zawiera 32-bajtowe wpisy, obejmujÄ…ce podstawowe atrybuty pliku (nazwa, typ,
rozmiar itp.). Katalogi tworzÄ… strukturÄ™ wielopoziomowÄ…. Schemat rekordu katalogu dla FAT
12/16 wraz z rozmiarem poszczególnych pól przedstawia poniższy rysunek.
Nazwa składa się maksymalnie z 8 znaków, oraz 3 znaków rozszerzenia. Flagi są bitami,
określającymi specjalne atrybuty pliku: plik ukryty, plik systemowy, plik tylko do odczytu,
podkatalog, plik archiwalny, etykieta. W katalogu przechowany jest numer pierwszego bloku,
czyli początek listy w tablicy FAT i rozmiar pliku (liczba bloków.
FAT 32-bitowy wymaga pewnych rozszerzeń w strukturze wpisu katalogowego.
Wykorzystane tu sprytnie wszystkie bajty, nieużywane w wersji opartej na FAT 12/16 (pole
zakreskowane.
Indeks pierwszego bloku podzielony jest na 2 części po 16 bitów w każdej. Dlatego nadaje się
do zastosowania w rozwiÄ…zaniach opartych na FAT 16
Unixowe systemy plików (schemat)
Typowy system plików (np. EXT 2) można przedstawić na następującym wykresie:
Każda partycja dyskowa może zawierać oddzielny system plików.
Pierwszy blok (0)  blok ładowania wstępnego, fizycznie na początku partycji dyskowej,
zawiera program ładujący, używany do ładowania UNIX a w czasie startu systemu.
Blok nadrzędny (superblok) - zawiera całkowitą informację o systemie plików, np:
" Rozmiar bloku
" Liczby wszystkich oraz wolnych bloków i i-węzłów
" Stan systemu plików (czy został poprawnie zamknięty)
" Licznik zamontowań i data ostatniego sprawdzenia - pozwalają wymusić sprawdzenie
integralności danych co pewien czas
" Wersja systemu plików , itp.
Superblok dla dołączonego systemu plików trzymany jest w pamięci operacyjnej.
I-węzły są podstawą budowy meta-danych w systemie plików. Każdy plik (katalogi
traktujemy jak specjalny rodzaj plików) w systemie jest jednoznacznie identyfikowany przez
i-węzeł. I-węzły są trzymane w tablicy i-węzłów w grupie bloków. Dzięki mapie zajętości i-
węzłów możemy śledzić, które i-węzły są wolne, a które zajęte w obrębie grupy bloków.
Do ciekawszych pól struktury i-węzła należą:
i_mode - prawa dostępu do pliku oraz typ pliku
i_uid, i_gid - właściciel pliku
czas utworzenia, modyfikacji, dostępu oraz usunięcia pliku
i_size - rozmiar pliku w bajtach
i_block - tablica używana do zlokalizowania danych
i_flags - flagi decydujące o zachowaniu się systemu przy dostępie do pliku
określonego przez ten węzeł
Bloki katalogów i plików  pozostała część partycji (dysku), przeznaczona na
przechowywanie danych. System plików tworzy hierarchię plików i katalogów korzystając z
i-węzłów. Każdy plik w systemie ma przypisany swój i-węzeł. Każdy i-węzeł ma unikalny
numer w obrębie systemu plików. Katalogi są traktowane jak specjalne pliki.
Lokalizowanie bloków z danymi
W systemie Unix pliki są reprezentowane przez tzw. i-węzły (ang. i-node). I-węzeł zawiera,
13 adresów bloków dyskowych. Bloki z danymi mogą być adresowane:
" bezpośrednio - adresy pierwszych (z reguły 10) bloków z danymi są zapisane
bezpośrednio w i-węzle
" pośrednio - adresy bloków z danymi są zapisane w bloku, którego adres znajduje
się w i-węzle
" podwójnie-pośrednio  jak wyżej, ale są dwa pośrednie bloki
" potrójnie-pośrednio  jak wyżej, ale mamy aż trzy pośrednie bloki
Dzięki takiemu podejściu, liczba operacji dyskowych potrzebnych do sięgnięcia do
dowolnego miejsca w pliku znacznie się zmniejsza (waha się od 1 do 4 w zależności od
wielkości pliku). Schemat tego typu adresowania pokazuje poniższy rysunek.
Organizacja plików w NTFS
Strukturę organizacji plików w NTFS pokazuje poniższy, schematyczny rysunek. Sercem
systemu plików jest główna tablica plików (ang. Master File Table, MFT). Jest to tablica
złożona z rekordów (zwykle wielkości 1KB). Zawiera ona informacje o wszystkich plikach.
Opis każdego pliku zajmuje jeden lub więcej rekordów w MFT. Każdy plik jest
identyfikowany przez pozycjÄ™ (pierwszego) opisujÄ…cego go rekordu w MFT.
Tablica MFT ma ustalone położenie na partycji NTFS, ale ponieważ sama jest plikiem, może
być powiększana w ramach strefy MFT. Strefa MFT potencjalnie dostępna jest też dla bloków
danych, ale wykorzystywana jest dopiero wówczas, gdy brakuje miejsca we właściwym
obszarze danych.
Dla bezpieczeństwa 16 rekordów MFT, identyfikujących ważne dla systemu pliki
(zawierające metadane) ma swoją kopię w środkowej części partycji.
MFT zawiera również opis kilku tzw. meta-plików. Meta-pliki, to sposób spojrzenia na
wewnętrzne elementy NTFS, jak na pliki. Do meta-plików zaliczają się m.inn.: MFT (sic!),
mapa zajętych i wolnych bloków dyskowych, mapa złych sektorów na dysku, tablica praw
dostępu do plików i główny katalog. Informacje o meta-plikach zajmują pierwsze 16 (lub 24)
rekordy MFT. Dzięki meta-plikom system NTFS jest bardziej elastyczny.
Każdy plik składa się z szeregu atrybutów. Atrybutami są wszystkie typowe atrybuty plików
(np. nazwa, czas modyfikacji), ale także treść pliku. Generalnie, jeżeli tylko to możliwe,
atrybuty są przechowywane w MFT, przy czym każdy atrybut musi mieścić się w
pojedynczym rekordzie MFT. Jeżeli plik zajmuje więcej niż jeden rekord w MFT, to jednym
z jego atrybutów jest lista kolejnych rekordów w MFT opisujących plik.
Struktura rekordu MFT
Rozmiar rekordu MFT ustalany jest na etapie tworzenia systemu plików (formatowania
logicznego) na ogół ma wielkość 1 KB. Strukturę rekordu tablicy MFT pokazuje
schematycznie poniższy rysunek:
Nagłówek rekordu MFT
nagłówek wartość
atrybutu atrybutu
& & & &
nagłówek wartość
atrybutu atrybutu
Rekord MFT poza nagłówkiem, składa się z atrybutów. Atrybut traktowany jest jako strumień
bajtów, oczywiście odpowiednio interpretowany. Nagłówek atrybutu znajduje się zawsze w
rekordzie MFT.
Jeśli wartość atrybutu jest niewielka, może również zmieścić się w samym rekordzie. Jest to
tzw. atrybut rezydentny. Jeśli wartość jest zbyt duża, umieszczana jest w obszarze danych, a
w rekordzie MFT zamiast wartości znajduje się wskaznik do tego obszaru. W przypadku
niewielkiej objętości danych jest szansa umieszczenia całego pliku w rekordzie MFT.
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ń
Numer sekwencyjny jest składnikiem referencji pliku i ma na celu eliminację pomyłek,
wynikających z przechowania jakieś starej referencji do już usuniętego pliku.
Zwiększenie numeru sekwencyjnego o 1 oznacza, że stara referencja, nawet jeśli odnosi się
do tego samego rekordu, będzie nieaktualna, gdyż będzie zawierać już nieobowiązujący
numer sekwencyjny.
Zawartość nagłówka atrybutu to:
" Identyfikator atrybutu (typ i opcjonalna nazwa)
" Długość wartości atrybutu w bajtach
" Lokalizacja wartości atrybutu
" Flagi
Wybrane atrybuty pliku to:
Nie wszystkie atrybuty są obecne w każdym rekordzie MFT. Niektóre z atrybutów są zawsze
rezydentne, w przypadku innych uzależnione jest to od wielkości strumienia. Oto niektóre
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)
Atrybut informacje standardowe jest obligatoryjnym atrybutem każdego rekordu MFT,
zawierającym informacje o właścicielu, flagi, czasy, licznik dowiązań itp. Ma on ustalony
rozmiar i jest atrybutem rezydentnym.
Nazwa pliku zapisana jest kodzie Unicode (UTF-16). W rekordzie może wystąpić kilka
atrybutów nazwa pliku, np. w przypadku twardych dowiązań lub dla zachowania zgodności
nazw z systemem MS DOS. Atrybut ten jest zawsze rezydentny.
W pliku zwykłym istnieje anonimowy atrybut dane, który oznacza domyślny strumień
danych, udostępniany w ramach operacji na pliku. Można jednak utworzyć dodatkowy,
nazwany atrybut dane, którego strumień dostępny będzie przez jawne podanie nazwy tego
atrybutu. Atrybut ten nie występuje w przypadku katalogu, chyba że zostanie jawnie
utworzony nazwany atrybut tego typu.
Atrybuty korzeń indeksu, alokacja indeksu oraz mapa bitowa indeksu wykorzystywane są
w implementacji katalogów.
Atrybut lista atrybutów zawiera listę atrybutów wraz z ich lokalizacją w rekordach
rozszerzeń w MFT w przypadku, gdy jeden rekord MFT jest niewystarczający do
pomieszczenie informacji o wszystkich atrybutach.
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.
" 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.
Implementacja atrybutu dane
Mały plik to taki, dla którego wartość atrybutu dane mieści się w rekordzie MFT. Rekord taki
w najprostszym przypadku składa się z atrybutów: informacje standardowe, nazwa pliku,
dane.
W przypadku większego pliku, wartość atrybutu dane musi zostać przeniesiona do bloków
danych poza tablicą MFT, a bloki te muszą zostać opisane odpowiednio w rekordzie MFT.
Opis polega na odwzorowaniu wirtualnych numerów bloków danego pliku (virtual cluster
number  VCN), czyli numerów kolejnych bloków stanowiących strumień danych, na
logiczne numery bloków dyskowych (logical cluster number  LCN).
Przebieg jest ciągiem kolejnych bloków wg. numeracji LCN. Opis takiego przebiegu składa
się zatem z numeru LCN pierwszego bloku oraz liczby bloków wchodzących w skład
przebiegu.
Przykład: strumień danych pliku umieszczony jest w 30 blokach, porozkładanych w 3
przebiegach różnej wielkości. Pierwszy przebieg obejmuje 8 bloków zlokalizowanych pod
numerami LCN 1500  1507, drugi 10 bloków o numerach 1800  1809, a trzeci 12 bloków o
numerach 2000  2011. Numery VCN dla takiego pliku sÄ… z zakresu 0  29 i taka informacja
znajdzie się w nagłówku tabeli. Pozycje tej tabeli zawierają zatem: pierwsza 1500 i 8, druga
1800 i 10, trzecia 2000 i 12.
NTFS  katalogi
Katalog jest sekwencją wpisów, zawierających najczęściej wyświetlane atrybuty pliku.
Atrybuty te kopiowane są z rekordów MFT plików, wchodzących w skład katalogu.
Przyspiesza to sporządzenie listingu zawartości katalogu, gdyż nie trzeba  sięgać do rekordu
MFT każdego pliku.
Istotnym atrybutem rekordu MFT, opisującego katalog, jest korzeń indeksu (index root).
W przypadku małych katalogów atrybut ten zawiera po prostu sekwencję wpisów. W
przypadku większych katalogów, wpisy zorganizowane są w strukturę B+-drzewa, w której
kluczem jest nazwa pliku.
Atrybut korzeń indeksu jest korzeniem tego drzewa (nazwa atrybutu staje się adekwatna do
jego znaczenia), a dodatkowe atrybuty alokacja indeksu oraz mapa bitowa indeksu
opisują odpowiednio lokalizację bloków z węzłami struktury indeksowej oraz ich
wypełnienie.
Implementacja katalogu
W przypadku małego katalogu, wpisy katalogowe, posortowane według nazwy, umieszczona
sÄ… w samym rekordzie MFT.
W przypadku dużego katalogu atrybut korzeń indeksu, jako korzeń B+-drzewa zawiera klucze
(nazwy plików) oraz wskazniki na węzły B+-drzewa z następnymi kluczami.
ISO 9660  informacje ogólne
ISO 9660 jest standardem systemu plików dla płyt CD (również DVD). 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.
Maksymalny poziom zagnieżdż. katalogów  8.
Standard nie definiuje przeznaczenia pierwszych 16 bloków. Obszar ten jest do dyspozycji
twórcy, może np. służyć do umieszczenia programu rozruchowego w przypadku ładowania
systemu operacyjnego z płyty.
Uwzględniając różnorodność zastosowań płyt kompaktowych, w deskryptorze głównego
wolumenu znajduje się mnóstwo informacji o jej zawartości, autorze, wytwórcy, prawach
autorskich itd. Można tam umieścić dowolne informacje, przydatne raczej tylko dla
użytkownika, zapisane z użyciem dużych liter, cyfr i wybranych znaków interpunkcyjnych.
Z zakresu metadanych w deskryptorze znajduje siÄ™ rozmiar bloku logicznego (2048, ale
dopuszcza się więcej, np. 4096, 8192 itd.), liczba bloków na płycie, czas utworzenia i
przeterminowania zawartości płyty. Jedną z najważniejszych informacji jest opis katalogu
głównego, tzn. blok początkowy i rozmiar, zgodnie z zasadą przydziału ciągłego.
ISO 9660  struktura wpisu katalogowego
Wpis katalogowy może mieć zmienną długość, co przejawia się w obecności trzech pól:
wielkości wpisu katalogowego, wielkości rozszerzenia oraz długości nazwy. Nazwy dłuższe
niż 15 znaków należą już do rozszerzeń standardu.
Atrybuty lokalizacja i rozmiar są wartościami 32 bitowymi, ale ze względu na podwójną
reprezentację zajmują 8 bajtów. Podobnie nr CD jest wartością 16bitową, a zajmuje 4 bajty
W polu flagi wyróżniono między innymi następujące bity:
" bit, który odróżnia pliki od katalogów,
" bit ukrycia wpisu na listingu zawartości,
" bit atrybutów rozszerzonych,
" bit oznaczajÄ…cy ostatni wpis w katalogu.
Standard ISO uwzględnia operowanie zbiorami płyt, możliwe jest więc, że wpis
katalogowy opisuje plik, zlokalizowany na innej płycie. Stąd pole reprezentujące
numer płyty CD z lokalizacją pliku.
Zadania
1. Rozważamy system plików typu FAT na dysku wielkości 200GB. W systemie tym
znajduje się ok. 500 000 plików. Bloki dyskowe mogą mieć wielkość 1, 2 lub 4 KB.
Jaka będzie wielkość tablicy FAT dla FAT 16, 32 i 64 i jakie będą straty na
fragmentację wewnętrzną, dla poszczególnych wielkości bloków dyskowych? Jakiej
wielkości bloki dyskowe minimalizują łączne straty pamięci na tablicę FAT i
fragmentację wewnętrzną (zakładając, że tablica FAT jest pamiętana w jednym
egzemplarzu) : 1, 2, czy 4kB?
2. Zakładając, że i-węzeł zawiera 13 numerów bloków, bloki dyskowe mają wielkość
4kB, a numery bloków zajmują 32 bity, oblicz największy możliwy rozmiar pliku.
3. Podaj przykłady urządzeń, które mogą być w systemie reprezentowane odpowiednio
przez plik o dostępie:
o sekwencyjnym tylko do czytania,
o sekwencyjnym tylko do pisania
o swobodnym, do czytania i pisania.


Wyszukiwarka

Podobne podstrony:
Linux System Plików
iCare Format Recovery naprawa systemu plikow
Linux System Plików II
Linux konserwacja Systemu Plikow
07 Linux System plików
system plikow
utk1 system plikow ext
Funkcje systemowe systemu plików
Systemy plików
systemy plikow
systemy plików 12 10 2008
Sprawozdanie z Zarządania systemem plików i przestrzenią
System plików
System plikow KIA PRz

więcej podobnych podstron