Systemy plików
Prezentacja w ramach przedmiotu Systemy Operacyjne 2002
Autor: Andrzej Karczyński
Wstęp
Standard ISO 9660 stworzony został przez Międzynarodową Organizację Standaryzacji (International Organization for Standardization). Standard ten definiuje system plików przeznaczony do płyt CD-ROM. Wiele cech związanych z nośnikiem miała duży wpływ na wygląd standardu. Takimi cechami są między innymi:
· możliwość tylko odczytu (brak możliwości zapisu danych, ewentualnie zapis jednokrotny)
· bardzo długi czas dostępu
Cechy te spowodowały duże uproszczenie systemu plików w porównaniu do innych systemów plików.
Kolejną sprawą mającą wpływ na wygląd standardu była chęć stworzenia jednego standardu dla wszystkich platform. W związku z tym mamy jednolity standard dla systemu MS Windows, systemów Unixowych, czy systemu Mac OS.
Poziomy i ograniczenia
Standard ISO 9660 ma kilka poziomów (level). Poszczególne poziomy definiują
pewne ograniczenia nałożone na system plików. Ograniczenia te powstały z uwagi
na fakt obsługiwania CD-ROMów przez różne systemy operacyjne. Na przykład
najwięcej ograniczeń nałożonych jest na system DOS, który może obsługiwać tylko
pliki o nazwach 8-znakowych ze 3-znakowym rozszerzeniem.
Level |
Ograniczenia |
Level 1 |
Nazwy plików 8-znakowe z 3-znakowym rozszerzeniem. Można używać tylko dużych liter, cyfr i znaku podkreślenia. |
Level 2 |
Nazwy plików aż do 31 znaków. |
Level 3 |
Dopuszcza fragmentację plików |
Standard dopuszcza używanie tylko dużych liter, cyfr i znaku podkreślenia w nazwach plików, ale często stosuje się też inne znaki, mimo, iż jest to niezgodne ze standardem.
Rozszerzenia
Jest kilka rozszerzeń do standardu ISO 9660, które znoszą podane powyżej ograniczenia.
Najbardziej popularnymi są:
· Rock Ridge – dopuszcza dłuższe nazwy w znakach ASCII, zachowuje uprawnienia plików w systemach UNIXowych
· Joliet – dopuszcza dłuższe nazwy w UNICODE
Format logiczny danych
W standardzie ISO 9660 występuje podział na logiczne sektory wielkości 2048 bajtów. Oprócz tego mamy podział na logiczne bloki, które określają najmniejszy kawałek pliku, jaki można przeczytać. Logiczne bloki mogą mieć rozmiar 512, 1024 lub 2048 bajtów. W ogólności dostęp do pliku odbywa się poprzez logiczne sektory, podczas gdy sam plik czytany jest po kawałkach rozmiaru logicznych bloków.
Poniższy rysunek przedstawia układ płyty CD-ROM w standardzie ISO-9660 i High Sierra. High Sierra jest standardem, na którym było wzorowane ISO 9660.
Sektory 0-15 są nieokreślone. Może znajdować się tam kod do bootowania
systemu lub mogą być wypełnione zerami.
Volume descriptors
Informacje o płycie znajdują się w liście deskryptorów płyty (volume descriptor) w 2048-bajtowych wpisach. Lista zaczyna się od sektora nr 16. Jest pięć typów deskryptorów: primary volume descriptor, secondary volume descriptor, boot descriptor, partition descriptor, volume descriptor terminator. Lista zawsze zaczyna się od primary volume descriptor i kończy na volume descriptor terminator, który służy tylko jako zaślepka (koniec listy). Pozostałe trzy typy deskryptorów są opcjonalne. Macintoshe nie obsługują boot deskryptorów i partition deskryptorów. Odpowiednich danych Macintoshe szukają na początku płyty w sektorach 0-15.
Każda płyta zawiera jeden i tylko jeden primary volume descriptor. Zawiera on informacje o nazwie płyty, jej wydaniu oraz offsety do path table i root directory. Deskryptor ten zawiera również kopię root directory entry, żeby zminimalizować liczbę wyszukiwań potrzebnych do odczytania informacji o płycie. W strukturze katalogów wskazywanej przez primary volume descriptor nazwy plików mogą zawierać tylko duże litery A-Z, znak podkreślenia i cyfry 0-9.
Secondary volume descriptor jest dodatkowym deskryptorem płyty. Umożliwia on przechowywanie plików z nazwami nie pasującymi do standardowego zestawu znaków, opisanego powyżej. Struktura katalogów wskazywana przez secondary volume descriptor odpowiada strukturze wskazywanej przez primary volume descriptor z tą różnicą, że zawiera wpisy z rozszerzonym zestawem znaków. Oprócz tego secondary volume descriptor różni się tylko na dwóch polach od primary volume descriptor. Pole volumeFlag określa czy używany jest niestandardowy alfabet. Pole escapeSequences zawiera kod określający, jaki alfabet jest używany.
Dokładna zawartość primary volume descriptor i secondary volume descriptor wygląda następująco:
length
in bytes contents
-------- ---------------------------------------------------------
1 1
6 67, 68, 48, 48, 49 and 1, respectively (same as Volume
Descriptor Set Terminator)
1 0
32 system identifier
32 volume identifier
8 zeros
8 total number of sectors, as a both endian double word
32 zeros
4 1, as a both endian word [volume set size]
4 1, as a both endian word [volume sequence number]
4 2048 (the sector size), as a both endian word
8 path table length in bytes, as a both endian double word
4 number of first sector in first little endian path table,
as a little endian double word
4 number of first sector in second little endian path table,
as a little endian double word, or zero if there is no
second little endian path table
4 number of first sector in first big endian path table,
as a big endian double word
4 number of first sector in second big endian path table,
as a big endian double word, or zero if there is no
second big endian path table
34 root directory record, as described below
128 volume set identifier
128 publisher identifier
128 data preparer identifier
128 application identifier
37 copyright file identifier
37 abstract file identifier
37 bibliographical file identifier
17 date and time of volume creation
17 date and time of most recent modification
17 date and time when volume expires
17 date and time when volume is effective
1 1
1 0
512 reserved for application use (usually zeros)
653 zeros
Path table
Path table opisuje strukturę katalogów dysku w skróconej formie. Celem path table jest minimalizacja liczby odczytów potrzebnych do znalezienia informacji o katalogu jakiegoś pliku.
Zawartość path table wygląda następująco:
length
in bytes contents
-------- ---------------------------------------------------------
1 N, the name length (or 1 for the root directory)
1 0 [number of sectors in extended attribute record]
4 number of the first sector in the directory, as a
double word
2 number of record for parent directory (or 1 for the root
directory), as a word; the first record is number 1,
the second record is number 2, etc.
N name (or 0 for the root directory)
0 or 1 padding byte: if N is odd, this field contains a zero; if
N is even, this field is omitted
Jak widać struktura ta zawiera dowiązania katalogów do ich ojców. W ten sposób możemy odnaleźć ścieżkę do katalogu w czasie liniowym. Zakładając, że obliczenia w pamięci operacyjnej są dużo szybsze i fakt, że struktura jest mała (możemy wszystkie takie struktury zmieścić w pamięci), daje nam to czas stały odczytu z płyty CD.
Directory
Katalogi tworzą drzewo katalogów. Drzewo katalogów zawsze ma korzeń. Jest nim root. Katalogi mogą być zagnieżdżone do ośmiu poziomów (root + 7 podkatalogów). W katalogach trzymane są informacje o wszystkich plikach. Informacje te zawierają: offset pliku, rozmiar pliku, data i czas utworzenia i modyfikacji, flagi atrybutów i nazwę pliku. Oprócz tego jest opcjonalne pole rozszerzeń dla systemu Macintosh. Informacje o trybie dostępu do pliku dla systemach wieloużytkownikowych trzymane są w oddzielnym polu.
Struktura Directory wygląda następująco:
length
in bytes contents
-------- ---------------------------------------------------------
1 R, the number of bytes in the record (which must be even)
1 0 [number of sectors in extended attribute record]
8 number of the first sector of file data or directory
(zero for an empty file), as a both endian double word
8 number of bytes of file data or length of directory,
excluding the extended attribute record,
as a both endian double word
1 number of years since 1900
1 month, where 1=January, 2=February, etc.
1 day of month, in the range from 1 to 31
1 hour, in the range from 0 to 23
1 minute, in the range from 0 to 59
1 second, in the range from 0 to 59
(for DOS this is always an even number)
1 offset from Greenwich Mean Time, in 15-minute intervals,
as a twos complement signed number, positive for time
zones east of Greenwich, and negative for time zones
west of Greenwich (DOS ignores this field)
1 flags, with bits as follows:
bit value
------ ------------------------------------------
0 (LS) 0 for a norma1 file, 1 for a hidden file
1 0 for a file, 1 for a directory
2 0 [1 for an associated file]
3 0 [1 for record format specified]
4 0 [1 for permissions specified]
5 0
6 0
7 (MS) 0 [1 if not the final record for the file]
1 0 [file unit size for an interleaved file]
1 0 [interleave gap size for an interleaved file]
4 1, as a both endian word [volume sequence number]
1 N, the identifier length
N identifier
P padding byte: if N is even, P = 1 and this field contains
a zero; if N is odd, P = 0 and this field is omitted
R-33-N-P unspecified field for system use; must contain an even
number of bytes
Struktura ta przechowuje pojedyńczy wpis dotyczący katalogu lub pliku. W każdym katalogu znajdują się dwa specjalne katalogi:
· “.” - pokazuje na siebie
· “..” - pokazuje na ojca
Podsumowanie
ISO 9660 jest systemem plików bardzo uporządkowanym. Zapewnia bardzo szybki dostęp do informacji o dysku, katalogach, plikach, czy do samych danych plików. Przy tym jest rozpoznawany przez wszystkie systemy operacyjne. W opisanych strukturach bardzo złożone byłoby natomiast dodawanie nowych informacji, czy modyfikacja starych. Na szczęście system plików ISO 9660 służy tylko do odczytu.
Materiały
http:// http://www.wikipedia.org/wiki/ISO_9660 informacje ogólne o ISO 9660
http:// http://www.alumni.caltech.edu/~pje/iso9660.html ogólny opis sposobu przechowywania danych
http:// http://www.angelfire.com/pa2/mpx/iso9660.html szczegółowy opis struktur danych