Sistemi operativi/Evoluzione dei sistemi operativi: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
|||
Riga 393:
I primi monitori residenti dotati di file system elaboravano un solo programma per volta.
Quando un programma terminava, perché aveva finito la sua elaborazione o perché veniva arrestato dal sistema operativo, veniva
Ogni programma aveva a disposizione tutta la memoria principale, eccetto quella in cui risiedeva il sistema operativo, poteva eseguire istruzioni di elaborazione senza essere interrotto dal sistema operativo fino a quando scadeva il lotto di tempo assegnato
Questa architettura aveva il pregio della semplicità, e, conseguentemente, della piccola dimensione del sistema operativo.
Riga 406:
Una tipica applicazione di contabilità è, come detto sopra, l'aggiornamento dei saldi dei conti correnti di una banca.
Tale applicazione deve semplicemente sommare o sottrarre l'importo di ogni movimento dall'importo del saldo del conto.
Anche con i lentissimi processori degli anni '50, il tempo necessario al processore per effettuare la somma era enormemente inferiore al tempo necessario per leggere il movimento bancario, leggere il vecchio saldo, e scrivere il nuovo saldo, sia usando i nastri che i dischi.
In pratica, usando il monitor residente per un'applicazione di contabilità, il processore era quasi sempre in attesa che qualche dato venisse letto da
D'altra parte, le prime applicazioni di contabilità erano così semplici da poter stare in pochissimi chilobyte di memoria, e gli bastavano pochissimi altri chilobyte di memoria per i dati in corso di elaborazione.
Pertanto, appena sono stati costruiti computer con alcune decine di chilobyte di memoria, risultava possibile tenere in memoria più programmi contemporaneamente.
Per fare un esempio, avendo un sistema di 32 KB di memoria,
Avendo più
Quando un
Se anche questo secondo
Solo se tutti i
Quindi ogni processo può trovarsi in uno dei seguenti stati:
Non appena una memoria di massa ha completato l'operazione richiestale dal sistema operativo, cioè quando è riuscita a leggere il record richiesto o a scrivere il record fornito, il dispositivo di controllo del disco fisso invia un segnale di interrupt (hardware) al processore.▼
* In esecuzione ('''running''').
Quando il processore riceve un interrupt, sospende immediatamente il programma in esecuzione e passa il controllo a un'apposita routine di gestione dell'interrupt, la quale prende atto di quale operazione è stata completata, e rimanda in esecuzione il programma che era in attesa di tale evento.▼
* In attesa di un evento esterno, tipicamente il completamento di un'operazione di ingresso/uscita ('''waiting''').
* Pronto ad andare in esecuzione ('''ready''').
Inizialmente, tutti i processi sono ''ready''.
Questa architettura, dato che consente l'esecuzione in parallelo di più programmi, viene detta '''multiprogrammazione'''.▼
Poi ne viene scelto uno, che viene mandato in esecuzione, e quindi passa in stato ''running''.
Essendoci un solo processore, al più un processo è in stato ''running''.
La multiprogrammazione consente di sfruttare meglio il processore, perché mentre alcuni programmi sono in attesa del completamento di operazioni di input/output, un altro programma è in esecuzione.▼
Ma e se c'è almeno un processo ''ready'', allora ce n'è almeno uno ''running'', in quanto ''ready'' in realtà vuol dire in attesa che si liberi il processore, "occupato" da un altro processo.
Però potrebbe darsi che tutti i processi siano in stato ''waiting'', e quindi il processore sarebbe ozioso (''idle'') in attesa di un evento che riporti un processo in stato ''running''.
▲Non appena una memoria di massa ha completato l'operazione richiestale dal sistema operativo, cioè quando è riuscita a leggere
▲Quando il processore riceve un interrupt, sospende immediatamente il
▲Questa architettura, dato che consente l'esecuzione in parallelo di più
▲La multiprogrammazione consente di sfruttare meglio il processore, perché, mentre alcuni
Un sistema operativo multiprogrammato è tuttavia più complesso di un semplice monitor residente, in quanto deve suddividere la memoria principale in segmenti assegnati ai vari programmi, deve decidere quale tra i programmi in attesa deve essere mandato in esecuzione, e deve gestire l'accesso in parallelo alle periferiche.
Man mano che i computer hanno aumentato la dimensione della propria memoria principale, anche i sistemi usati per calcolo numerico o altre applicazioni sono
== I sistemi a ''time sharing'' ==
|