QDOS vs OTHERS PECULIARITA' DI QDOS Attualmente il QDOS e' il sistema operativo multitasking piu' economico presente sul mercato, sia dal punto di vista del costo della stazione di lavoro su cui farlo girare, sia per quanto riguarda il fabbisogno di risorse, hardware e software richieste da un' applicazione "media". Infatti il Qdos occupa solo 48K, mappati in rom, a differenza degli altri sistemi operativi, che devono essere caricati da supporto magnetico ad ogni reboot della macchina, andando ad occupare molti megabytes di preziosa memoria ram. Inoltre, grazie alla struttura interna estremamente lineare della famiglia di processori su cui e' implementato (Motorola 680xx), il QDOS permette una efficienza molto superiore rispetto ai concorrenti per quanto riguarda la programmazione a livello di linguaggio macchina. Tanto piu' si puo' apprezzare questo sistema operativo se si tiene conto che le sue dimensioni sono estremamente ridotte, solo 48K, comprensivi di un potente linguaggio di programmazione strutturato quale e' il SuperBasic, quando ad esempio un AmigaDos, solo per fare qualche nome, arriva ad occupare circa 200K, in ram e senza interprete di linguaggio. Per la sua essenzialita', che stavolta non e' sinonimo di "inefficienza", il QDOS e' praticamente esente dai gravi bugs che infestano le macchine concorrenti, inoltre per il fatto di essere completamente in rom, e' praticamente immune dal fenomeno dei virus. STRUTTURA INTERNA La struttura del Qdos ricorda molto da vicino quella di UNIX, essendo basato su un nucleo centrale (kernel) che si occupa di coordinare fra loro le principali funzioni del sistema operativo (schedulazione dei vari processi, gestione del file system e signal handling), e da un "guscio" di interfaccia verso i programmi applicativi e l' utente, realizzato per mezzo dei "device drivers" e dell' ambiente SuperBasic. In pratica la possiamo immaginare come una cipolla, in cui ogni strato puo' interagire solamente con gli strati adiacenti, occupandosi di fare in modo che le richieste di uno strato vengano correttamente instradate verso quello che si dovra' occupare di esaudirle. Una struttura siffatta rende possibile l' indipendenza del programma applicativo da quella che e' la struttura "fisica" della macchina su cui deve girare, permettendo di scrivere un codice che si adatti automaticamente ("run time") alle specifiche delle periferiche di input/output e ad eventuali nuove versioni del sistema operativo. Per poter fare questo il programma deve accedere alle risorse del computer solo ed esclusivamente attraverso chiamate alle routines del sistema oparativo, lasciando a quest' ultimo il compito di interagire con lo strato hardware della macchina. DEVICE DRIVERS Attraverso un meccanismo di "hardware hidding" e' possibile accedere ad una periferica solamente attraverso il suo "device driver", ovvero un' interfaccia software che si occupi di instradare correttamente dei flussi di dati, indipendentemente dalla struttura reale della macchina. Grazie a questo meccanismo e' possibile specificare quali saranno i dispositivi di input/output per un programma solamente quando occorre, in modo di dirottare, in caso di bisogno, l' output di un programma ad una periferica diversa da quella normalmente utilizzata (ad esempio alla stampante al posto che sul monitor). In questo modo si rende indolore la conversione di un programma affinche' supporti nuove periferiche, ad esempio hard-disk, poiche' bastera' installare l' opportuno driver (generalmente fornito su una eprom montata sulla scheda di interfaccia che si autoinstalla all' accensione della macchina) e cambiare la configurazione del programma (nel nostro esempio tutti i riferimenti a "flp1_" diventeranno "hdk1_"), ovviamente un programma scritto "bene", dovrebbe avere i nomi delle periferiche memorizzati come variabili, in modo da consentire una modifica rapida senza dover intervenire sul codice del programma stesso. PIPING Inoltre lo scambio di messaggi e' possibile, oltre che fra programma e sistema operativo, anche fra "processi concorrenti" (ovvero programmi che girano in contemporanea), per mezzo di un dispositivo chiamato "pipe" (letteralmente "tubo"), in cui si instaura un vero e proprio dialogo fra i vari programmi. In pratica l' applicazione piu' interessante e' quella di dirottare l' output di un programma in modo che diventi l' input di un altro, in modo da realizzare un cosidetto "filtro";ad esempio posso scrivere un programma "more" che presenti sul video il suo input bloccando lo scrolling ad ogni pagina e poi utilizzare come input l'output dell' ipotetico programma "pippo" (ah, se non ci fosse Walt Disney !), in modo da ottenere un output paginato. In UNIX la cosa si ottiene semplicemente con "pippo|more", dove la sbarra verticale serve per instaurare il meccanismo di piping. (In MSDOS la sintassi e' simile, ma vengono aperti dei files temporanei che servono alternativamente da input e da output per i due programmi; MSDOS non e'un sistema operativo multitasking !). Sotto QDOS (e toolkit 2) la cosa diventa: "exec pippo to more", dove il ruolo del simbolo | e' stato preso dalla keyword "to". E PER FINIRE: ALCUNE DIVAGAZIONI Attualmente con la programmazione orientata all' oggetto (C++, LISP, Object Pascal, Smalltalk), la filosofia dello scambio di messaggi viene implementata anche direttamente fra parti di uno stesso programma, che diventano dei veri e propri "oggetti", specializzati in un determinato compito e che si occupano di manipolare e di esaudire le richieste che altri "oggetti" fanno loro per mezzo di messaggi. Molti di questi concetti sono stati sviluppati una ventina di anni or sono dal gruppo di ricerca che nei laboratori AT&T stava creando le premesse per quello che di li' ad alcuni anni sarebbe diventato il sistema operativo UNIX. Una manciata di menti brillanti con intuizioni geniali e di una buona dose di "filosofia", costretti a lavorare per un' industria che non dava importanza al loro lavoro, con macchine vecchie, ma tuttavia animati da quello spirito e quella sicurezza di se che solo la coscienza della propria genialita' puo' dare. Un team quello di AT&T da cui sono uscite le idee che piu' hanno rivoluzionato il mondo dell' informatica moderna, di cui alcuni concetti si iniziano a capire ed applicare solo ora, dopo piu' di vent' anni. Per questo UNIX e' ben presto diventato una filosofia, coltivata ancor oggi con venerazione e con passione, specialmente negli ambienti universitari, che resiste anche dopo che, con l'avvento dell' informatica di massa, l' azienda telefonica americana ha tentato di farne un affare puramente commerciale. Purtroppo gli anni 90 sono stati gli anni di MS-DOS, che ha ucciso il mercato dei computers, bloccando tutti i tentativi di miglioramento tecnologico del settore, in nome di uno standard che era nato vecchio, improponibile per i livelli attuali dell' hardware ma che tuttavia continua a persistere perche' supportato da grandi aziende in cerca di grandi profitti. La prima versione di UNIX e' stata sviluppata su una macchina con solo 64K di ram, fino ad alcuni anni fa i programmi venivano scritti con passione su macchine con 3-4K di memoria, eppure i concetti principali sono stati espressi allora, quelli che erano i pionieri quattro o cinque anni fa, adesso sono i programmatori migliori, alcuni hanno anche fatto i soldi, ma sotto sotto tutti quelli che hanno avuto uno Spectrum o un Vic 20 rimpiangono quei tempi gloriosi e maledettissimi, in cui si perdevano le notti davanti alla tastiera. Nel giro di pochi anni l'incanto si e' rotto, la passione e' svanita, una parte della nostra vita se ne e' volata via, solcando i cieli con l'ultimo aereo per Taiwan. Le analogie fra QDOS e UNIX non si fermano certamente qui', tuttavia non bisogna dimenticare che sono due sistemi operativi diversi, orientati a fasce d' utenza diverse e che UNIX e' nato per girare su sistemi dipartimentali, in multiutenza, percui deve consentire la gestione di meccanismi di sicurezza, dello swapping su disco, della memoria virtuale, dei terminali, delle comunicazioni su network (sia in rete locale LAN, che in rete geografica WAN), e molte altre operazioni che su una macchina monoutente/personal non sono necessarie e che anzi complicherebbero oltre il dovuto la complessita' del sistema. QDOS E MINIX Per chi volesse saperne di piu', e' disponibile per il QL il sistema operativo MINIX, non un emulatore, ma un vero e proprio sistema operativo, che segue abbastanza fedelmente lo standard della "version 7" (V7) di UNIX e che e' completo di tutti i sorgenti. Nato principalmente a scopo didattico, e' disponibile su varie piattaforme hardware (Amiga, Atari St, MacIntosh, PC XT, 386, QL, VAX e non ufficialmente su SUN). Nonostante alcune limitazioni e' virtualmente possibile compilare tutto il software disponibile in sorgente C per il V7, essendo con questo compatibile a livello di chiamate di sistema, nonche' gran parte dei sorgenti di pubblico dominio per "UNIX SYSTEM V" e "BSD". Il programma e' disponibile come "differenze" dalla versione per Atari, che deve essere in possesso dell' utente e che e' disponibile presso la casa editrice "Prentice Hall" o presso le migliori librerie specializzate in informatica e viene venduto a circa 200.000 lire completo di un libro-manuale contenente una approffondita descrizione di MINIX e dei sistemi operativi in generale. Non crediate di comprare MINIX solo per "sfizio", perche' e' un programma MOLTO impegnativo e in ogni caso potrete sfruttarlo in pieno solamente se disponete di un hard-disk. In definitiva il salto verso MINIX e' consigliabile solamente a coloro che hanno veramente voglia di studiare a fondo la programmazione e di avvicinarsi al mondo di UNIX spendendo poco, ma vi avverto che MINIX non dispone di interfacce grafiche o di finestre ed e' relativamente complicato da gestire. A voi vedere se ne vale la pena ! Magari qualche volontario potrebbe mettere in giro una versione "limitatissima" del programma (previo accordo con l'autore) da usare come demo dello stesso ... non e' detto che non si possa fare, dato che hanno fatto lo stesso per la versione Amiga e PC. DIZIONARIO DEI TERMINI TECNICI UTILIZZATI sistema operativo mono trade/multi trade shell pipe modello a cipolla directory ridirezione file temporaneo WAN LAN processo/job/task risorsa device driver periferica memoria lineare/paginata/virtuale swapping unix run-time batch nfs/protocolli di rete programmazione "object oriented" schedulazione sicurezza priorita' reboot signal handling multiutente livello fisico/hardware file system/memory management/kernel Multitasking Preemptive/non preemptive minicomputer/computer dipartimentale CONFRONTO QDOS-ALTRI MSDOS UNIX MACH WINDOWS MINIX MAC SYSTEM 7 AMIGADOS ATARI TOS GEOS QDOS VMS