Passa ai contenuti principali

Teoria: Il Sistema Operativo (Parte 2)

Nel precedente articolo si era parlato, in generale, del Software di Sistema ed in particolare del Sistema Operativo, affermando che esso costituisce la "controparte" essenziale all'hardware per il corretto funzionamento degli elaboratori.
Alla fine dell'articolo, però, ho affermato che non sempre i sistemi operativi hanno costituito una componente essenziale dei computer. In effetti i primi elaboratori non avevano bisogno di alcun sistema operativo, in quanto venivano usati da un programma per volta.
Occorre, qui, descrivere come erano costruiti er costituiti.
Stiamo parlando, ovviamente, degli elaboratori costruiti intorno agli anni '45 - '50




Essi erano costituiti da quattro componenti fondamentali:

  • Il Processore - costituito inizialmente da valvole termoioniche, successivamente sostituite dai transistor.
  • Un Dispositivo di Ingresso - Input Device - consistente in un "nastro di carta perforato", successivamente sostituito dai lettori di schede in cartoncino perforate.
  • Un Dispositivo di Uscita - Output Device - consistente in una stampante alfanumerica.

Nastro di carta perforato

Questi elaboratori non avevano memorie di massa (tipo floppy, dischi rigidi o altro) ma l'elaborazione avveniva con l'introduzione dell'input e, fatto salvo il tempo di elaborazione, con l'emissione diretta del risultato. I programmi ed i dati non venivano memorizzati, come non veniva memorizzato il risultato finale.
Schede perforate
Praticamente si scriveva il programma sotto forma (ad esempio) di schede perforate attraverso una macchina chiamata perforatrice (simile ad una macchina da scrivere), lo stesso avveniva per i dati che dovevano essere oggetto del calcolo. L'utilizzatore, successivamente, prendeva le schede perforate che aveva preparato e le inseriva nel lettore di scede dell'elaboratore.
Chiaramente, visto che il computer poteva lavorare solo ad un programma per volta, era necessario prenotare il tempo macchina con sufficiente anticipo.
Lettore di nastro di carta perforato
Inserite le schede nel lettore ed avviata la macchina, l'elaboratore caricava nel lettore il programma e successivamente ad esso i dati da elaborare. Il computer inviava, poi, il risultato alla stampante. Finita l'esecuzione del programma, l'utilizzatore riprendeva le schede perforate del programma, che potevano essere , poi, riutilizzate con dati diversi (ma, ovviamente, per lo stesso scopo), i fogli stampati con i risultati e cedeva il posto ad un altro utilizzatore.
Ovviamente l'organizzazione dei CED (Centri di Elaborazione Dati), si sviluppò ulteriormente, creando la figura dell'operatore, cioè un tecnico specializzato nell'introduzione delle schede, nell'avviare il calcolatore e nel raccogliere i risultati. Successivamente la specializzazione si affinò e si differenziarono ancora di più le figure. Non era più l'utilizzatore che si occupava di interagire con la macchina, ma una serie di tecnici specializzati nei vari compiti.
L'utilizzatore poneva il problema a livello teorico e costruiva, teoricamente l'algoritmo di calcolo poi toccava:

  • al tecnico perforatore preparare (tradurre) programma e dati sotto forma di schede perforate
  • al tecnico preposto alle operazioni di calcolo, inserirle, assistere alle operazioni dell'elaboratore e raccogliere i risultati
  • ad una altro tecnico erano affidatele mansioni di archiviazione delle schede per il calcolo effettuato, in modo che potessero essere riutilizzate se se ne avevala necessità. Gli operatori facevano turni notturni e festivi per sfruttare al massimo il computer. Gli utenti avevano un normale orario d'ufficio.


Una organizzazione di questo tipo avevai suoi vantagi,ma anche i suoi svantaggi:

  • nella fase in cui l'operatore sostituiva i pacchi di schede, l'elaboratore rimaneva inutilizzato;
  • potevano crearsi, comunque, dei tempi morti per cause di distrazioneo altro;
  • i lettori di schede e le stampanti erano molto più lenti dell'elaboratore;
  • non esisteva la possibilità che mentre il lettore procedeva a caricare programma e dati l'elaboratore svolgesse un altro compito;
  • era comunque, indispensabile la presenza costante di almeno un operatore;

Duplicatore di Schede Perforate IBM

