AmigaDOS

AmigaDOS è uno dei moduli principali di 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 scritto in BCPL ed è anche responsabile della gestione di alcuni task particolari che vengono identificati singolarmente con il nome di processo. 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. Dall'integrazione con TripOS deriva anche l'interfaccia a linea di comando di AmigaDOS, AmigaShell.

Indice

I Filesystem di AmigaOS

Nel corso degli anni Amiga ha visto l'alternarsi di diversi file system usati per la organizzazione logica dei suoi dispositivi fisici. Quando viene trattato l'argomento filesystem Amiga sarebbe dunque più corretto parlare di filesystem al plurale. Ognuna di queste versioni successive del filesystem ha migliorato sensibilmente prestazioni e caratteristiche del suo predecessore, ha implementato nuove funzioni e ne ha corretto man mano i difetti, e mancanza di robustezza del filesystem primgenio.

Storia e caratteristiche principali

Il file system originario, Amiga FileSystem è derivato dal porting di alcune parti di TripOS in AmigaOS e fu scritto in BCPL prima del 1985.

Come caratteristica intrinseca, l'Amiga Filesystem è innanzitutto un processo particolare che accede alle funzioni offerte dall'AmigaDOS.

Bisogna ammettere che il Filesystem originario 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, il quale 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. Tale variante definita appunto come 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 2^64 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 AmigaOS4.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. il quale supporta i nomi fino a 108 caratteri (LFN o Long File Name).

I filesystem di altre piattaforme (FAT, FAT32, Ext2, Apple, ed altri) vengono supportati da Amiga tramite programmi driver di compatibilità che ne implementano funzioni di lettura e scrittura. Alcuni filesystem di programmatori terzi (PFS, SFS), assai apprezzati dagli utenti, dapprima letti tramite driver, sono stati supportati in modalità standard, in successive versioni dell'AmigaOS, o in sue varianti come MorphOS.

Specifiche dei Filesystem di AmigaOS

Ricapitolando esistono numerose varianti dell'Amiga Filesystem: il filesystem Amiga che accompagnava le primissime versioni di AmigaOS viene definito come OFS, cioè OLD File System, poi si ha il FFS cioè Fast File System. Le varianti di Amiga Filesystem sono INTL o International, DIRC o Directory Cache Mode, LFN o LongFileNames:

Old File System /Fast File System

Fast File System 2 (AmigaOS4.0)


FFS2 comprende tutte le precedenti varianti ed attraverso delle nuove API tale filesystem può acquisire nuove caratteristiche a livello di blocchi per mezzo di un'interfaccia a plugin. Fin'ora (AmigaOS4.0Update-1) sono stati inclusi due plugin:


Vi sono anche alcuni File System prodotti da terzi che si distinguono per essere più efficienti e performanti:

Lo Smart File System (SFS) Freeware e il Professional File System (PFS) commerciale, scritto in interamente in assembly 68k.

...

Lo Smart File System o SFS è diventato uno dei due filesystem supportati da MorphOS ed è supportato anche da AmigaOS4.

Gestione delle memorie di massa

AmigaOS fino alla versione 3.x per convenzione riconosceva tutti gli Hard Disk come se fossero SCSI (anche quelli EIDE, o XT, o quelli connessi con qualsiasi altro bus). Lo SCSI_Device di AmigaOS si occupava poi delle opportune "traduzioni" dei comandi da dare alle diverse periferiche. Ciò deriva dal fatto che la prima interfaccia per hard disk su Amiga fu lo scsi del modello A3000 e, nel momento in cui vennero commercializzati i modelli A600, A1200 ed A4000 con interfaccia IDE i progettisti pensarono di far gestire questa nuova interfaccia sempre dallo "file driver", lo scsi.device. In alcuni casi alcuni controller di terze parti utilizzavano appositi Device-Handler, ma in linea di massima tutti i compiti di gestione erano affidati allo scsi.device.

I dispositivi di memorizzazione che vengono riconosciuti da Amiga automaticamente, vengono preparati all'uso e gestiti da un programma di sistema unico chiamato HDToolBox che permette la loro prima inizializzazione, l'istallazione del RDB, il partizionamento, ecc...

