AmigaDOS è uno dei moduli principali del sistema operativo AmigaOS e si occupa della memorizzazione dei dati su dispositivi come hard disk e floppy disk.

Commissionato a MetaComCo da Commodore, AmigaDOS deriva principalmente dal sistema operativo TripOS, quest'ultimo scritto in BCPL. Dall'integrazione con TripOS deriva anche l'interfaccia a riga di comando di AmigaDOS, AmigaShell.

Storia Il file System originario Amiga FileSystem è derivato dal porting di alcune parti di TripOS in AmigaOS e fu scritto in BCPL prima del 1985. Da principio non era stato pensato per la velocità, aveva inoltre un alto grado di ridondanza per salvaguardare quanto più possibile i dati memorizzati sui floppy disk. Con l'avvento di hard disk sempre più capienti ed economici si decise di migliorare l'Amiga Filesystem includendo il supporto di questi dispositivi ed eseguendo un lavoro di riscrittura dal BCPL all'assembly 68000 per renderlo più veloce. Da questa riscrittura nacque l'Amiga FastFileSystem che venne introdotto per la prima volta con la versione 1.3 di AmigaOS e presenta anche un timido supporto per gli hard link.

Con l'avvento di AmigaOS 2.x vennero introdotte due varianti che integravano la caratteristica International che permette di avere i nomi dei file contenenti anche caratteri accentati.

Con la versione 3.0 dell'OS fu presentata una nuova versione del FastFileSystem Amiga. Questa supporta gli hard link e i soft link, introducendo un'ulteriore variante allo stesso filesystem cui si aggiunge il supporto alla cache per la lettura delle directory. Questa variante, definita Directory Caching, è un accorgimento che permette di ritrovare i dati più velocemente sul floppy e sull'Hard Disk. Come i sistemi di caching usati su altri sistemi fa un certo uso dello spazio sul disco.

Con le revisioni 3.5 e 3.9 di AmigaOS L'Amiga FileSystem, comprendente tutte le sue varianti, viene reso estremamente più robusto e sicuro ed introduce il supporto di hard disk maggiori di 4 Gb, accogliendo come standard la modifica chiamata NSDPatch che permette ad Amiga di indirizzare 264 bit, pari a 4 exabyte di memoria fisica. Dalla versione 3.5 di AmigaOS sia NSDPatch, che il supporto a dischi rigidi di grandissime dimensioni sono quindi standard per questo sistema operativo.

Con AmigaOS 4.0 l'Amiga FileSystem è stato completamente riscritto in C mantenendo tutte le sue precedenti caratteristiche ed implementando nuove API. Nasce così l'Amiga FastFileSystem2 per PowerPC che supporta i nomi fino a 108 caratteri (LFN o Long File Name).

Caratteristiche A differenza di Linux che richiede un mount point obbligatorio, su Amiga un device può divenire di avvio semplicemente se ha priorità superiore rispetto a tutti gli altri device e il sistema operativo installato. Al momento dell'avvio AmigaDOS crea un'assegnazione denominata "SYS:" che punta al nome del device di boot.

Assumendo come nome di device "DH0", tipicamente usato per i dischi-fissi, e come nome del volume "Workbench" abbiamo 3 modi per indicare ad AmigaDOS il volume di avvio: SYS:, DH0: e Workbench:.

A partire dall'Amiga OS 2.0 è stato reso disponibile un comodo boot menu accessibile tenendo contemporaneamente premuti entrambi i tasti del mouse all'atto dell'accensione o al reset. Questo menu permette di fare il boot da qualsiasi device o hard disk collegato al sistema, e, nelle versioni successive, anche di inibire il caricamento di alcune partizioni rispetto ad altre per nasconderle così al sistema. Amiga non ha limiti riguardo al numero di partizioni: il numero di unità disponibili è limitato dal tipo di interfaccia usata (IDE o SCSI). Più schede di espansione con bus IDE o SCSI possono essere collegate contemporaneamente, aumentando il numero di unità disponibili e moltiplicando le possibilità di suddividerle in partizioni.

