Amiga Old File System

Az AmigaOS eredeti fájlrendszere

Az Amiga számítógépek eredeti, vagy régi fájlrendszere az Original File System, illetve Old File System (röviden: OFS) volt[4] az AmigaOS operációs rendszer 1.0 és 1.2 verziói között.[2]

OFS (Old File System)
FejlesztőMetaComCo
Bevezetve1985
Partícióazonosító'DOS\0'[1]
Struktúra
Könyvtárszerkezethierarchikus
Korlátok
Fájlnév maximális hossza32 karakter[1]
Maximális kötetméret8 MiB[1]
Tiltott karakterek a fájlnevekben':' és '/'[2]
Képességek
Tárolt dátumokmódosítás (mtime)
Dátumhatárok1978. január 1. - 2157
Dátumfelbontás1/50s
Attribútumokrwedspah[3]
Beépített tömörítésNincs
Beépített titkosításNincs
SISNincs
Támogatott operációs rendszerekAmigaOS

Elnevezés szerkesztés

Eredeti elnevezése csak egyszerűen Amiga File System volt és az AmigaDOS részeként alapvetően nagyon hasonló az alapul szolgáló TRIPOS fájlrendszeréhez.[2] A "régi", illetve "eredeti" jelzőt az AmigaOS 1.3-ban debütált Fast File System megjelenése után kapta.[5]

Jellemzők szerkesztés

Az OFS alapvetően a floppy lemezes használatra adaptált hierarchikus felépítésű, fastruktúrát mutató könyvtárszerkezetű fájlrendszer, merevlemezeken jellemzően nem alkalmazták.[6] Ennek fő oka az volt, hogy minden 512 bájt méretű blokk/szektor első 24 bájtja metaadatokat tartalmazott, akkor is, ha ugyanazon allomány helyezkedett el rajtuk. A gyakorlatban ez 512 bájt helyett 488 bájt valós használható blokk-kapacitást jelentett, mely egy kis kapacitású floppy lemezen elfogadható, de egy nagyméretű merevlemezen, nagyméretű fájloknál már jelentős kapacitásveszteséget jelent.[2] Másik szintén lényeges ok pedig az, hogy az OFS-sel párhuzamosan használt Kickstart 1.0-1.2 nem tud merevlemezről bootolni.[7]

Adatblokk metaadatok szerkesztés

Méret Tartalom
4 bájt "Ez a blokk egy adatblokk" azonosító
4 bájt A fájl fejlécére visszamutató pointer
4 bájt A fájlon belüli blokk sorszám
4 bájt Blokkméret
4 bájt A következő blokkra mutató pointer
4 bájt Ellenőrző összeg (Checksum)

Lemezkezelés szerkesztés

Az amigák MFM kódolást használnak hajlékonylemezek kezelésére. Összesen 80 cilinder található egy floppy lemezen és minden cilinder 2 MFM-sávot (track) tartalmaz, egyet-egyet a lemez két oldalán. Az amigák többsége duplasűrűségű (DD) lemezeket alkalmaz, melyeknél 11 szektor van MFM-trackenként. Az Amiga 4000 által használt nagysűrűségű (HD) lemezeknél ugyanez 22 szektor.[8] A lemezek geometriája összefoglalva így írható le:

  • DD lemezek: 512 bájt/szektor, 11 szektor/sáv, 2 sáv/cilinder, 80 cilinder/lemez
  • HD lemezek: 512 bájt/szektor, 22 szektor/sáv, 2 sáv/cilinder, 80 cilinder/lemez[9]

A DD-s lemezeken összesen 11 * 2 * 80 = 1760 (0 to 1759) szektor vagy blokk található, míg HD-s lemezek 22 * 2 * 80 = 3520 szektort tartalmaznak. Egy Amiga végül 1760 * 512 / 1024 = 880 KiB adatot tárol DD-s, míg 1760 KiB-ot HD-s floppy lemezeken.[9]

Az OFS fájlrendszer kiindulópontja, az első vagy gyökérblokk (DD esetén a 880. HD esetén az 1760. blokk) a lemez fizikai értelemben vett közepén található, mely így minimalizálja a pozícionálási időt. A pontos pozíció kiszámítása a következő:

numCyls = highCyl - lowCyl + 1

highKey = numCyls * numSurfaces * numBlocksPerTrack - 1

rootKey = INT (numReserved + highKey) / 2

A gyökérblokk alapvető információkat tartalmaz a lemezről, mint például: lemez/kötetnév, formázás dátuma stb, de itt tárolódik a gyökérkönyvtár (root) pozíciója, azaz elérhetősége is.