Dalla versione 4.0 AmigaOS riconosce nativamente i dispositivi SCSI, IDE, ATA, USB, ecc. che vengono manipolati dal programma di sistema MediaToolBox. MTB mette a disposizione due modi per operare: "Normale" e "Esperto" (utenti avanzati). Nella modalità "Esperto" l'utente può modificare praticamente tutti i valori dell'RDB. Sempre dalla versione 4.0, AmigaOS mette a disposizione Partition Wizard: un programma di sistema per il recupero ed il salvataggio delle informazioni sui dispositivi di memorizzazione.

Rigid Disk Block

Gli Hard disk formattati con i filesystem Amiga sono caratterizzati dalla presenza dell RDB o RIGID DISK BLOCK, che risiede nel primo(i) cilindro del disco rigido.

L'RDB indica al sistema operativo da dove fare il boot, informazioni sull'hard disk, e può contenere, data la sua relativa capienza, il descrittore ad un intero filesystem. Amiga può così supportare di base anche filesystem non standard o non proprietari.

L'RDB solitamente risiede nei primi 16 blocchi sul disco. I blocchi possono anche essere memorizzati in cilindri sparsi su harddisk, ma questo tipo di approccio è stato sempre sconsigliato nei manuali Amiga. È più corretto utilizzare il primo cilindro (o cilindri) dell'harddisk per memorizzare questi blocchi dati. L'RDB (detto anche hardblocks), contiene tutti i dati specifici di un harddisk: il numero e la grandezza dei blocchi, il numero di traccie e di cilindri presenti su harddisk, ed altro. L'RDB punta anche a dei blocchi particolari: quelli che riportano le descrizioni delle partizioni (PartitionBlocks), i blocchi che riportano le immagini dei filesystem (FileSysHeaderBlocks), quelli che contengono le liste (dette 'mappe') dei blocchi danneggiati quei blocchi alternativi da usare al posto dei danneggiati (BadBlockBlocks), e infine, i blocchi che indicano le inizializzazioni da fare all'harddisk in fase di boot (LoadSegBlocks).

Questa differenza rende un disco rigido formattato con AmigaOS assai diverso dai sistemi presenti sui comuni PC, i quali nelle prime due tracce inseriscono un boot sector chiamato MBR Master Boot Sector. Le tecnologie RDB ed MBR sono ovviamente incompatibili tra di loro e ciò ha creato non pochi problemi. AmigaOS non riconosce i dischi in formato MBR mentre tra i sistemi operativi dei PC Linux è l'unico OS in grado di gestire, seppur in modo limitato, gli harddisk in formato RDB.

I dispositivi ottici

Un discorso a parte meritano i filesystem per CD. Su Amiga sono implementati quelli riconosciuti dal consorzio per gli standard ISO 9660, con le estensioni Joliet e Rockridge. Lo stesso dicasi anche per i DVD. Anche in questo caso Amiga supporta gli standard esistenti. Questo significa che con Amiga è possibile scrivere e leggere CD che saranno visti su qualsiasi altro computer.

Nel caso di CD formattati con Amiga, vi possono essere sporadici problemi di lettura di alcune directory o dei nomi dei file su altre macchine (esempio: Windows 98). Il problema è dovuto all'eventuale utilizzo in Amiga di caratteri speciali (lettere accentate o altro), nei nomi delle directory o dei file. Se si ha l'accortenza di non usarli, non è stato rilevato nessun altro particolare problema. Viceversa Amiga supporta assai bene i nomifile del PC o del Macintosh. Questo è dovuto al fatto che Amiga, dal suo apparire segue lo standard caratteri ANSI (American Standard National Institute)/ISO-8859-1 (parlando in termini Microsoft sarebbe MS-Windows Code Page 1252).

Il nome di periferica convenzionalmente adottato da AmigaOS per queste unità ottiche è CD0:, a seguire vengono CD1:, CD2: e così via a seconda di quanti CD, o quanti masterizzatori siano connessi al sistema.

Geometria dei floppy disk Amiga Classic

Il file system Amiga classico ha un comando interno con un parametro wide offset a 32 bit (unsigned). Dunque la massima grandezza raggiungibile per un disco Amiga con questo filesystem era 2^32 bit = 4GB.

