norma ISO 9660

úvodem

Norma se zabývá řadou věcí. Nás budou nejvíce zajímat tyto :

Informace na nosiči jsou rozděleny do logických sektorů, které jsou číslované vzestupně od 0. Každý sektor obsahuje několik 8bitových slov - bytů. Zatím jsem se nesetkal s jinou délkou, než 2048. Podle normy však může být i odlišná délka sektoru, přesněji 2n+9 kde n>= 0.

Nosič dat je rozdělen na dvě části :

Systémovou část je tvořena sektory 0 až 15 a norma se jí vůbec nezabývá.

Datová část se začíná sektorem číslo 16. Na jejím začátku jsou umístěny následující informace :

Za těmito popisy jsou zaznamenány obsahy souborů. Každý soubor bude určen deskriptorem v adresáři. Adresář bude uložen podobně jako soubor a bude určen deskriptorem adresáře buď v adresáři nebo deskriptoru nosiče dat. Každý adresář bude také určen záznamem v tabulce cest. A každá tabulka cest bude určena v deskriptoru nosiče dat. Datová část může být navíc rozdělena do tzv. segmentů, které tvoří souvislé oblasti. Segmenty jsou rovněž definovány v deskriptoru nosiče dat.

Obsah souboru je zaznamenán v jedné či více souvislých oblastech - tzv. sekcích. Každá sekce má záznam v adresáři. Správný sled sekcí je určen pořadím korespondujících záznamů v adresáři. Každá sekce může být součástí více souborů a také se může v jednom souboru vyskytovat vícekrát. Některá ze sekcí souboru se může dokonce nacházet na jiném nosiči dat v tzv. sadě nosičů, která je popsána v následujícím odstavci.. Na počátku sekce může být i záznam rozšířeného atributu souboru. Pokud je přítomen záznam rozšířeného atributu, vlastní obsah souboru začíná počínaje novým sektorem. Soubory mohou být také v prokládaném módu, kdy je pro danou sekci určena velikost bloku a velikost mezery mezi jednotlivými bloky.

Sada nosičů dat je složena z jednoho nebo více nosičů, které mají společné označení. Nosiče jsou číslovány vzestupně od 1. Každý nosič v sadě nosičů bude obsahovat také popis souborové struktury předchozích nosičů (nosiče s menším číslem).

Z předešlého textu vyplývá, že norma podporuje hierarchickou strukturu adresářů s následujícími vlastnostmi :

Každý adresář má v tabulce cest svůj záznam. Tento záznam určuje samotný adresář a jeho nadřízený adresář. Záznamy jsou v tabulce cest seřazeny takto :

Za tabulkou cest může být zaznamenána ještě její kopie. Na nosič je možno zaznamenávat postupně. Ve shodě s každou další hierarchií adresáře zaznamenanou na nosiči budou zaznamenány i další tabulky cest, které budou určovat odpovídající hierarchii. Podle toho, jak jsou v tabulce cest reprezentovány číselné hodnoty, norma rozlišuje tabulku cest typu L a tabulku cest typu M. Typ L podporuje Little Endian, typ M Big Endian reprezentaci.

Nyní k výše zmíněné reprezentaci čísel. 16-bit čísla jsou na nosiči dat zaznamenána jako :

S předchozím koresponduje uložení 32-bit čísel :

Deskriptory nosiče dat

Deskriptory nosiče dat určují nosič, segmenty zaznamenané na nosiči, určité atributy nosiče atd.

obecný formát deskriptoru nosiče dat

Jako typ deskriptoru nosiče dat může být:

Hodnoty položek standardní identifikátor, verze nosiče dat a dále verze struktury souborů (u hlavního deskriptoru) budou identifikovat tuto mezinárodní normu.

zaváděcí záznam

Zaváděcí záznam je určen pro možnost zavedení nějakého systému přímo z nosiče dat.

koncový znak deskriptoru nosiče dat

Zaznamenaná sada deskriptorů bude ukončena jedním nebo více koncovými znaky deskriptoru nosiče dat.

hlavní deskriptor nosiče dat

Formát záznamu adresáře bude objasněn později.