A '/' és ':' karakterek tiltottak mind fájl-, mind kötetnevek esetén, de ékezetes betűk és a következő karakterek használhatók: *!@#$%|^+&_()=\-[]{}';",<>.? A karakterek lehetnek kis- és nagybetűsek is, de ennek valós jelentősége nincs, mert a fájlrendszer nem különbözteti meg őket egymástól, így például a "MyFile" és a "myfile" egyazon könyvtár azonos fájljára utal.

Hibajavító képesség szerkesztés

A fájlrendszer elméletben jó hibajavító képességekkel rendelkezett, azonban a Commodore által erre a célra szállított "DiskDoctor" nevű alkalmazás nem tudta betölteni rendelt feladatát és hamar elnyerte a rosszízű "DiskDestroyer" gúnynevet. A tapasztalatok alapján elmondható, hogy a legtöbb esetben rosszabb állapotba hozta a lemezt, mint a használata előtt volt.[10]

Az alapvető cél az lett volna, hogy a lemez sérült adatait helyreállítsa, újra olvashatóvá téve azt. Ehhez képest, amikor talált egy hibás szektort (blokkot), akkor nem csak azt írta felül, hanem az egész sávot (track), azaz 11 szektort egy helyett. Ez különösen a legelső szektor (root block) hibájának "javítása" esetén volt igen kellemetlen. A DiskDoctor ezen kívül nem volt képes 72 blokknál, azaz 36865 bájtnál nagyobb méretű fájlok javítására és hibásan javított fájlstruktúrát olyan esetekben, amikor a szülőkönyvtár nélkül maradt több "árva" könyvtárban ugyanolyan nevű állományok voltak. A szoftver továbbá teljesen alkalmatlan volt a videójáték-gyártók által - másolásvédelmi célokból - előszeretettel alkalmazott Non-DOS lemezek javítására, mert azonnal felülírta a gyártói egyedi boot blokkot egy szabványossal, ami után használhatatlanná vált a lemezen lévő, jellemzően játékszoftver.[10]

Dátumkezelés szerkesztés

A blokkok dátummezői a következő struktúrát követik: DAYS, MINS, TICKS, ahol:

  • DAYS jelenti az 1978. január 1-jétől eltelt napok számát,
  • MINS tartalmazza az éjféltől eltelt percek számát és
  • TICKS fejezi ki a másodpercet 1/50-edes egységekben.

A DAYS nulla értéke általában nem megengedett a legtöbb programban és mivel az érték 32-biten tárolódik, ezért az amigák mentesek mind a 2000. év problémájától, mind pedig a 2038. év problémájától.

Keresőalgoritmus szerkesztés

Az AmigaDOS a fájlok, könyvtárak, linkek elérésére az ún. hasításos keresés módszerét alkalmazza. A függvény kiszámolja, hogy a blokkban mely 32-bites szót használja mutatóként a hash-táblára, mely megadja a konkrét fájl-, link-, vagy könyvtárbejegyzést.

Lásd még szerkesztés

Jegyzetek szerkesztés

  1. a b c Thomas Rapp: File System Limits (angol nyelven), 2011. április 30. (Hozzáférés: 2024. április 2.)
  2. a b c d OFS (angol nyelven), 2020. április 9. (Hozzáférés: 2024. április 2.)
  3. AmigaOS Manual: AmigaDOS Command Reference / PROTECT (angol nyelven). (Hozzáférés: 2024. április 2.)
  4. Michael Steil: Reconstructing the Leftovers on the Amiga Kickstart 1.0 Disk (angol nyelven), 2008. november 4. (Hozzáférés: 2024. április 2.)
  5. Michael Steil: Tripos, the Roots of AmigaDOS (angol nyelven), 2009. május 19. (Hozzáférés: 2024. április 2.)
  6. Overview of Amiga Filesystems (angol nyelven). kernel.org . (Hozzáférés: 2024. április 3.)
  7. 4. Workbench 1.3, AmigaDOS Inside & Out (angol nyelven). Abacus / Data Becker, 111. o. (1988) 
  8. Amiga Floppy Boot Process and Physical Layout (angol nyelven). AmigaOS Documentation Wiki . (Hozzáférés: 2024. április 3.)
  9. a b Regius Kornél: Amiga AT-BUS Harddisk vezérlő - 3. rész (magyar nyelven), 2009. május 19. (Hozzáférés: 2024. április 2.)
  10. a b Amiga history: Why was "Disk doctor" so spectacularly bad at its job? Here is why... (angol nyelven). Amiga.org . (Hozzáférés: 2024. április 3.)