INFORMATICA
Il Sistema Operativo
di Roberta Molinari
Il Sistema Operativo
Il Sistema Operativo
un po’ di definizioni
Elaborazione:
Elaborazione: trattamento
trattamento didi informazioni
informazioni acquisite
acquisite dall’esterno
dall’esterno per
per
restituire
restituireun
unrisultato
risultato
Processore:
Processore:unità
unitàiningrado
gradodidisvolgere
svolgereuna
unaelaborazione
elaborazione
Programma:
Programma: descrive
descrive l’insieme
l’insieme delle
delle istruzioni
istruzioni da
da fornire
fornire ad
ad una
una
macchina
perché
esegua
un
certo
compito.
Componente
statica
macchina perché esegua un certo compito. Componente statica
Processo:
Processo:successione
successionedidiazioni
azionisvolte
svolteda
daun
unprocessore
processoreper
perottenere
ottenere
un
risultato.
È
l’insieme
degli
stati
assunti
dal
processore
durante
un risultato. È l’insieme degli stati assunti dal processore durante
l’esecuzione
l’esecuzionedidiun
unprogramma.
programma.Componente
Componentedinamica
dinamica(evolve
(evolvenel
neltempo)
tempo)
File:
File:insieme
insiemedididati
datiregistrati
registratisu
susupporto
supportohardware
hardware
Risorsa:
Risorsa: qualsiasi
qualsiasi entità
entità didi un
un sistema
sistema didi elaborazione
elaborazione che
che permette
permette
l’avanzamento
l’avanzamento didi un
un processo.
processo. Può
Può essere
essere fisica
fisica (stampante,
(stampante, HD)
HD) oo
logica
logica (file);
(file); attiva
attiva (CPU)
(CPU) oo passiva
passiva (MC),
(MC), interrompibile
interrompibile (CPU)
(CPU) oo no
no
(stampante),
(stampante),divisibile
divisibile(MC)
(MC)oono
no(CPU).
(CPU).
2
Il Sistema Operativo
Il Sistema Operativo
Il Sistema Operativo è un insieme di programmi che
permette ad un utente di un sistema di elaborazione
di poterne usare le risorse.
Interfaccia:
Interfaccia: componente
componente
che
permette
ilil
che
permette
I suoi principali compiti sono:
collegamento tra 2 entità.
• fornire un’interfaccia utente-computer collegamento tra 2 entità.
• Ottimizzare l’uso delle risorse sovraintendendo e coordinando in
modo opportuno tutto quello che avviene nella macchina: dal
caricamento dei programmi alla loro esecuzione chiamando
all'opera le opportune componenti del sistema
• rendere trasparente all’utente e ai programmi stessi l’hardware
su cui stanno lavorando, fornendo un’immagine astratta delle
risorse disponibili (macchine virtuali)
Macchina
Macchina virtuale:
virtuale: componente
componente software,
software, inin grado
grado didi interagire
interagire con
con lala
macchina
macchina reale,
reale, mettendo
mettendo aa disposizione
disposizione dell’utilizzatore
dell’utilizzatore esterno,
esterno, delle
delle
procedure
proceduredette
detteprimitive.
primitive.Rende
Rendetrasparente
trasparentel’hw.
l’hw.
3
Il Sistema Operativo
Evoluzione dei SO:
dedicati - monoprogrammati
I SO nascono alla fine degli anni ’40 per
sollevare il programmatore dalla gestione diretta
delle componenti hw e per avere un’interfaccia
più amichevole.
Inizialmente i calcolatori erano in grado di
eseguire un solo programma alla volta,
completamente
residente
in
MC
(monoprogrammazione) e con tutte le risorse
ad esso dedicate. I SO si limitavano pertanto a
caricare, inizializzare e terminare i programmi.
4
Il Sistema Operativo
Evoluzione dei SO:
batch
Verso la fine degli anni ’50 i calcolatori erano divenuti
più veloci, ma ancora molto costosi: non si poteva
lasciare un computer al servizio di un solo programma
con molti tempi morti dovuti al caricamento dello stesso.
Si realizzò allora la tecnica di elaborazione a lotti o
batch:
venivano raccolti diversi lavori o job, che venivano
presentati uno di seguito all’altro all’elaboratore.
Se un programma generava un errore veniva bloccato
e si passava ad un successivo.
Non si poteva interagire con il computer durante
l’elaborazione: i dati venivano forniti insieme alle
istruzioni.
5
Il Sistema Operativo
Evoluzione dei SO:
batch



