TEORIA DEI SISTEMI OPERATIVI Sistemi monoprogrammati e multiprogrammati 1 STRUTTURA DEL SISTEMA OPERATIVO UTENTE La struttura di un sistema operativo è di tipo gerarchico : i programmi che lo compongono si collocano a livelli diversi. I programmi ai livelli più bassi servono quelli ai livelli più alti. LIVELLO N Esempi LIVELLO N-1 Gestione RAM Gestione CPU LIVELLO 3 Gestione I/O LIVELLO 2 Prog1 Prog2 Prog3 LIVELLO 1 M1 Mn M1 M2 Mn M1 Moduli (un modulo è un insieme di procedure che risolvono problemi di uno stesso tipo) HARDWARE 2 SISTEMA OPERATIVO : QUALE SCEGLIERE? • Occorre tener conto dei seguenti fattori: – Più utenti (a turno o contemporaneamente) sfruttano le capacità di uno stesso processore – Alcuni eventi impongono la priorità di certe applicazioni su altre Il calcolatore deve eseguire più programmi contemporaneamente? SI MULTIPROGRAMMAZIONE NO MONOPROGRAMMAZIONE 3 RISORSE HARDWARE Dispositivi principali • Unità centrali di elaborazione (CPU) • Memorie centrali (MC) • Unità di memoria di massa (MM) • Dispositivi di ingresso e di uscita (I/O : input/output) Altri dispositivi Questi ultimi non vengono trattati ai fini del sistema operativo in quanto riguardano particolari funzioni (calcolo matematico, gestione periferiche grafiche) • Elaboratori di canale • Dispositivi multimediali • Coprocessori matematici e acceleratori grafici 4 RISORSE HARDWARE Esempi : • Schede audio e video : sono da considerarsi particolari dispositivi di ingresso e di uscita • Lettori, masterizzatori di dischi ottici, CD, DVD : sono da considerarsi particolari dispositivi di memoria di massa Nota : ogni dispositivo ha in dotazione il proprio software che ne permette l’utilizzazione 5 SISTEMA DI ELABORAZIONE DI BASE Il generico sistema di calcolo a cui si fa riferimento è composto da una CPU, una MC e una pluralità di dispositivi dei tipi rimanenti: Nota : Lo schema sopra è semplificato in quanto nelle realtà di grandi dimensioni (workstation) ad alte prestazioni possono essere presenti più processori (sistemi multiprocessore), in questo caso il lavoro del sistema operativo si complica dovendo gestire più processi. 6 SISTEMI MONOPROGRAMMATI Un sistema operativo è composto da un insieme di programmi che, per essere eseguiti nell’unità centrale di un calcolatore, devono essere allocati in memoria centrale, cioè risiedervi nella forma di codice macchina Definizione: Un sistema viene detto monoprogrammato quando la sua memoria centrale contiene, in un dato istante, codice utente proveniente da un unico programma. L’esecuzione di un’istruzione del programma utente comporta una chiamata di sistema (system call ), cioè una richiesta a qualche routine del S.O. Esempio: richiesta d’accesso a qualche dispositivo (periferica o memoria di massa) 7 SISTEMI MONOPROGRAMMATI : CHIAMATA DI SISTEMA Quando si scrive un programma in linguaggi evoluti come C++ è il compilatore che genera il codice appropriato per il S.O. usato, diverso per Linux e Windows. In ogni caso, il compilatore genera una sequenza di istruzioni macchina, fra le quali ad un certo punto compare almeno una chiamata al sistema operativo. Flusso di esecuzione quando un’ istruzione del programma utente attraversa la chiamata di sistema: - Chiamata di sistema del programma utente - Sospensione esecuzione programma -Salvataggio informazioni del programma (utili per farlo ripartire in posizioni opportune) - Esecuzione della routine di sistema da parte del sistema operativo - Esecuzione del programma dall’istruzione successiva all’interruzione (grazie al registro Program Counter) 8 SISTEMI MONOPROGRAMMATI: ATTIVITÀ DELLA CPU Si può dividere il tempo che intercorre tra l’inizio e la fine del programma in intervalli caratterizzati dalle diverse attività della CPU: • Esecuzione di istruzioni del programma utente • Esecuzione di istruzioni del sistema operativo • Inattività, per esempio quando la CPU attende un input da tastiera. 9 SISTEMI MONOPROGRAMMATI: ATTIVITÀ DELLA CPU Considerazioni : 1. Il tempoInattivo può essere grande rispetto agli altri poiché la CPU è molto veloce 2. Nel tempoInattivo la CPU potrebbe essere impiegata per eseguire istruzioni di altri programmi 3. Ciò è possibile grazie a meccanismi che permettono di sospendere l’esecuzione di un programma per ripristinarla all’occorrenza 10 SISTEMI MULTIPROGRAMMATI • L’obiettivo è quello di ottenere il massimo rendimento della CPU attraverso l’impiego dei tempi di inattività Idea di base : • La CPU, nel tempo in cui non viene usata dal programma utente, viene adoperata per eseguire altri programmi, eventualmente di utenti diversi. • usare i meccanismi di sospensione dell’esecuzione, impiegati per le routine di sistema, per permettere l’esecuzione anche di altri programmi utente. 11 SISTEMI MULTIPROGRAMMATI • Nuove funzioni richieste ai sistemi multiprogrammati • Decidere quale istruzione far eseguire dopo quella attuale, se prelevandola dallo stesso programma o da un altro • Garantire la mutua protezione tra i diversi programmi, per evitare che i dati di uno vengono inquinati dalle istruzioni dell’altro. • Risolvere eventuali conflitti per l’assegnazione di una determinata risorsa • Il sistema operativo deve intervenire periodicamente di propria iniziativa e non solo su richiesta di un programma • System overhead = carico di lavoro in più imposto al sistema operativo 12 SISTEMI MULTIPROGRAMMATI: TIME SHARING La multiprogrammazione si ottiene con il Time Sharing Si dice che una risorsa viene gestita in modo time sharing (a partizione di tempo), quando il suo uso viene concesso per un tempo che non può superare un massimo: questo intervallo viene chiamato time slice (fetta o quanto di tempo). Il time sharing è un concetto che viene applicato ai singoli dispositivi. Se la CPU di un sistema multiprogrammazione viene gestita in time sharing, essa rimane assegnata a un programma utente fino a quando: Il programma utente termina Il programma utente richiede operazioni che coinvolgono altri dispositivi • Scade il time slice • • 13 SISTEMI MULTIPROGRAMMATI : TIME SHARING • Appena accade uno di questi eventi, il controllo passa al sistema operativo che effettua un cambiamento di contesto, ossia decide a quale tra gli altri programmi in memoria centrale spetti il prossimo time slice. • Il sistema operativo opera quindi un riassegnamento della CPU o context switch (cambiamento di contesto) • Il tempo necessario per prendere tale decisione si chiama tempo di riassegnamento. 14 SISTEMI MULTIPROGRAMMATI: CONTEXT SWITCH • La modalità con cui il S.O. decide un cambiamento di contesto costituisce un esempio di politica di gestione. • La realizzazione più semplice di una politica di gestione consiste nell’assegnamento round robin (a rotazione) • Il programma a cui è stata tolta la risorsa viene messo in fondo ad una coda di programmi in attesa. Programmi in attesa RAM Sistema Op. P2 P3 P4 Progr. 1 15 SISTEMI MULTIPROGRAMMATI: GESTIONE DELLE PRIORITÀ • E’ possibile che un sistema operativo usi meccanismi di priorità, privilegiando alcuni programmi rispetto ad altri. In questo modo, programmi con priorità alta saranno eseguiti più velocemente. • In che modo ? • Concedendo un time slice più lungo • Assegnando più spesso la CPU ai programmi con priorità alta fra quelli in attesa • L’uso del time sharing della CPU permette di realizzare ambienti multiprogrammati o multiutente senza la necessità di disporre di diverse CPU. • Il sistema operativo, attraverso il time sharing virtualizza la CPU creandone una molteplicità dove in realtà ne esiste solo una. 16 SISTEMI MULTIPROGRAMMATI SCELTA DELLA DURATA DEL TIME SLICE • Occorre tener conto che il sistema operativo utilizza una parte del tempo macchina a ogni time slice (operazioni di controllo e di assegnamento risorsa) • Se il time slice è troppo lungo, ci saranno programmi in attesa per molto tempo • Se il time slice è troppo breve, il sistema operativo dovrà intervenire spesso sottraendo molto tempo all’elaborazione. • Il valore di equilibrio dipende dalla velocità della CPU e dal tipo di applicazione per cui è stato progettato il sistema di calcolo. 17