SISTEMI OPERATIVI
Prof. Enrico Terrone
A. S: 2008/09
Che cos’è il sistema operativo
Il sistema operativo (SO) è il software che gestisce e
rende accessibili (sia ai programmatori e ai
programmi, sia agli utenti) le principali risorse
hardware e software presenti su un computer.
Gli utenti di solito identificano il SO con la sua
interfaccia grafica, ma questa è solo la
“confezione” di un software molto più complesso,
che serve a governare il funzionamento dell’intero
computer (e che può anche avere un’interfaccia
testuale: si veda il Prompt dei comandi”).
Che cos’è il sistema operativo
Per avere un’idea di quali siano le funzioni principali
del sistema operativo aprire esplora risorse
(gestore delle informazioni), pannello di controllo
(gestore delle periferiche) e soprattutto premere
CTRL+ALT+CANC (task manager: gestore di
memoria e processore).
Il SO non è indispensabile in teoria ma è lo è in
pratica: in sua assenza, ogni programma dovrebbe
contenere tutte le istruzioni necessarie per gestire
le componenti hardware.
Che cos’è il sistema operativo
Il sistema operativo rappresenta uno dei livelli basilari
del modello di Tanenbaum: al di sotto ci sono
soltanto l’hardware (che il SO deve gestire) e il
linguaggio macchina (le cui istruzioni costituiscono
il SO).
Applicazioni
Linguaggio di alto livello
Assembly
Sistema operativo
Linguaggio macchina
Hardware
Che cos’è il sistema operativo
I sistemi operativi più diffusi sono quelli prodotti da
Microsoft (Windows XP, Vista, Windows 7) ma
vanno considerati anche i SO della “famiglia” UnixLinux e quelli della famiglia Apple (MAC-OS).
Il sistema operativo è il primo programma che viene
caricato in memoria RAM all’accensione del
computer (bootstrap); esso resta sempre in
esecuzione, fino allo spegnimento (shutdown) del
computer. È il primo programma che arriva e
l’ultimo che se ne va.
Che cos’è il sistema operativo
Il sistema operativo è un software molto complesso
composto di molti programmi collegati e coordinati
fra loro. Lo si può suddividere in livelli. I livelli più
vicini all’hardware formano il kernel.
Per capire come funziona il SO occorre conoscere la
struttura dell’hardware (modello di Von Neumann).
Interfaccia utente (Shell)
Gestore delle informazioni
Gestore delle periferiche
Gestore della memoria
Gestore dei processi (Nucleo)
Hardware
Il modello di Von Neumann
Memoria
centrale
Input
Output
CPU
(CU + ALU)
Il gestore dei processi
Un processo è un programma in esecuzione.
Da un singolo programma si possono dunque
ricavare più processi.
Il sistema operativo carica il processo in memoria
centrale (tramite il gestore della memoria, vedi
dopo) e poi gli concede l’utilizzo della CPU in
modo che esso possa eseguire le istruzioni da cui
è composto.
I vecchi sistemi operativi (MS-Dos) eseguivano i
processi in sequenza, uno dopo l’altro. Questa
modalità di esecuzione si chiama batch e impone
che un processo sia terminato perché il successivo
possa iniziare.
Il gestore dei processi
I moderni computer funzionano invece secondo la
modalità multitasking: più processi (che
graficamente corrispondono a più finestre)
possono essere in esecuzione
contemporaneamente.
In realtà la CPU, in un dato istante di tempo, è
sempre assegnata a un unico processo: il
parallelismo è simulato alternando rapidamente
l’utilizzo della CPU fra i vari processi in esecuzione
(time sharing).
P1
P2
P3
P1
P2
P3
Il gestore dei processi
Chiaramente è molto più complicato realizzare un SO
multitasking anziché un SO batch: il SO
multitasking deve infatti alternare in continuazione
l’utilizzo della CPU fra i differenti processi in
esecuzione.
L’operazione di assegnazione della CPU fra i vari
processi si chiama scheduling.
Un processo viene tolto dalla CPU quando scade il
suo tempo (time slice) oppure quando si blocca
esso stesso per un’operazione di input/output.
[schema p. 238]
[schema p. 250]
t
Gli stati del processo
Il gestore della memoria
Il gestore della memoria assegna a un processo (cioè
alle sue variabili e alle sue istruzioni) lo spazio di
memoria centrale necessario alla sua esecuzione.
Questa operazione si chiama “allocazione del
processo”.
Nei SO batch in memoria centrale a un dato istante ci
sono soltanto il SO stesso e il processo in
esecuzione, per cui la gestione è abbastanza
semplice.
Invece nei SO multitasking in memoria ci possono
essere contemporaneamente più processi e quindi
la gestione è più complessa: occorre infatti fare in
modo che ogni processo abbia un suo spazio e
non interferisca negli spazi degli altri processi.
Il gestore della memoria
SO
P1
P3
P2
P4
Il gestore della memoria
Per una gestione ottimale della memoria i moderni
SO utilizzano tecniche dette di paginazione e di
segmentazione.
Quando un processo termina, la memoria che
occupava viene liberata per un altro processo, che
però potrebbe essere più piccolo o più grande di
quello terminato. In questo modo si creano dei
“buchi” in memoria centrale.
La paginazione divide la memoria in blocchi e i
processi in pagine, che possono essere collocati in
blocchi anche non contigui della memoria, in modo
da occupare il più possibile i “buchi”.
Il gestore della memoria
Se si usa la paginazione, il sistema operativo deve
preservare l’unità del processo gestendo la
memoria attraverso una tabella dei blocchi (che
per ciascun blocco indica se è libero o da quale
processo è occupato) e i processi attraverso una
tabella della pagine (che per ciascuna pagina
indica in quale blocco si trova).
Un miglioramento ulteriore si ha introducendo la
memoria virtuale, per cui un processo può essere
eseguito senza dover stare tutto in memoria
centrale: alcune pagine sono parcheggiate su
disco e richiamate soltanto quando occorre
eseguire le istruzioni presenti al loro interno.
Il gestore della memoria
La segmentazione è una tecnica simile alla
paginazione, con la differenza che pagine hanno
tutte la stessa dimensione mentre i segmenti
hanno dimensione variabile.
Attraverso la segmentazione, si può “affettare” un
processo tenendo conto della sua struttura logica.
La segmentazione paginata è una tecnica che si basa
su una suddivisione dei processi in segmenti e
quindi dei segmenti in pagine: essa unisce i
vantaggi della paginazione (gestione ottimale della
memoria) e della segmentazione (rispetto della
suddivisione logica del programma).
Si noti che quanto più efficiente una tecnica, tanto più
complesso da realizzare sarà il SO.
Gerarchia di memorie