Sistemi operativi
Definizione
Sistema operativo: programma che controlla l’esecuzione di programmi applicativi. Seconda definizione: interfaccia fra i programmi applicativi e l’hardware. Questa interfaccia è fondamentale, perché nasconde la rudezza e la precisione richiesta dal linguaggio macchina del processore. Il S.O., dunque, offre un più alto livello di astrazione.
Obiettivi principali del sistema operativo
- Convenzienza: più alto livello di astrazione → semplicità di utilizzo
- Efficienza: ottima gestione della memoria → non mi interessa sapere se un dato è in memoria primaria, secondaria o cache
- Abilità di evolversi: cosa non presente prima ma fondamentale vista la velocità di sviluppo odierna. Senza, il S.O. morirebbe subito.
Struttura
Le librerie sono scritte dagli sviluppatori del S.O. e fornite al momento della sua pubblicazione. Queste possono essere utili per I/O, gestione della memoria, aritmetica... Nel corso del tempo si sono consolidate delle librerie (comunque in continuo aggiornamento). In questo modo, non vi è sempre un accesso diretto all’ISA (ma nemmeno al S.O. talvolta), ma c’è la mediazione delle librerie.
Servizi offerti da un S.O.
- Capacità di sviluppare programmi
- Possibilità di eseguire programmi applicativi
- Accedere ai dispositivi I/O
- Controllare l’accesso ai file
- Garantire e controllare l’accesso al sistema da parte dell’utente
- Capacità di trovare gli errori e inviare avvisi su essi
- Accounting
Un S.O. è un software. Dunque, considerando un singolo core, il S.O. contiene funzioni che devono essere eseguite per controllare l’esecuzione degli altri programmi. C’è, dunque, un’alternanza fra S.O. e programmi applicativi. Nel fare questo passaggio, c’è il rischio che il processore perda il controllo (es: variazione clock). Ciò viene evitato grazie al richiamo del S.O. a ogni ciclo di clock, in modo che possa velocemente controllare la situazione ed eventualmente rimandare in esecuzione il comando iniziale.
Evoluzione dei sistemi operativi
Ci sono varie ragioni per cui i S.O. devono evolversi:
- Upgrade dell’hardware
- Nuovi tipi di hardware → es: passaggio da telefoni con tastiera a schermi capacitivi
- Nuovi servizi
- Errori, bug da dover riparare → gli aggiornamenti stessi possono creare altri bug, anche perché vengono distribuiti per hardware molto diversi fra loro
Step di evoluzione
Si è partiti da semplici programmi seriali da caricare ogni volta fisicamente nel calcolatore, oltretutto molto costoso. Si è cercato sempre di sfruttare al massimo il processore.
Serial processing
Non c’erano i sistemi operativi, ma erano hardware e sviluppatori che lavoravano su schede perforate per poter utilizzare il linguaggio macchina. Il S.O. era praticamente implementato dagli umani.
Simple Batch Systems
Il sistema prende in carico il job che viene sottomesso dal programmatore. Il monitor processa i vari job e li mette insieme come input. Alla fine, il risultato viene ritornato al monitor. L’utente, dunque, non ha più l’accesso diretto al processore. Il linguaggio utilizzato per scrivere i job era il linguaggio Assembly.
Caratteristiche hardware del monitor
- Protezione in memoria: sia tra i vari job sia fra i job e il monitor
- Timer: impedire a un job di monopolizzare il sistema → timer impostato all’inizio di ogni job. Al suo scadere il controllo torna al monitor
- Stato privilegiato del monitor rispetto ai job, che può eseguire più istruzioni (privilegiate)
- Interruzioni: errori ecc.
Modalità di operazione
Concetto che deriva dalla nascita delle istruzioni privilegiate. I processi possono essere in esecuzione in due modalità:
- User mode
- Kernel mode → utilizzata dal monitor, che può eseguire istruzioni privilegiate e, di conseguenza, accedere ad aree protette di memoria
Implicazioni
Il tempo di esecuzione si alterna fra quello dedicato ai programmi applicativi e quello dedicato al S.O.