Systemy plików

Prezentacja w ramach przedmiotu Systemy Operacyjne 2002

Autor: Andrzej Karczyński

 

ISO 9660

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