Prima dell'avvento dell'OS 3.5 esistevano numerose patch che aggiravano il limite dei 32 bit e portavano questo valore a 64. Dal File System incluso con l'OS 3.5 in poi, tutti i FS si appoggiano all'NSDPatch.

Il filesystem Amiga supporta dunque adesso volumi pari a 2^64 bit = 36.893.488.147.419.103.232 bit o, detto in byte: 4.611.686.018.427.387.904 cioè 4 ExaByte.

L'organizzazione delle informazioni su AmigaOS

Come tutti i computer, anche Amiga ha un proprio 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:

Dovendo parlare di hardfile, detti anche "hard disk racchiusi in un solo file", bisogna ricordare che Amiga non supporta gli hardfile direttamente, ma lo fa tramite i device di programmi presenti sul mercato. Con A-Max l'emulatore di Macintosh è in grado di creare Hardfile in formato Mac; con AmigaUAE (versione Amiga di UAE l'amulatore Amiga source free) la piattaforma Amiga è in grado di vedere hardfile addirittura anche formattati con il suo stesso standard; ed 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.

Pseudopartizioni o Unità Logiche

Il SO Amiga permette di creare pseudopartizioni.

Se si vuole creare un volume logico DATI da usare come unità "fittizia", all'interno dell'unità hard disk di boot (DH0: su Amiga), è sufficiente creare una directory con quello stesso nome ed aggiungere una riga di comandi con un editor di testi:

Assign Dati: DH0:Dati

nella prima riga del file batch chiamato user-startup (lo script di sistema che carica ad ogni boot i programmi e le preferenze volute dall'utente), locato nella directory s (abbreviazione che sta appunto per script) e che in Amiga è obbligatoriamente presente nella partizione di boot (DH0:s). Da quel momento e per qualsiasi tipo di operazione (esempio: nei salvataggi o nello spostamento di file) è sufficiente fare riferimento come percorso di unità a DATI: che comparirà automaticamente fra le altre unità disponibili nelle finestre di salvataggio o nei requester a schermo.

Scorciatoie e trucchi analoghi sono possibili per qualsiasi unità, directory o sottodirectory presenti sul sistema Amiga su cui si sta lavorando.

Ram Disk

Ram: e Rad: sono due device virtuali particolari. Si tratta di parti della memoria RAM che vengono usate come periferiche (ramdisk). Sono assai utili nei casi in cui si abbia un solo lettore floppy disk, come destinazione di "transito" per qualsiasi file in caso di copia da un supporto fisico ad un altro, eliminano ad esempio la necessità di togliere e mettere i dischi nel floppy disk più volte come avveniva nel mondo PC DOS. A differenza delle analoghe unità ramdisk comuni al mondo PC di grandezza fissa, il device RAM: di AmigaOS è completamente rientrante, cioè se non vi sono contenuti dati, occupa 0 byte di memoria, mentre se vi sono contenuti dati, il suo limite massimo è dato dal limite massimo della memoria fisica disponibile nel computer.

RAD:, introdotto con l'OS 1.3, è un device ramdisk resistente ai soft reset, (riavviamento semplice della macchina successivo al primo boot). In questo modo l'utente ha a disposizione un device molto potente che può essere usato in maniera assai proficua. Ad esempio se in Rad: viene replicato il sistema operativo Amiga, sarà possibile effettuare numerosi altri boot della macchina utilizzando questo device. In tal modo AmigaOS può partire direttamente dalla RAM di sistema, senza impegnare e usurare floppy disk o dischi rigidi che sottoposti ad un continuo utilizzo si consumerebbero più rapidamente. Amiga si comporta dunque allo stesso modo di un quiet computer (detto anche computer senza ventola e con hard disk a stato solido) fino all'eventuale spegnimento, o al dismount del device Rad:.
Per essere visto dal sistema Amiga, il device Rad: richiede di essere montato, (AmigaOS supporta anche i mount di periferiche in stile simile al SO linux), ma non basta smontarlo (umount) per rimuovere la sua presenza dal sistema: data questa natura di device resistente al reset, RAD: può essere rimosso dal sistema solo effettuando un hard reset o, in alternativa, è sufficiente uno spegnimento della macchina.

Caratteristiche

A differenza di Linux che richiede un mount point obbligatorio, su Amiga un device può divenire di avvio semplicemente se ha la priorità superiore rispetto a tutti gli altri device, e naturalmente che abbia 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, tra gli altri servizi, un comodo boot menù accessibile tenendo contemporaneamente premuti entrambi i tasti del mouse all'atto dell'accensione o al reset. Detto menù 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. È da menzionare, il fatto degno di nota che Amiga non ha limiti riguardo al numero di partizioni. Invece il numero di unità disponibili è limitato dal tipo di interfaccia usata (IDE o SCSI). Bisogna fare oltretutto presente che, 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.

Note

Amiga Classici

Il controller Amiga per i floppy disk, era inserito nel coprocessore chiamato anche Paula, che controllava tutti i flussi di I/O di Amiga, ed era un chip molto flessibile. Insieme con il Trackdisk_Device di Amiga era capace di pilotare ogni aspetto del motore e delle testine dei lettori floppy, che venivano costruiti apposta secondo le specifiche Commodore, con tutta la piedinatura contatti prevista dallo standard di riferimento riconosciuto a livello internazionale. Il mercato PC, invece nel corso degli anni, ha preferito implementare un set ridotto di istruzioni all'interno dei controller per i floppy. Gli stessi lettori floppy PC sono costruiti con un connettore che non riporta tutti i contatti previsti a livello di standard dai produttori di meccaniche per lettori di Floppy Disk.

La coppia Paula e Trackdisk_Device era capace di leggere e scrivere floppy in formato Amiga, PC, Atari TOS, Apple II ed addirittura Commodore 64, sia nel formato a 3 pollici e mezzo, sia in quello da 5" e 25, purché venisse collegato ad una meccanica adeguata. La stessa limitazione valeva per i floppy Macintosh, che nella versione a bassa densità (800KB) pretendevano di essere inseriti in un lettore floppy a velocità variabile. Paula infatti non capace di leggere e scrivere sui dischi a velocità variabile, se non in presenza di una meccanica adeguata. Addirittura, nell'epoca dei floppy da 3,5 pollici, la maggior parte dei controller per i floppy dl PC, per trovare l'inizio di una traccia, pretendevano ancora di usare il foro dell'index (predente nei floppy disk da 5,25"), Paula invece, già utilizzava all'epoca una "word di sincronizzazione". E, ricordando la compatibilità coi dischi Macintosh, è utile menzionare il fatto che i Mac utilizzavano l'encoding GCR invece che MFM.