Job 1

Job 2
Job 3

Risultati job 1
Risultati job 2
Risultati job3
Se un job richiedeva operazioni di I/O la CPU le
serviva rimanendo inutilizzata in attesa che si
concludessero (periferiche molto lente rispetto ai tempi
della CPU)
CPU
Job 1
Job 2
I/O
6
Il Sistema Operativo
Evoluzione dei SO:
interattivi
L’elaborazione di tipo batch aveva dei tempi di risposta
imprevedibili ed elevati (quanti lavori ci sono prima del
mio?), in più si dovevano presentare, non solo le
istruzioni, ma anche i dati.
Nei sistemi interattivi:
I dati si presentano durante l’esecuzione.
I risultati sono “utilizzabili” appena prodotti.
I tempi di risposta dipendono dalla complessità del
programma (e dalla velocità dell’hw)
Per contro, vengono aggiunti i tempi morti di attesa
dei dati di input da parte della CPU
7
Il Sistema Operativo
Evoluzione dei SO:
multiprogrammazione
Verso il 1960 nasce la multiprogrammazione:
si vuole poter servire più job contemporaneamente,
Si vogliono eliminare i tempi morti di trasferimento dei
job da MM a MC, per cui in MC non c’è più un solo
processo.
Si realizzano processori di I/O dedicati (DMA) in modo
che la CPU lasci a loro il compito di gestire le richieste di
I/O, mentre lei passa a servire un altro job
Job 1
Job 2
Job 3
CPU
1 1 2 3
Proc I/O
1
2
1
2 2 3
1
1
1
1 2 3 3 1
1
2
3
4
5
10
11
6
7
8
9
1
2
12
13
8
Il Sistema Operativo
Evoluzione dei SO:
time-sharing
In un ambiente di multiprogrammazione, un processo
con poche operazioni di I/O, poteva monopolizzare la
CPU. Si introduce la politica di gestione a partizione di
tempo (time-sharing):
La CPU è assegnata ai vari processi per un quanto di
tempo fisso (time-slice)
La CPU passa ad un altro processo, anche quando
devono essere eseguite operazioni di I/O
Job 1
Job 2
Job 3
CPU
1 2 3 1
Proc I/O
1
2
2 3 2
1 2
2 3 3 1
1
1
2 1
1
3
7
8
9
11
4
5
6
10
1
1
12
13
9
Il Sistema Operativo
Evoluzione dei SO:
svantaggi
multiprogrammazione
Avendo in esecuzione più programmi nascono i seguenti problemi:
 Protezione: affinché non si vadano a modificare i dati di altri
programmi in MC.
– Si assegna ad ogni processo uno proprio spazio degli indirizzi.
 Condivisione: delle risorse tra i vari programmi.
– Si creano varie politiche di assegnamento delle risorse
(scheduling) nei momenti di “conflitto”
 Il SO stesso deve condividere con gli altri programmi la MC e le
risorse.
– Le operazioni del SO sono “privilegiate” e il processore quando le
esegue è in uno stato supervisore, altrimenti è in modalità
utente
 Il SO è troppo grande per essere tutto in MC
– Si carica in MC le componenti essenziali (supervisore) e si lasciano
le altri componenti come librerie in MM
10
Il Sistema Operativo
Evoluzione dei SO:
real-time
Negli anni ’60 assumono importanza anche i sistemi
real-time:
 L’esecuzione di una certa operazione deve avvenire
