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

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Riga 444:
 
Man mano che i computer hanno aumentato la dimensione della propria memoria principale, anche i sistemi usati per calcolo numerico o altre applicazioni sono diventati multiprogrammati.
 
== La protezione nei sistemi multiprogrammati ==
 
In un sistema multiprogrammato, per attuare un'efficace protezione del sistema operativo, ossia l'insieme di tecniche per impedire che un processo possa danneggiare, direttamente o indirettamente, altri processi, si presentano ulteriori problemi.
 
In primo luogo, la memoria non è più divisa in due sole parti, una per il sistema operativo e l'altra per il processo, ma in varie parti, una per il sistema operativo e ognuna delle altre per un processo distinto.
 
Pertanto, per impedire a un processo di accedere alla memoria di un altro processo non basta più un solo registro base, ma servono due registri, che delimitano inferiormente e superiormente la parte di memoria assegnata al processo.
 
Tali registri devono essere impostati ogni volta che il controllo passa dal sistema operativo a un processo.
 
In secondo luogo, il controllo può passare da un processo a un altro appena dopo che il primo processo ha letto alcuni dati da un nastro o da un file su disco, e appena prima che legga altri dati dallo stesso nastro o dallo stesso file.
 
Mentre i dischi sono condivisi tra processi, cioè due processi potrebbero leggere da due file diversi dello stesso disco, tipicamente i file su disco e gli interi nastri non sono condivisi tra processi, cioè non si ammette che più processi leggano o scrivano alternativamente porzioni dello stesso file su disco o dello stesso nastro.
 
A tale scopo, anche per i nastri si introducono le chiamate di sistema "open" e "close", ma non per migliorare le prestazioni, bensì con lo scopo, rispettivamente, di "riservare" e di "rilasciare" la risorsa nastro.
 
Dopo aver "aperto" un nastro, solamente il processo che ha eseguito tale operazione può accedere a tale nastro, fino a quando "chiude" il nastro.
Ovviamente se un processo tenta di aprire un nastro già aperto, la chiamata di sistema fallisce, e falliscono pure tutti gli accessi successivi a tale nastro, dato che per poter accedere a un nastro si deve aver effettuato una chiamata "open" di successo.
 
Analogo comportamento viene introdotto per l'apertura dei file, che ha l'effetto di garantire l'accesso esclusivo al file da parte di un solo processo fino alla chiusura di tale file.
 
Se un processo termina, spontaneamente o per azione del sistema operativo, senza aver chiuso tutti i file e i nastri che aveva aperto, il sistema operativo deve occuparsi di rilasciare tali risorse, per consentire ad altri processi di accedervi.
 
A tale scopo, ogni volta che un processo termina, per qualunque motivo, il sistema operativo scandisce la sua lista dei descrittori di file e chiude i file che risultano ancora aperti.
 
== La schedulazione a lungo termine ==
 
Uno dei problemi introdotti dall'uso di sistemi operativi è costituito dal criterio da usare per decidere quali programmi eseguire tra la lista dei programmi pronti.
 
Una prima tipo di scelta si ha quando un processo termina, lasciando libero dello spazio di memoria e si deve decidere quale programma caricare.
Questo problema è detto "schedulazione a lungo termine".
 
Un secondo tipo di scelta si ha quando un processo va in attesa di un'operazione di ingresso/uscita, e si deve scegliere a quale dei processi pronti si deve passare il controllo del processore.
Questo problema è detto "schedulazione a breve termine".
 
== I sistemi a ''time sharing'' ==