Per poter rimediare ai tempi morti fu introdotta una nuova tipologia di periferica: il registratore digitale con bobime di nastro magnetico. In questo caso si ebbero, rispetto alla situazione precedente, i seguenti vantaggi:

  • L'aumento della velocità (le bobime giravano ad alta veloità e l'apparecchiatura era fornita di un meccanismo speciale che faceva girare il nastro dvanti alla testinadi lettura, ad una velocità maggiore (per brevi attimi) a quella di rotazione della bobina stessa.
  • Era presente un nuovo dispositivo in grado di leggere le schede perforate e di trasferire il contenuto su mastro magnetico accodando i dati su di esso. Questo dispositivo era indipendente dall'elaboratore, quindi non lo impegnava.
  • Stessa cosa per quanto riguardava lìoutput, esisteva un altro dispositivo che trasferiva i dati elaborati dal nastro alla stampante. Anche questo dispositivo era indipendente dall'elaboratore.

L'elaboratore aveva a disposizione,inoltre, più unità a nastro per la lettura ed altrettante per la scrittura.
Le istruzioni (routine, programmi) erano scritte in modo che leggessero e scrivessero esclusivamente su nastro magnetico, velocizzando enormemente le operazioni (la conversione schede-nastro e nastro-stampante, come accennato sopra, erano processi indipendenti svolti da altri dispositivi e, quindi, non rubavano tempo-macchina).

Questo tipo di architettura consentiva di:

"Uno o più programmi e i relativi dati vengono caricati dalle schede perforate a un nastro magnetico. 
Un programma per volta viene caricato da un nastro magnetico alla memoria del computer. 
Il programma in esecuzione legge i dati da un nastro magnetico e scrive i risultati su un altro nastro magnetico. 
I risultati di uno o più programmi vengono inviati da un nastro magnetico alla stampante. 
Ovviamente, ogni volta che un nastro magnetico è stato letto oppure scritto, viene riavvolto rapidamente. Altrettanto ovviamente, per ottimizzare i tempi, in ogni istante vengono eseguite almeno tre operazioni contemporanee: 
Uno o più caricatori di schede leggono altrettanti pacchi di schede, caricandone il contenuto su altrettanti nastri magnetici. 
Uno o più scaricatori di schede leggono altrettanti nastri magnetici, inviandone il contenuto ad altrettanti stampanti. 
Il computer carica un programma da un nastro magnetico, oppure carica i dati dallo stesso nastro magnetico, oppure esegue calcoli in memoria, oppure scrive righe da stampare su un altro nastro magnetico. "


Con questo sistema e con l'organizzazione relativa si riuscivano ad abbattere, quasi completamente, i tempi morti. Per l'ottimizzazione del processo, però, fu mecessario sviluppare ed implementare un primo, rudimentale sistema operativo. Il suo compito, una volta caricato in memoria e mandato in esecuzione all'accensione dell'elaboratore, era eseguire la seguente sequenza di operazioni:

  1. Caricare in memoria principale il primo programma contenuto nell'unità nastro di ingresso. 
  2. Avviare l'esecuzione del programma. 
  3. Quando il programma aveva finito l'esecuzione, tornare al punto 1. 



Il calcolatore ABC di Atanasoff era stato progettato per risolvere un sistema simultaneo di 29 equazioni in 29 incognite.
Il software in oggetto era, praticamente, solo un Loader (caricatore). Il problema sorgeva se, per esempio, uno dei programmi caricati presentava degli errori. Ovviamente, caricando un programma alla volta, non si rischiavano ricadute su gli altri programmi, se un programma produceva un errore l'operatore ne arrestava l'esecuzione e passava al successivo. Utilizzando un caricatore automatico, invece, poteva succedere che continuasse a rimanere in funzione in modo indefinito o per tempi superiori a quelli di convenienza. Poteva, inoltre, non leggere tutti i dati in ingresso oppure continuare a chiedere input inesistenti, sovrascrivere indebitamente la memoria principale, ecc.
Furono introdotte, per evitare questi ed altri problemi, queste accortezze:

  • L'introduzione di una scheda particolare, diversa da tutte le altre schede, inserita dai caricatori su nastro dei pacchi di schede all'inizio o alla fine di ogni programma e di ogni sequenza di dati. 
  • L'introduzione di un formato delle schede di ingresso con cui poter dichiarare il tempo massimo e il massimo numero di pagine richiesto dall'elaborazione. 
  • Un circuito per la generazione e gestione delle interruzioni (interrupt) del programma in esecuzione. 
  • Un timer hardware programmabile, in grado di generare interrupt. 
  • Un registro base e di un circuito in grado di generare interrupt in presenza di un indirizzo inferiore al valore di tale registro. 

Ma anche questo non bastava, in quanto erano ancora possibili i seguenti inconvenienti

  • Un programma poteva disattivare il timer e proseguire indefinitamente. 
  • Un programma poteva riprogrammare il registro base e poi sovrascrivere la memoria assegnata al sistema operativo. 
  • Un programma poteva accedere direttamente ai nastri leggendo o scrivendo dati non spettanti, scavalcando il protocollo convenzionale di accesso ai nastri. 