Drawer (o "cassetti"): Il sistema operativo Amiga per convenzione identifica ciascuna directory come drawer, cioè un "cassetto" in cui tenere ordinate le proprie cose, estendendo la metafora del banco di lavoro (workbench). Le icone del Workbench 1.1, 1.2 e 1.3 rimandavano graficamente a questo. Ordine dei byte: Amiga usa la notazione big endian, detta anche Motorola Order, nel codificare i byte dei numeri interi su supporto fisico. Il byte più significativo MSB (Most Significant Byte) viene per primo, poi quelli meno significativi o LSB (Lesser Significant Bytes) in ordine decrescente del valore di significatività (MSB LSB per i numeri interi a due byte, B3 B2 B1 B0 per gli interi a 4 byte). Mentre i personal computer basati su processori Intel della famiglia x86 seguono l'ordine byte detto little endian. Struttura dei Volumi di AmigaOS: L'inizio del volume floppy contiene uno spazio per i settori che possono contenere il codice di boot. Al centro dello stesso volume vi sono le informazioni sulla directory di root e le informazioni sulle directory e sul loro contenuto e dove sono localizzati i blocchi liberi e quelli usati. La lunghezza dei file e la ramificazione delle directory sono limitate solo dalla grandezza dei dischi usati. Prima dell'avvento del Kickstart versione 2.0 il bootblock di un volume Amiga comprendeva i primi 2 settori del floppy disk (settore 0 e settore 1). Con l'adozione del Kickstart 2.0, il boot tramite blocchi bootblock può essere fatto da qualsiasi device. Blocchi dati (grandezza del blocco o BSIZE): L'OFS filesystem supporta 488 byte di dati puri ogni blocco dati di struttura standard di 512 byte. 24 byte sono riservati. FFS invece può utilizzare tutti e 512 byte nel blocco dati. Oltre alla grandezza standard di 512 byte, AmigaOS può usare indifferentemente grandezze del blocco che siano 512 byte, o che siano doppie (1024 byte), quadruple (2048 byte), o maggiori. Rootblock, Blocco root (o radice): Il blocco radice risiede fisicamente a metà del volume. Sui dischi a bassa densità è il blocco 880, e 1760 per quelli ad alta densità. Il blocco radice contiene informazioni sul disco, il suo nome, la data in cui è stato formattato, e ovviamente contiene le informazioni su come Amiga debba accedere ai file, alle directory e ai link localizzati nella directory radice. Hash table: per trovare il primo settore di una directory o di qualsiasi altra entry all'interno della struttura del media usato AmigaOS calcola il suo valore di hash (hash value) tramite un algoritmo. Il valore di Hash viene quindi usato per accedere alla HashTable (o campo "ht") nel blocco root. La HashTable contiene il numero del primo blocco dell'oggetto considerato che può essere l'intestazione (o header) del file, il blocco di Directory o il blocco Link. Se differenti nomi hanno lo stesso valore nella hashtable, gli altri blocchi sono memorizzati in una lista. Questa fa riferimento al campo chiamato next-hash all'interno dell'intestazione del file o del blocco di Directory. Per esempio i nomi: file_1a, file_24 e file_5u condividono uno stesso valore di hash. Case insensitive: I nomi di file non si differenziano con i caratteri maiuscoli e minuscoli. Lunghezza dei nomi dei file: Il filesystem Amiga originario supportava nomi di file lunghi al massimo 30 caratteri, meglio dei soli 8 caratteri del DOS, aventi un'estensione di massimo 3 caratteri necessaria al sistema operativo per riconoscere il tipo di file. I nuovi filesystem hanno portato il limite massimo per il nome di un file Amiga a 108 caratteri. Estensioni dei nomifile: Le estensioni non sono necessarie sotto Amiga. Ad esempio per riconoscere quali siano gli eseguibili, il sistema operativo fa ricorso a particolari configurazioni esadecimali di byte all'inizio del programma chiamate in gergo magic cookies ossia biscotti magici. Altri file hanno nell'intestazione analoghi segni di riconoscimento riportati in sezioni chiamate "chunk" come avviene per i file IFF standard su Amiga.

