Anno: 1992

Capitolo 2

STORIA ED EVOLUZIONE DEL P.C.

Nella meta' degli anni 70 alcuni intraprendenti cervelloni si dilettarono a costruire i primi Home Computers. Tra essi Clive Sinclair che nel 72 costruisce la prima calcolatrice tascabile a led rossi e nel 1980 lo ZX80 .
Nell' 82 lo Spectrum, primo computer a colori.
Le prime macchine funzionavano con floppy o manco con quelli. Le memorie erano limitatissime e 16 Kb erano un sogno.
Cosi' come lo conosciamo noi, il computer, nasce negli USA per opera di Steve Wozniak e Stephen Jobs , ( La Apple ) nel 1977 .
Esso e' il primo ad essere dotato di unita' a dischetti.
Nello stesso anno la Commodore presenta il Personal Electronic Transactor (PET), nel 1981 ilVIC 20 e successivamente il famoso COMMODORE 64.
Il nostro P.C. nasce nel 1981 ad opera dell'I.B.M. e diventa in poco tempo uno standard di fatto.

La I.B.M. ( International Business Machine ) anche conosciuta con il soprannome di BIG BLUE ,vede le sue origini nel lontano anno 1924 ad opera di Herman Hollerit nato nel 1860 a Buffalo.( U.S.A)
Hollerit inventa verso la fine del 1800 la scheda perforata ed il sistema ad essa legato viene impiegato nel 1890 per il censimento in America.

All' inizio degli anni '80 si assiste ad un proliferare di Home e di Personal ognuno dotato di caratteristiche proprie che lo rendono cosi' incompatibile con gli altri presenti sul mercato. Tutto questo portava a dover scrivere gli stessi programmi in maniera ogni volta diversa per poterli adattare alla varie macchine in commercio. Si assisteva, specialmente nei programmi di gioco, che quanto scritto per il Commodore non funzionava sullo Spectrum e manco sul MSX per non parlare dello Atari.
A livello professionale, un programma scritto per il Personal M20 della Olivetti non poteva essere impiegato su altre macchine concorrenti e tutto cio' era frustrante per i programmatori.
Finalmente, grazie al peso economico della I.B.M. , anche i piu' grossi costruttori iniziarono ad assemblare macchine che fossero compatibili tra di loro e di fatto venne adottato il sistema che oggi va sotto il nome di MS-DOS.
Non tutti pero' si adattarono a questo standard ed infatti esitono oggi tre grandi punti di riferimento: Commodore, Apple ed I.B.M.
Ognuno di essi viaggia per proprio conto ma vista l'ampia diffusione del sistema MS-DOS anche la Commodore con l'Amiga e la Apple con il MAC, adottano speciali accorgimenti affinche' del software scritto per I.B.M e compatibili possa venire impiegato sulle loro macchine.
Come abbiamo appena visto, la standardizzazione dei sistemi fa si che il Software scritto in un determinato linguaggio puo' essere impiegato o "girare" su tutte le macchine che adottano lo stesso S.O.

I SISTEMI OPERATIVI

Il S.O. sta alla base dell'impiego del P.C. o di ogni altro calcolatore. Senza di esso la macchina e' un oggetto utile come soprammobile.
Il S.O. ha il compito di facilitare l'uso delle risorse della macchina ( Unita' Centrale, memorie e periferiche ) da parte degli utenti e dei programmi. Essi non hanno piu' bisogno di conoscere in dettaglio la struttura hardware del Calcolatore ( Ex. Come registrare un Byte sul disco), basta ordinarlo al S.O. ed egli si incarica di fare cio'.
Il S.O. fa parte del Software di sistema e puo' risiedere in ROM o essere caricato da disco e risiedere in RAM.

STORIA del S.O.

All' epoca della nascita del FORTRAN, il primo linguaggio ad alto livello, i calcolatori erano a schede ed il loro impiego era condizionato da una serie di operazioni lente e complesse; bisognava per primo caricare il programma sorgente perforato su scheda, poi il programma compilatore, sempre su schede, che aveva il compito di tradurre il sorgente in eseguibile.
Tutto cio' comportava una enorme mole di lavoro ed una grande quantita' di schede poiche' vi erano quelle del programma sorgente, quelle del compilatore e quelle dello eseguibile.

Furono sviluppati allora dei programmi supervisori che avevano il compito di rendere il piu' possibile automatica la sequenza dei lavori che la macchina era chiamata a svolgere. Questi programmi possono essere considerati come i primi sistemi operativi.