Per evitare tali inconvenienti è stato necessario introdurre il concetto di "protezione hardware". 

Per impedire ai programmi applicativi di danneggiare gli altri programmi, deliberatamente o accidentalmente, direttamente o indirettamente danneggiando il sistema operativo, vennero introdotte modifiche all'hardware dei computer, che vanno sotto il nome collettivo di "protezione hardware". 
Tali modifiche, per i primi computer, erano: 
  • Le schede di controllo. 
  • Il registro base e il circuito di verifica degli indirizzi. 
  • Il timer. 
  • La modalità di funzionamento, che può essere "supervisore" o "utente". 
  • Le istruzioni privilegiate. 


Importante è stata l'introduzione delle modalità supervisore e utente. Nella Modalità Supervisore (chiamata, successivamente, anche System Mode o Kernel Mode) il software che veniva eseguito in tale modalità non aveva alcuna limitazione e poteva eseguire qualsiasi operazione. I programmi applicativi, invece, venivano eseguiti in User mode e avevano delle limitazioni in riferimento agli indirizzi di memoria, ai tempi, ecc. Se un programma "malfunzionava" entravano in gioco le routine della Modalità Supervisore.
Praticamente il sistema funzionava in questo modo:
  1. L'elaboratore parte in Modalità Supervisore;
  2. carica il programma dal nastro;
  3. passa in Modalità Utente;
  4. manda in esecuzione il programma caricato;
  5. il programma esegue le sue struzioni in User mode;


              --- a seconda degli eventi che si verificano ---

  • il programma tenta di eseguire una istruzione in Modalità Superisore
  • il programma termina
  • il programma chiede di eseguire operazioni di Input-Output


          --- il controllo torna al "sistema operativo" in Modalità Supervisore ---

Valvola Termoionica
In sintesi l'esecuzione di un processo inizia sempre in modalità supervisore, passa in modalità utente per eseguire le istruzioni del programma, torna temporaneamente in modalità supervisore per effettuare ogni operazione di ingresso/uscita, e termina sempre in modalità supervisore

Queste, in sintesi, le fasi che hanno portato alla necessità della introduzione del Sistema Operativo negli elaboratori.
Nel prossimo articolo parleremo di multiprogrammazione, protezione dell'hardware ed altro....   :-)

Commenti

Post popolari in questo blog

EDVAC

EDVAC (Electronic Discrete Variable Automatic Computer) L' E lectronic D iscrete V ariable A utomatic C omputer ( EDVAC ) è uno dei primi computer elettronici digitali della storia, uno dei primi computer della storia basato sull'architettura di Von Neumann e uno dei primi computer a programma memorizzato della storia. L' ENIAC era veloce, ma disponeva di pochissimo spazio di archiviazione . Inoltre, per la programmazione doveva essere ricablato , un'operazione che richiedeva da poche ore a giorni interi; era, inoltre, poco affidabile, a causa delle molte valvole tubolari utilizzate, che richiedevano, tra l'altro, moltissima energia e molto spazio per funzionare e generavano molto calore. Il che faceva lievitare costi di gestione.

Colossus

Colossus " Colossus fu il primo elaboratore elettronico al mondo: fu realizzato in Gran Bretagna nel 1943, alla fine della seconda guerra mondiale, dall’intuizione del Dott. Thomas Flowers. Operativo dal 1944 a Bletchley Park, sostituì Heath Robinson, un macchinario più semplice, nel decifrare le comunicazioni criptate della Germania nazista. Entro la fine del conflitto furono costruiti dieci esemplari di Colossus, un “gigante” da 1.600 valvole termoioniche. Il Dott. Flowers aveva concepito il progetto prima della guerra, però il centro di ricerca britannico non era convinto che fosse davvero realizzabile: la tenacia dell’ingegnere, alla lunga, s’è rivelata determinante. " Citazione - Tratta da:   http://www.downloadblog.it/post/16765/colossus-il-primo-elaboratore-elettronico-a-essere-stato-realizzato

MANIAC

Verso la fine della guerra, gli scienziati di Los Alamos stavano utilizzando il primo computer elettronico . John Von Neumann fu il protagonista principale di questo cambiamento, che condusse, poi, allo sviluppo del programma per calcolare il comportamento degli esplosivi nucleari. I calcoli iniziali concernenti la diffusione dei neutroni in un montaggio critico di uranio furono effettuati da Eldred Nelson e da Stanley Frankel , che erano membri del gruppo di Robert Serber presso il Radiation Laboratory dell' università di Berkeley , California, nel 1942.  A Los Alamos  ordinarono lo stesso tipo di macchine che avevano utilizzato in California.