in tempi trascurabili rispetto agli eventi esterni con
cui interagisce (sistema che controlla un processo di
produzione, sistema di pilotaggio di un aereo,…)
11
Il Sistema Operativo
Evoluzione dei SO:
portabili
Inizialmente i SO erano proprietari, cioè legati ad una
certa macchina. Agli inizi degli anni ’80, con l’avvento
del personal computer, si separa l’hardware dal SO
creando sistemi snelli e portabili, cioè utilizzabili su
HW differenti. Nasce MS-DOS della Microsoft, con cui
anche persone non tecniche erano in grado di
interagire con il PC tramite un interfaccia in modalità
testuale.
La Apple invece lancia il suo SO con la prima interfaccia
grafica a finestre, così friendly da favorire la
diffusione dei PC.
12
Il Sistema Operativo
Evoluzione dei SO:
distribuiti
Alla fine degli anni ’80, per velocizzare l’elaborazione,
invece di potenziare una sola macchina, si è pensato
di utilizzare più CPU, che lavorano in un reale
parallelismo. Queste possono:
 Condividere lo stesso clock e la stessa MC che
utilizzano
per
comunicare
(sistemi
multiprocessore)
 Avere una propria MC e comunicare tramite
connessioni veloci (sistemi distribuiti). In questi
sistemi è possibile:
– Condividere le risorse (fisiche e logiche) in
modo
trasparente all’utente
– Essere più affidabili, in quanto un elaboratore guasto può
essere rimpiazzato dalla capacità elaborativa degli altri
– Comunicare tra elaboratori tramite messaggi.
13
Il Sistema Operativo
SO di riferimento
Studieremo un generico SO multiprogrammato,
con un’unica CPU, dei processori di I/O dedicati
DMA, delle periferiche standard
CPU
BUS
MC
DMA
DMA

HD
DMA

14
Il Sistema Operativo
Il Sistema Operativo
Modello onion skin (a cipolla)
utente
 risorse logiche
 risorse fisiche
15
Il Sistema Operativo
Il Sistema Operativo
Nucleo
Gestione della CPU:
 Ogni programma o richiesta da parte di un
utente è un Job (Lavoro). Per essere
eseguito viene caricato in MC e la sua
esecuzione genererà una serie di processi
 La risorsa CPU viene assegnata ai vari
processi che ne hanno chiesto l’utilizzo, per
un certo tempo (politica di time-sharing)
 Vengono generate e gestite diverse code di
processi
16
Il Sistema Operativo
Il Sistema Operativo
Gestore della memoria
centrale
Qualunque Job per essere eseguito deve essere
caricato in MC
Il gestore della memoria decide:
 come organizzare lo spazio in MC
 come assegnare lo spazio in MC ai vari job
prelevati dalla MM (swap-in)
 come liberare spazio in MC quando è piena
(swap-out)
17
Il Sistema Operativo
Il Sistema Operativo
Gestore della periferiche
Periferica:
Periferica: dispositivo
dispositivo hardware
hardware non
non strettamente
strettamente necessario
necessario alal
funzionamento
funzionamento dell’elaboratore,
dell’elaboratore, inin quanto
quanto non
non interviene
interviene direttamente
direttamente
nell’elaborazione.
nell’elaborazione.
Il gestore delle periferiche deve:
 Conoscere lo stato di ogni periferica (libera,
occupata, non in linea,..) e dei suoi canali
 Decidere a quale processo e per quanto tempo deve
assegnare una periferica
 Assegnare al processo prescelto la periferica e il
canale
 Decidere come deve essere rilasciata una periferica
18
Il Sistema Operativo
Il Sistema Operativo
Gestore dell’informazioni
Il gestore dell’informazioni o file system deve occuparsi
dell’archiviazione e del reperimento dei dati nelle
memorie di massa. I suoi compiti sono:
 Per ogni dispositivo tenere traccia di tutti i file su
esso presenti
 Determinare chi può utilizzare e come possono
essere utilizzati i vari file
 Assegnare la risorsa al processo prescelto (apertura
del file) e rilasciarla (chiusura file)
 Creare e cancellare file e directory
 Fornire primitive di manipolazione sui file
 Permettere il back-up
19