Paula è strutturalmente, più semplice che un controller floppy PC, perché non effettua la decodificazione immediatamente dopo l'operazione di lettura, o l'encoding proprio prima dell'operazione di scrittura; questa viene eseguita dal software Amiga. L'encoding e decoding MFM, sui controller PC, viene realizzato dall'hardware, mentre Amiga può realizzare sia l'encoding GCR che quello MFM, perché è un lavoro svolto dalla CPU. e' interessante anche notare come in alcune versioni di AmigaDOS, la procedura di decoding e quella di encoding venivano realizzate dal Blitter.

Amiga con chipset AGA

[Abbozzo-modificare]

Mentre Paula, era un chip molto flessibile, anche se limitato dalle capacità del BUS dati di Amiga, che dedicava ai coprocessori un bus a soli 24 bit, Gayle, il controller dell'interfaccia IDE di A1200 ed A 4000, pure se aveva a disposizione un bus a 32 bit pieni, si è rivelato spesso assai limitato. Era poco duttile sia nella gestione delle periferiche IDE, fissate di default ad un massimo di 2 e non di 4 come nei controller standard per PC (necessitava quindi di connettori modificati per connetterle e raggiungere il massimo di periferiche possibili allo standard IDE), sia nel transfer rate, limitando Amiga ad usare dischi rigidi settati al solo PIO mode 0. Si è reso così necessario utilizzare modifiche o rivolgersi a soluzioni hardware di produttori terzi.

AmigaShell

Da definire

Collegamenti Esterni

See also: AmigaDOS, 68000, ANSI, API, Amiga, AmigaOS, Amiga FileSystem, Apple II, Assembly, BCPL