Sistemi operativi/Evoluzione dei sistemi operativi: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 88:
# Quando il programma ha finito l'esecuzione, tornare al punto 1.
Questo software di base era un semplice caricatore ("loader"), ma, pur occupando un po' di memoria principale, consentiva una notevole riduzione dei tempi morti, a condizione che i programmi fossero corretti, cioè rispettassero le regole di utilizzo del computer.
Si tenga presente che stiamo parlando di elaboratori con 164 o 328 KB (non GB né MB) di memoria principale.
 
== Il monitor residente ==
Riga 95:
Quando l'elaboratore era completamente gestito da un programma per volta, qualunque cosa facesse tale programma, non danneggiava gli altri programmi. Comunque, se un programma non aveva finito la sua esecuzione dopo il tempo previsto, l'operatore lo arrestava e passava al programma successivo.
 
Usando il caricatore automatico, un programma poteva danneggiare gli altri programmi in molti modi, trai cuiprincipali dei quali erano:
* Continuare a funzionare indefinitamente, o comunque per un tempo superiore a quello economicamente conveniente.
* Non leggere tutti i dati spettanti, contenuti neinel nastrinastro di ingresso.
* Continuare a leggere il nastro di ingresso dopo che sono finiti i dati spettanti al programma.
* Leggere dati o programmi non spettanti, contenuti nei nastri di ingresso.
* Scrivere suisul nastrinastro di uscita così tanti dati da riempirliriempirlo, o comunque una quantità di dati superiore a quella economicamente conveniente.
* Sovrascrivere la parte di memoria principale in cui risiede il caricatore o i suoi dati, e quindi impedirne il funzionamento al termine del programma applicativo.
 
Per rimediare a tali problemi, si adottarono le seguenti soluzioni, descritte in dettaglio nelle sezioni successive:
* L'aggiunta di schede di controllo tra le sequenze di schede contenenti programmi e dati.
* La protezione hardware delle risorse (processore, memoria principale, unità a nastri).
Riga 113:
 
Il nastro di ingresso conteneva una sequenza di elaborazioni (dette anche "job"), ognuna strutturata nel seguente modo:
* RecordScheda di inizio programma.
* NumerosiNumerose recordschede, ognunoognuna contenente un'istruzione in linguaggio macchina.
* RecordScheda di inizio dati di ingresso.
* NumerosiNumerose recordschede, ognunoognuna contenente un blocco di dati.
 
ILe recordschede di inizio programma e di inizio dati, dette "schede di controllo", avevano un segno che lile distingueva daglidalle altri,altre.
Pertanto pertantoil erasoftware possibilepoteva sapere con certezza quando finiva un programma e quando finivano i suoi dati.
 
In seguito, tali schede di controllo evolsero, aggiungendo sempre più informazioni, e diventarono veri linguaggi di comandi.
 
Per esempio, inizialmente i programmi erano scritti solamente in linguaggio macchina, ma rapidamente si passò al linguaggio assemblativo, alai linguaggi FORTRAN e al COBOL, e poi ad altri linguaggi di programmazione.
Pertanto, la scheda di inizio programma doveva indicare anche in quale linguaggio era scritto il programma stesso.
Leggendo la scheda si sapeva quale compilatore doveva essere utilizzato.
 
Altre informazioni contenute nelle schede di controllo erano i requisiti del programma, cioè la quantità di memoria necessaria, la durata massima dell'elaborazione, e il numero massimo di record che verranno emessi come risultato.:
* il nome del programma e dell'utente, da stampare nel primo foglio emesso dal programma;
* la quantità di memoria massima richiesta dal programma;
* la durata massima dell'elaborazione;
* il numero massimo di pagine che verranno stampate come risultato.
 
Avendo a disposizione tali informazioni, il sistema operativo poteva ottimizzare l'allocazione delle risorse e terminare le elaborazioni che superassero i requisiti dichiarati.