Il S.O. vero e proprio nasce con l'introduzione delle memorie magnetiche a nastro , le prime memorie di massa direttamente manipolabili da calcolatore.
Se il Compilatore Fortran ed i programmi di uso piu' comune risiedevano sul nastro, il calcolatore poteva prelevare in ogni momento le informazioni di cui necessitava, senza che vi fosse intervento manuale, ma poiche' nessun calcolatore sa cosa fare senza istruzioni ecco che il tutto avveniva sotto il controllo di un apposito programma residente nella memoria centrale, il S.O. appunto.
Con l'introduzione dei dischi magnetici, le informazioni, anziche' essere lette in sequenza, come sui nastri, vennero lette in modo random ad accesso diretto.
Questo tipo di accesso rende le memorie difficili e complesse da gestire e poiche' un uso efficiente dei dischi e' tra i compiti principali del S.O. molti S.O. prendono nome di DOS ( Disk operating System).
Il Dos semplifica l'accesso ai dischi da parte dell'utente e dei programmi che lo richiedono.
Il S.O. pero' non si limita a gestire i dischi ma deve anche ottimizzare l'uso delle risorse del calcolatore e quindi controllare i tempi della C.P.U., la comunicazione con le periferiche, l' impiego della memoria centrale e la gestione delle memorie di massa.

IL TEMPO DELLA C.P.U.

La C.P.U. ( Central Processing Unit ) o Microprocessore all'inizio eseguiva il suo lavoro secondo il metodo del Batch Processing che comportava l'impiego della tecnica cosi' detta FIFO ( Primo in ingresso, primo in uscita ).
Il processo pero' era antieconomico in quanto fino a che il primo lavoro non era finito non si poteva passare al secondo e cosi' via.
Fu quindi introdotta la tecnica del Time sharing in cui ogni programma veniva eseguito per un breve periodo, poi passava al secondo , al terzo ecc. e poi nuovamente al primo.

Essendo il calcolatore molto veloce era sufficiente dedicare alcuni millisecondi per programma in modo da dare l'impressione all'utente di avere una macchina tutta per se ( Calcolatore virtuale).
I tempi erano pero' piu' lunghi di quelli impiegati usando la macchina in modo reale.( Interamente dedicata ad un utente ).
Il concetto di Time Sharing venne sviluppato impiegando algoritmi piu' complessi del semplice " un po di tempo a testa" e si comincio' a parlare di MULTIPROGRAMMAZIONE.
In particolare la Multiprogrammazione si divide in Mutitasking, dove il Computer segue piu' programmi per lo stesso utente e Multiutenza dove piu' utenti possono usare la stessa macchina insieme con ciascuno un diverso ordine di priorita'.

I tempi morti della C.P.U. ( attesa di dati da una periferica lenta o da un terminale ) vengono sfruttati per eseguire altri lavori. Ai programmi vengono dati degli ordini di priorita', a seconda dell'importanza, ed i programmi con basso livello di priorita' vengono eseguiti nei ritagli di tempo. La stampa ne e' un esempio.
Il S.O. deve anche occuparsi della gestione ed organizzazione della memoria. Deve stabilire come i programmi ed i dati si ripartiscono le varie zone della memoria centrale.
Cio' e' importante quando la memoria e' segmentata e quindi il programmatore non deve occuparsi dell'organizzazione interna della macchina. La corretta gestione della memoria e' essenziale in presenza della multiprogrammazione in quanto essa ( la memoria) deve essere ripartita tra i vari programmi e/o utenti.
Esistono tecniche di memoria virtuale in cui intere pagine di memoria vengono lette e trasferite su disco e quindi rilette dallo stesso dando all'utente la impressione che la macchina disponga di molta piu' memoria. Ovviamente cio' e' ottimale in presenza di H.Disk molto veloci.

Il S.O. deve occuparsi anche della operazioni a basso livello necessarie al trasferimento dei dati da e alle periferiche sollevando il programmatore dai dettagli tecnici necessari a queste operazioni.
Molto importante e' il poter trattare le periferiche( video stampante ecc) allo stesso modo, indipendentemente dalle caratteristiche fisiche.
Puo' infatti essere utile inviare dei dati al video piuttosto che alla stampante senza dover per questo riscrivere il programma; questa tecnica, ad esempio, si chiama I/O redirection.
Altro vantaggio di un buon S.O. e' la portabilita'. Cio' significa che un programma deve poter girare su di un Computer diverso da quello su cui e' stato scritto. Questo, ovviamente, si verifica quando i S.O. sono uguali e la C.P.U. possiede le stesse caratteristiche.