Organizzazione delle informazioni Come tutti i computer, anche Amiga ha un suo sistema per la gestione dei file, delle directory e dei volumi fisici e virtuali (Hard Disk, Tape stream, eccetera).

Amiga supporta diversi tipi di unità e nell'ordine:

Device, le periferiche sono considerate come entità fisiche (lettore di floppy disk), ad esempio DF0: (Device o Disk Floppy numero 0). Non bisogna confondere i device con i device handler, cioè i programmi che si occupano della gestione di periferiche, che sono equiparabili ai driver. Per convenzione in generale sotto Amiga si distingue fra device handler e driver, ma non necessariamente. Il nome driver viene in genere riservato ai veri e propri driver che controllano le periferiche tipo stampanti, modem, monitor, eccetera. Device virtuali, come ad esempio: Speak:, che è il device che controlla il sintetizzatore vocale, Ram:, un device residente nella RAM fisica (vedere la sezione corrispondente), Nil:, che è l'unità dove si reindirizza a NULL l'output di un comando quando non se ne ha bisogno. Volumi, cioè i volumi fisici inseriti dentro i lettori e montati dal sistema. Anche questi vengono considerati come unità, come ad esempio il floppy disk inserito all'interno del lettore floppy. Se ad esempio il volume inserito nel lettore floppy è il disco che ha un nomedisco tipo Workbench, esso verrà considerato unità Workbench:. Notare il carattere "due punti" che in Amiga, come nel mondo PC, identifica un'unità. Dischi rigidi, che vengono considerati in genere come volumi. Unità virtuali, si tratta di unità che non esistono fisicamente e che si appoggiano a unità fisiche realmente esistenti, ad esempio CrossDos che implementa il file system PC per i floppy disk e le partizioni in formato FAT. CrossDos vedrà l'unità lettore floppy come PC0: (o unità PC numero 0). In questo caso alla stessa meccanica si può accedere sia come DF0: quando si usano floppy formattati con Amiga file system, sia come PC0: quando si usano floppy formattati da un PC. Partizioni virtuali Un altro esempio tipico di unità virtuali sono le partizioni virtuali, come possono esserlo gli hardfile. Amiga non supporta gli hardfile (hard disk racchiusi in un solo file) direttamente, ma lo fa tramite i device di programmi presenti sul mercato. L'emulatore di Macintosh A-Max è in grado di creare hardfile in formato Mac; con AmigaUAE (versione Amiga di Unix Amiga Emulator, l'emulatore Amiga source free) la piattaforma Amiga è in grado di vedere hardfile addirittura anche formattati con il suo stesso standard; infine con l'emulatore PC-Task può creare, leggere e scrivere hardfile in formato PC-FAT, che possiedono tutte le caratteristiche di un qualsiasi hard disk reale del mondo PC.

Gestione dei processi I processi possono accedere ad alcune funzioni fornite dal modulo AmigaDOS, in particolare quelle legate all'I/O su memorie di massa, a loro volta interfacciate, a basso livello, con AmigaDOS per mezzo di un particolare processo, noto come Amiga FileSystem.

File system Come caratteristica intrinseca, l'Amiga Filesystem è innanzitutto un processo particolare che accede alle funzioni offerte dall'AmigaDOS. Al momento dell'avvio di AmigaOS il filesystem assegna come mount point (punto di montaggio/volume di avvio) la root (radice) del device da cui attingere i file di sistema necessari al caricamento dell'OS. Tipicamente il volume di avvio è la partizione che contiene il sistema operativo, ma questi può essere anche un generico volume: un dischetto, un CD-ROM, una chiave USB.