Má-li 1. byte u identifikátoru vydavatele a u aplikačního identifikátoru hodnotu 5F, pak to znamená, že zbývající bytes určují identifikátor souboru (maximálně 8.3 znaků), který je součástí hlavního adresáře. Jiné pravidlo hovoří, že jsou-li pole identifikátorů vyplněna znakem mezery, pak to znamená, že obsah těchto identifikátorů nebyl vůbec definován.

Obdobně nulová hodnota v položce počátku sekundární tabulky cest znamená, že tato tabulka neexistuje.

formát datumu a času (17 bytes)

doplňkový deskriptor nosiče dat

Tento deskriptor se podobá hlavnímu deskriptoru až na položky příznaky nosiče a escape sekvence. Příznaky nosiče dat jsou spjaty s escape sekvencemi, což nás nemusí zajímat.

deskriptor segmentu nosiče dat

Deskriptor segmentu nosiče dat určuje nějaký segment nosiče dat.

deskriptory souboru a adresáře

formát záznamu adresáře

Velikost sekce souboru nezahrnuje případný přidružený záznam rozšířeného atributu. Datum a čas již nejsou reprezentovány ascii hodnotami cifer, jako tomu bylo u deskriptorů nosiče dat.

formát datumu a času (7 bytes)

Jestli-že v položkách velikost bloku (jednotky) souboru a velikost prokládané mezery jsou 0, pak je sekce souboru zaznamenána v neprokládaném módu. Zarovnávací byte bude v tabulce pouze tehdy, je-li délka identifikátoru souboru lichá.

příznaky souboru

Identifikátor souboru se skládá z názvu souboru, oddělovače 2E, přípony, oddělovače 3B, čísla verze souboru (1 až 32767). Pokud je název souboru prázdný, pak přípona musí obsahovat alespoň jeden znak, a naopak. Název i přípona mohou být dlouhé max. 30 znaků. Identifikátor adresáře nemá žádnou příponu a verzi.

formát záznamu tabulky cest

formát záznamu rozšířeného atributu

permission

Závěrem bych naznačil, jak by se mohlo postupovat při snaze o získání obsahu nějakého souboru. Při inicializaci by bylo vhodné zkontrolovat, zda-li se jedná o nosič zapsaný podle této normy. Sektor č. 16 by měl obsahovat hlavní deskriptor nosiče dat, a další sektory volitelně zbývající deskriptory nosiče dat. Tyto deskriptory musí mít jasně identifikovány offsetem 1-6, což jsou položky std. identifikátor nosiče dat a verze deskriptoru nosiče dat.

Jak zjistit obsah hlavního adresáře? V hlavním deskriptoru nosiče dat je na offsetu 156 umístěn záznam hlavního adresáře, jehož struktůru tvoří několik důležitých položek - viz tabulka formát záznamu adresáře, který platí jak pro samotný hlavní adresář, tak i pro všechny ostatní soubory a adresáře umístěné na nosiči. Je tedy nutno přihlédnout k možnosti výskytu rozšiřeného atributu před vlastním obsahem souboru, což bude mít za následek zvýšení čisla počátečního sektoru a také možnost uložení v prokládaném módu. Z hlavního destriptoru nemusíme však načíst obsah celého hl. adresáře. Je nutné zjistit, zda-li se mezi hlavním a koncovým desktriptorem nosiče dat nevyskytuje ještě deskriptor(y) určující další segment. Potom předpokládím, že prvních n sektorů takového segmentu je opět tvořeno sadou deskriptorů a zbytek obsahu hl. adresáře lze načíst obdobně jako první část.

Nyní, když jsme již někde v hl. adresáři, tak jak se dostat na obsah souboru, či jiných podardresářů? Obdobným způsobem, že obsah hl. adresáře není nic jiného, než formáty záznamu jednotl. souborů a podadresářů, přičemž soubor může mít za sebou více záznamů popisujících jednotl. sekce souboru.

Nakonec bych ještě podotkl, že strukturu jednotl. adresářů lze pohodlněji získat z tabulky cest, která může být s každým dalším segmentem doplňována. Poč. sektor a délku tabulky cest lze jednoduše získat z hl. deskriptoru nosiče dat.


připomínky: mojmir.rychly.fei@vsb.cz,l90377@vsb.cz
dokument je součást projektu vývoje operačního systému Tuox, společné semestrální práce do předmětu Operační systémy, zimní semestr 1997. http://www.cs.vsb.cz/~gry72/tuox/sources2/cd/iso9660.html