Visto che ci addentreremo nei dettagli del S.O. MS-DOS spenderemo alcune parole riguardo le C.P.U. che fanno parte di questo sistema.
I microprocessori del mondo MS-DOS sono quelli che vanno sotto il nome di iAPX 86, sono prodotti dalla INTEL e sono comunemente conosciuti con le sigle 8086,8088,80186,80286,80386,80486,80586 o Pentium .
Tutti sono compatibili verso il basso, ossia i programmi scritti per la C.P.U 8086/8088 girano sotto gli altri processori della famiglia. Questo e basilare per il concetto della portabilita' espresso prima.

In sintesi: Il S.O. e' un programma supervisore che ha il compito di rendere semplice ed efficiente l' uso delle risorse della macchina sia da parte dei programmi che del programmatore.
E' il principale dei programmi che costituiscono il software di sistema che e' quello che consente alla macchina di funzionare.
Il S.O. e' il primo che viene caricato in memoria ed uno dei sui compiti principali e' la gestione delle Unita' a Disco, da questo il nome di DOS.
Tra macchine che impiegano lo stesso S.O. e la stessa C.P.U. e' possibile lo scambio di programmi.
Un buon S.O. deve consentire una facile gestione dei dischi, organizzare ed ottimizzare le memorie e permettere la multiprogrammazione.

In conclusione un appunto e' doveroso.
Il S.O. MS-DOS e' arrivato alla versione 5.0, e' un ottimo S,O, ma non permette la multiprogrammazione; esistono dei supporti software che su macchine dotate di C.P.U. 80386 e 80486 consentono di eseguire piu' programmi contemporaneamente e un impiego ridotto in multiutenza.
Per un reale utilizzo in multiutenza si deve comunque adottare il S.O. UNIX o XENIX la cui trattazione non fa parte di queste lezioni.

ACCENSIONE DEL COMPUTER

Esamineremo ora, senza entrare nei dettagli che saranno ripresi in seguito, cosa avviene nel momento in cui l'interruttore del P.C. viene posto su ON.
All'accensione del computer una successione di eventi programmati fa si che nel giro di pochi secondi esso sia pronto per svolgere il lavoro a cui e' stato destinato.
Abbiamo gia' accennato al fatto che un computer senza S.O. e di conseguenza senza programmi non e' in grado di funzionare e che il S.O. viene caricato dopo l'accensione della macchina. Come e' possibile quindi eseguire operazioni programmate, quali il caricamento da disco, senza che vi sia un programma in memoria ?.
La risposta e' molto semplice:
Il computer possiede due tipi di memoria, la memoria RAM ( Random Access Memory ) e la memoria ROM ( Read Only Memory ). Quest' ultima e' di tipo a sola lettura e le informazioni contenute in essa sono permanenti e non si volatizzano a macchina spenta.

All'accensione del P.C. viene caricato dalla ROM uno speciale programma che ha il compito di testare l'integrita' delle funzioni hardware dopo di che' viene controllato se sul primo drive del sistema sia presente un disco, in caso affermativo viene caricato dal primo settore di questo uno speciale programma che ha il compito di caricare in memoria i file di sistema che contengono le informazioni necessarie al funzionamento della macchina.
Se il disco non e' presente il caricamento viene effettuato dal disco fisso o Hard Disk.
Affinche' il processo, detto di Boot Strap, abbia successo sul disco o sullo Hard Disk devono essere presenti 3 files :
IO.SYS, MSDOS.SYS, COMMAND.COM.
Sulle macchine IBM questi files si chiamano:
IBMBIO.SYS, IBMDOS.SYS e COMMAND.COM.
In alcune versioni DOS l'estensione SYS cambia in COM ma sostanzialmente i files sono gli stessi e cosi' dicasi per IBMxxx o MSxxx.
Questi files, che verranno dettagliati in seguito, vengono caricati nella stessa sequenza in cui li abbiamo descritti. Essi fanno parte del software di sistema e la loro presenza e' essenziale per il funzionamento del P.C..
Al termine del processo di Boot la macchina e' pronta per accettare i nostri comandi ed eseguire i programmi applicativi.
Nei P.C. basati su C.P.U. 80286 e superiori le informazioni relative alla configurazione Hardware sono contenute in un programma di Set-Up residente in uno speciale circuito integrato di memoria basato sulla tecnologia C-MOS, a basso consumo, che consente di mantenere attive le informazioni alimentando il suddetto Chip per mezzo di una batteria ricaricabile posta all'interno del P.C.
Cio' consente di variare, all'occorrenza, la configurazione riscrivendo le relative informazioni nel circuito di cui sopra.
Esamineremo in seguito ed in modo dettagliato come funziona il S.O. MS-DOS, i programmi che lo compongono ed i comandi che consentono di sfruttare al meglio le risorse del sistema.