Il Sistema Operativo
Il Sistema Operativo fa parte del software di base; e` costituito da un insieme insieme di di programmi programmi che interagiscono e cooperano per:
gestire efficientementegestire efficientemente
l'elaboratore e le sue
periferiche, cercando di sfruttare al massimotutte le componenti hardware
creare un
ambiente amichevoleambiente amichevoleper l'interazione
uomo-macchina
Il Sistema Operativo
Funzioni
Funzioni del del Sistema Sistema Operativo: Operativo
AvvioAvvio dell’elaboratore
Gestione del processoreprocessore e dei programmi in esecuzione
Gestione della memoria principalememoria principale
Gestione della memoria secondariamemoria secondaria
Gestione dei dispositivi di input/outputinput/output
Gestione dei filefile
InterazioneInterazione con l’utente
Il Sistema Operativo
Tipologie di SO:
sistemi monomono--utenteutente - sistemi multimulti--utenteutente
i sistemi mono- utente sono destinati ad elaboratori per usi personale (tipo PC) mentre i sistemi multi-utente sono destinati ad elaboratori utilizzati da piu` utenti contemporaneamente
sistemi monomono--programmatiprogrammati - sistemi multimulti-- programmati
programmati
i sistemi mono- programmati gestiscono l’ esecuzione di un solo
programma alla volta, mentre i sistemi multi-programmati gestiscono piu` programmi contemporaneamente
sistemi interattiviinterattivi - sistemi batchbatch
classificazione basata sull’ interazione con l’utente
Il Sistema Operativo
Sistemi mono-utente interattivi pensati per Personal Computer
IBM PC - Compatibili (DOS - Windows)
Macintosh
L’ interazione utente/computer puo` essere:
testuale
) es. MS-DOS per PC-IBM
grafica
) es. Macintosh
) es. Windows per PC-IBM
Il Sistema Operativo: Esempio
Immettiamo il comando date
Il Sistema Operativo: Esempio
Premendo il tasto “Enter” si ottiene
Le operazioni effettuate sembrano abbastanza semplici ma provocano una serie di eventi in cui vengono coinvolte sia risorse hardware che
risorse software
Il coordinamento e la gestione delle varie
risorse viene effettuato dal Sistema Operativo
Il Sistema Operativo fornisce i servizi che sono necessari a tutti gli altri programmi in
esecuzione
Esempio
Disco rigido listener
directory manager terminal driver
disk driver file manager
BUFFER Tastiera
BUFFER
Monitor
148.608.043.200.010 OROLOGIO
dat dat
Per ogni carattere immesso tramite la tastiera viene generato un codice corrispondente
Il codice, grazie ad una componente hardware, viene memorizzato in un’area di memoria riservata (buffer) e viene inviato un segnale alla CPU (interrupt)
Quando la CPU riceve l`interrupt dalla tastiera attiva un modulo (un piccolo programma) chiamato terminal
driver
Il terminal driver invia al monitor una copia del codice del carattere immesso per visualizzare il carattere
Il codice corrispondente al carattere “Enter” indica che il comando immesso (date) è completo
¡ Il terminal driver attiva un altro modulo chiamato
listener (perchè attende le richieste provenienti dagli utenti)
¢ Il listener legge i caratteri dal buffer della tastiera e ricerca un programma chiamato date, lo carica in memoria centrale e lo esegue
£ Il programma date “va a leggere” un “orologio” (un contatore che tiene conto dello scorrere del tempo) e passa l’informazione letta al terminal driver
¤ Il terminal driver trasmette la data al monitor che la visualizza
Organizzazione del SO
La gestione dei vari eventi da parte di un S.O. è una delle aree di vitale importanza dell’informatica
L’idea di base è quella di creare una gerarchia di livelli di astrazione (struttura a cipolla)
In questo modo, ad ogni livello le funzionalità presenti possono ignorare i dettagli sulle funzionalità offerte da altri livelli
kernel
gestione memoria processore, risorse interfaccia comandi
Organizzazione del SO
Al livello più alto della gerarchia di funzionalità si trova l’utente del sistema
Idealmente l’utente è ignaro di tutti i dettagli delle operazioni svolte dai livelli inferiori della gerarchia
L’utente ha conoscenza solo delle operazioni che è interessato ad effettuare
Nell’esempio della data l’utente è interessato alla data e conosce solo il comando che serve per ottenere tale
informazione
Avvio dell’elaboratore
Il sistema operativo viene mandato in esecuzione all’accensione del calcolatore (fase di bootstrap)
In questa fase una parte del sistema operativo viene caricata in RAM,in genere questa parte comprende:
programmi per la gestione gestione del del processoreprocessore
programmi per la gestione della gestione della RAMRAM
programmi per la gestione dell’Igestione dell’I/O/O
programmi per la gestione dei gestione dei filefile
programmi per l’interfaccia l’interfaccia con l’utentecon l’utente
Spesso in questa fase si eseguono anche programmi per la ricerca di virusvirus
Avvio dell’elaboratore
Una parte
Una parte del del Sistema Operativo deveSistema Operativo deve essere sempre essere sempre mantenuta
mantenuta in RAMin RAM e e deve sempre essere pronta deve sempre essere pronta per per l’esecuzione
l’esecuzione
Sistema Operativo
Spazio utente
01
n
Gestione del processore e dei processi
Il processore è la componente più importante di un sistema di elaborazione e pertanto la sua corretta ed efficiente gestione è uno dei compiti principali di un sistema operativo
Il ruolo del processore è quello di eseguire programmi
Chiamiamo processo un programma in esecuzione
Gestione del processore e dei processi
Quando si clicca sull’icona di un programma, il Sistema Operativo:
cerca il programma corrispondente in memoria secondaria
copia il programma in RAM
imposta il Program Counter con l’indirizzo della
prima istruzione del programma principale
Gestione del processore e dei processi
Sistemi
Sistemi mono mono - - utente utente , mono , mono - - programmati programmati
Un solo utente puo’ eseguire un soloun solo programma programma alla volta
alla volta
Il programma viene ““lanciato” , lanciato” , eseguito eseguito e e terminato
terminato
La CPU non e’ non e’ utilizzata utilizzata al al meglio! Si spreca molto meglio tempo
La CPU e’ molto piu’ veloce delle periferiche
(dispositi di I/O e disco) quindi passa molto passa molto del del suo suo tempo in
tempo in attesa attesa del del completamentocompletamento delle operazioni da parte di questi dispositivi
Durante queste fasi di attesa si dice che la CPU e’
idleidle
Gestione del processore e dei processi
Esempio Esempio 1.1.
Un processo e’ costituito da 1000 istruzioni, la CPU ha frequenza di 1MHz, quindi il processo richiede:
103/106 sec = 1msec
A meta’ esecuzione e’ richiesta la lettura di un dato dal disco. Il tempo di lettura e’ pari a 1msec. :
tempo totale di esecuzione del processo = 2 msec.
Idle time = 1 msec.:
Il 50% del tempo totale di esecuzione e’ tempo sprecato
Gestione del processore e dei processi
Esempio Esempio 2.2.
Un processo e’ costituito da 1000 istruzioni, la CPU ha frequenza di 1MHz, quindi il processo richiede:
103/106 sec = 1msec
A meta’ esecuzione e’ richiesta la lettura di un dato da tastiera. Il tempo di lettura e’ pari a 1sec. :
tempo totale di esecuzione del processo = 1001 msec.
Idle time = 1 sec.:
Il 99,9 % del tempo totale di esecuzione e’ tempo sprecato!!!
Gestione del processore e dei processi
Sistemi multiprogrammati Sistemi multiprogrammati
Quando un processo si ferma in attesa di operazioni di I/O, la CPU passa ad eseguire un altro proceso
Il SO si occupa dell’alternanza tra i vari processi
Piu’ programmi sembrano cosi’ essere eseguiti contemporaneamente
contemporaneamente
In realta’ in in ogni istante c’e’ sempre ogni istante c’e’ sempre un solo un solo processo processo in in esecuzione
esecuzione, ma se l’alternanza e’ molto frequente si ha un’impressione di simultaneita’
Il numero di processi “contemporaneamentecontemporaneamente” in esecuzione e’
comunque limitato ed e’ detto ”grado grado di di multiprogrammazionemultiprogrammazione”
Gestione del processore e dei processi
Un processo può trovarsi in tre diversi stati:
in esecuzioneesecuzione,, quando sta utilizzando il processore;
in attesaattesa (bloccato), quando è in attesa del verificarsi di un evento esterno (terminazione di un’operazione di input/output o altro)
pronto, quando è potenzialmente in condizione di pronto poter utilizzare il processore che è occupato da un altro processo
Gestione del processore e dei processi
pronto
creazione I/O terminato o risorsa disponibile
in_attesa
in_esecuzione terminazione
richiesta I/O o risorsa scambio
esecuzione
Gestione del processore e dei processi
Cosa succede
Cosa succede se…. se
Un processo non non si ferma maisi ferma mai in attesa di I/O?
Piu’ utenti vogliono usare il computer?Piu’ utenti
E’ necessario che il tempo della CPU sia distribuitodistribuito tra i processi in attesa: si parla di politicapolitica di di scheduling
scheduling della CPU. Se un processo in stato di esecuzione puo’ essere interrotto e ritornare nello stato di pronto, la politica si dice di tipo preemptive (prerilasciabile)
Gestione del processore e dei processi
I/O terminato o risorsa disponibile
in_esecuzione
pronto in_attesa
creazione
terminazione
richiesta I/O o risorsa scambio
esecuzione
Coda ready
tempo scaduto
Gestione del processore e dei processi
Per gestire l’insieme dei processi attivi il SO mantiene in un’area di memoria riservata, la tabella dei processi, in cui per ogni processo memorizza molte informazioni:
Identificatore del processo
Identificatore dell’utente
Stato del processo
Contenuto del Program Counter e altri registri
Informazioni file aperti
….
Gestione del processore e dei processi
Le informazioni della tabella dei Processi servono a realizzare lo scambio scambio di di contestocontesto (context switching)
Quando un processo rilascia la CPU, le informazioni informazioni del del suo stato vengono copiate nel suo descrittoresuo stato vengono copiate nel suo descrittore all’interno della tabella dei processi
Quando il processo torna in esecuzione questi valori vengono ricopiati negli opportuni registriricopiati negli opportuni registri
In questo modo quando riprende l’esecuzione, il processo riparte dal punto riparte dal punto in cui era in cui era stato interrottostato interrotto
Obiettivi del gestore dei processi
massimizzare l’ utilizzazione del processsore
minimizzare il tempo d`attesa dei processi
massimizzare il numero dei programmi eseguiti nell’ unita` di teempo (throughput throughput)