Sei sulla pagina 1di 51

Il Sistema Operativo

Introduzione
Gestione dei processi
Gestione della memoria
Memoria cache (cenni)
Informatica B Prof. A. Morzenti

Il sistema Operativo

 Il sistema operativo (SO) uno strato software che nasconde


agli utenti i dettagli dellarchitettura hardware del calcolatore
 Fornisce diverse funzionalit ad alto livello che facilitano
laccesso alle risorse del calcolatore
 Supporta lesecuzione dei programmi applicativi definendo
una macchina virtuale, cio un modello ideale del calcolatore,
sollevando il software applicativo dal compito di gestire i
limiti delle risorse disponibili

Architettura del sistema operativo

 Il SO tipicamente organizzato a
strati
 Ciascun strato costituisce
una macchina virtuale che gestisce
una risorsa del calcolatore
 Le principali funzionalit offerte
sono:
La
La
La
La
La
La

gestione
gestione
gestione
gestione
gestione
gestione

dei processi
della memoria
delle periferiche
del file system
della rete
dellinterfaccia utente

 Le prime tre funzionalit sono


indispensabili per il funzionamento
del sistema e pertanto
costituiscono il nucleo del SO
(Kernel)

Programmi utente
Interprete comandi

File system

Gestione delle periferiche

Gestione della memoria

Gestione dei processi


Macchina fisica

Kernel
3

Tipi di Sistema Operativo

 Esistono diversi tipi di sistema operativo, ma in generale si


possono dividere in:
Monoutente e monoprogrammato
Esecuzione un solo programma applicativo alla volta
Viene utilizzato da un solo utente per volta
Esempio: DOS

Monoutente e multiprogrammato (multitasking)


Consente di eseguire contemporaneamente pi programmi
applicativi
Esempio: Windows 95

Multiutente
Consente lutilizzo contemporaneo da parte di pi utenti
E inerentemente multiprogrammato
Esempio: Linux

Gestione dei processi

 Il SO si occupa di gestire lesecuzione concorrente di pi


programmi utente
 La CPU del calcolatore (o le CPU nei sistemi multiprocessore)
deve essere distribuita in maniera opportuna fra i programmi
da eseguire
 Ogni programma eseguito ha a disposizione una macchina
virtuale realizzata dal SO che ne consente lesecuzione come
se la CPU del calcolatore fosse interamente dedicata a esso

Gestione della memoria

 La gestione concorrente di molti programmi applicativi


comporta la presenza di molti programmi in memoria
centrale
 Il SO offre a ogni programma applicativo la visione di una
memoria virtuale, che pu avere dimensioni maggiori di
quella fisica
 Per gestire la memoria virtuale il SO dispone di diversi
meccanismi:
Rilocazione
Paginazione
Segmentazione

Gestione del file system

 Il SO si occupa di gestire i file sulla memoria di massa:


Creare un file
Dargli un nome
Collocarlo in un opportuno spazio nella memoria di massa
Accedervi in lettura e scrittura
 Gestione dei file indipendente dalle caratteristiche fisiche
della memoria di massa
 I file vengono inclusi allinterno di directory (o cartelle, o
cataloghi):
Hanno una tipica organizzazione ad albero
Alcuni sistemi operativi permettono una struttura a grafo

La struttura ad albero

Organizzazione dei file

 A ciascun utente normalmente associata una directory


specifica, detta home directory
 Il livello di protezione di un file indica quali operazioni
possono essere eseguite da ciascun utente
 Ciascun file ha un pathname (o nome completo) che include
lintero cammino dalla radice dellalbero
 Il contesto di un utente allinterno del file system la
directory in cui correntemente si trova

Gestione delle periferiche: i DRIVER

 I Driver sono meccanismi software a cui affidato il compito


di trasferire dati da e verso le periferiche
 Consentono ai programmi applicativi di leggere o scrivere i
dati con primitive di alto livello che nascondono la struttura
fisica delle periferiche (e.g., nel sistema Unix le periferiche
sono viste come file speciali)
 Danno allutente limpressione che la periferica sia dedicata
allutente

10

Gestione dell
dellinterfaccia utente

 Il SO fornisce un interprete dei comandi inseriti dallutente


attraverso la tastiera o il mouse
 Linterfaccia utente pu essere
Testuale (esempio: DOS)
Grafica (esempio: Windows)
 Consente linserimento di diversi comandi:
Esecuzione di programmi applicativi
Operazioni sulle periferiche
Configurazione dei servizi del SO
Operazioni sul file system (creazione, rimozione, copia,
ricerca, ecc.)

11

Che cosa un processo per il SO?

 Processo programma !
 Processo = esecuzione di un programma, composto da:
codice eseguibile (il programma stesso)
dati dellesecuzione del programma
informazioni relative al suo funzionamento (stato)
 Lo stesso programma pu essere associato a pi
processi:
Un programma pu essere scomposto in varie parti
e ognuna di esse pu essere associata a un diverso
processo
Lo stesso programma pu essere associato a
diversi processi quando esso viene eseguito pi
volte, anche simultaneamente

12

Lo stato di un processo

 Lo stato del processo pu essere distinto fra stato interno e


stato esterno.
 Lo stato interno indica:
la prossima istruzione del programma che deve essere
eseguita;
i valori delle variabili e dei registri utilizzati dal processo.
 Lo stato esterno indica se il processo :
in attesa di un evento, ad es. la lettura
da disco o linserimento di dati da tastiera;
in esecuzione;
pronto per lesecuzione, e quindi in attesa di accedere alla
CPU.

13

Il sistema operativo e le macchine virtuali

RAM B

HD B

CPU C

RAM C

HD C

bus
OD B

Rete B

I/O B

OD C

Rete C

I/O C

CPU A

RAM A

HD A

CPU D

RAM D

HD D

OD A

Rete A

I/O A

OD D

Rete D

I/O D

proc. D

proc. A

CPU B

proc. C

proc. B

 Il sistema operativo pu gestire pi processi


simultaneamente
 Rende quindi visibile ad ogni processo una macchina virtuale
ad esso interamente dedicata e quindi con risorse proprie

14

Il sistema operativo e la macchina reale

utilizzo a rotazione

suddivisione in blocchi

CPU
A, B, C, D

suddivisione in blocchi

RAM

HD

A
B
C
D

A
B
C
D

bus

OD
A
B
C
D

suddivisione in blocchi

Rete

I/O

A, B, C, D

A, B, C, D

utilizzo a rotazione

utilizzo a rotazione

15

I processi e il sistema operativo

 Anche il sistema operativo implementato tramite processi;


 Il sistema operativo garante che i conflitti tra i processi
siano controllati e gestiti correttamente;
 Il sistema operativo viene eseguito in modalit privilegiata
(kernel mode o supervisor), cos da poter controllare
gli altri processi eseguiti in modalit user.
Kernel (o Supervisor)
Supervisor mode:
mode la CPU pu eseguire
qualsiasi istruzione, iniziare qss. operazione I/O, accedere
a qss. area di memoria, etc.
User mode:
mode certe istruzioni, che alterano lo stato globale
della macchina, non sono permesse: operazioni I/O,
accesso a certe aree di memoria, etc.

16

Chiamate al supervisor
 I processi utente per eseguire operazioni privilegiate
(accesso a file, accesso ad altre risorse, operazioni di I/O,
ecc.) invocano il supervisor tramite chiamate di sistema
 Perch usare la modalit privilegiata (supervisor)?
Le operazioni di I/O sono operazioni riservate:
un
un
un
un

processo A non deve poter andare a scrivere messaggi su


terminale non associato allo stesso processo A;
processo A non deve poter leggere caratteri immessi da
terminale non associato allo stesso processo A.

Un processo non deve poter sconfinare al di fuori del


proprio spazio di memoria:
per non accedere allo spazio di memoria associato a un altro
processo, modificando codice e dati di questultimo;
per non occupare tutta la memoria disponibile nel sistema,
bloccandolo e rendendolo cos inutilizzabile da altri processi.

La condivisione di risorse (dischi, CPU, ecc.)


deve essere tale da cautelare i dati di ogni utente;

17

Stato di un processo (1)

Inizio esecuzione
 In esecuzione:
assegnato al processore
ed eseguito da esso
 Pronto: pu andare in
esecuzione, se il
gestore dei processi lo
decide
 In attesa: attende il
verificarsi di un evento
esterno per andare in
stato di pronto

- Fine quanto di tempo


- Interruzione esterna

Processo
pronto

Primo processo
pronto
Processo in
esecuzione

Evento esterno
atteso

Interruzione interna

- Fine esecuzione
- Abort per errore

Processo in
attesa

18

Stato di un processo (2)

Inizio esecuzione
 I processi appena creati
sono messi in stato di

pronto
 Il nucleo decide quale
processo pronto mettere
in stato di esecuzione
 Il nucleo assegna il
processore a un processo
per un quanto di tempo
Coda dei processi
pronti
Round-robin
Priorit dei processi

P1 P2
Processo
pronto

- Fine quanto di tempo


- Interruzione esterna
Primo processo
pronto
Processo in
esecuzione

Evento esterno
atteso

Interruzione interna

- Fine esecuzione
- Abort per errore

Processo in
attesa

19

Stato di un processo (3)

Inizio esecuzione
 Il processo in esecuzione
passa in stato di attesa se
richiede operazioni di I/O
(interruzione interna)
 Corrisponde alla
esecuzione dellistruzione
chiamata a supervisore
(SuperVisor Call, SVC)

P2
Processo
pronto

- Fine quanto di tempo


- Interruzione esterna

P1
Processo in
esecuzione

Primo processo
pronto
Evento esterno
atteso

Interruzione interna

- Fine esecuzione
- Abort per errore

Processo in
attesa

20

Stato di un processo (4)

 Cambiamento di
contesto:
Salvare il contesto di
P1
nel suo descrittore di

Inizio esecuzione
- Fine quanto di tempo
- Interruzione esterna
Primo processo
pronto

processo
 Il processore ora
libero, un altro processo
passer in esecuzione

P2
Processo
pronto

Processo in
esecuzione
Interruzione interna

- Fine esecuzione
- Abort per errore

Evento esterno
atteso
P1
Processo in
attesa

21

Stati di un processo (5)

Inizio esecuzione
 Quando loperazione di I/O
finita viene generata
uninterruzione esterna
 Il processo in esecuzione
viene interrotto
 Il nucleo esegue il gestore
delle interruzioni che
esegue le azioni opportune
 P1 pu tornare pronto
 Il nucleo sceglie quale
processo mandare in
esecuzione

- Fine quanto di tempo


- Interruzione esterna

P2
Processo in
esecuzione

Primo processo
pronto

Interruzione interna

- Fine esecuzione
- Abort per errore

Processo
pronto

Evento esterno
atteso
P1
Processo in
attesa

22

Stato di un processo (6)

 Pre-emption: quando il
quanto di tempo
scaduto, il nucleo
interrompe il processo in
esecuzione
 Si cerca di garantire un
uso equo della CPU a
tutti i processi

Inizio esecuzione
P2
Processo
pronto

- Fine quanto di tempo


- Interruzione esterna
Primo processo
pronto
P1
Processo in
esecuzione

Evento esterno
atteso

Interruzione interna

- Fine esecuzione
- Abort per errore

Processo in
attesa

23

La gestione del quanto di tempo

 Il quanto di tempo gestito da una particolare interruzione,


generata dallorologio di sistema:
a una frequenza definita, il dispositivo che realizza
lorologio di sistema genera uninterruzione. La routine di
risposta relativa incrementa una variabile opportuna che
contiene il tempo di esecuzione del processo corrente
se il quanto di tempo non scaduto la routine termina e,
se non ci sono interruzioni annidate, il processo prosegue
nellesecuzione
se invece il quanto di tempo scaduto viene invocata una
particolare funzione del nucleo (preempt) che cambia lo
stato del processo da esecuzione a pronto, salva il
contesto del processo e attiva una particolare funzione del
nucleo (change) che esegue una commutazione di
contesto e manda in esecuzione un processo pronto.

24

Il S.O. e la gestione della memoria


Il modello della memoria
 E un modello lineare
 La memoria una
sequenza di celle
numerate da 0 fino a un
valore massimo M
 Il numero che identifica
ogni cella detto indirizzo
 La dimensione della cella
dipende dal tipo di
calcolatore (per noi sar di
8 bit, ossia un byte)

MEMORIA
0
1
2

M
25

Spazio di indirizzamento

 Lo spazio di indirizzamento il numero massimo


di indirizzi possibili della memoria
 Dipende dalla lunghezza in bit degli indirizzi
 Se gli indirizzi sono lunghi N bit, lo spazio
di indirizzamento di 2N celle
 Tutte le celle devono essere indirizzabili
(cio devono avere un indirizzo), quindi
Dimensione memoria Spazio indirizzamento
 Le dimensioni della memoria sono generalmente espresse in:
KB (Kilobyte) = 210 byte
MB (Megabyte) = 220 byte
GB (Gigabyte) = 230 byte

26

Memoria virtuale vs. fisica


 Gli indirizzi contenuti in un programma eseguibile sono
indirizzi virtuali e danno riferimento alla memoria virtuale
 La memoria effettivamente presente nel calcolatore la
memoria fisica e i suoi indirizzi sono detti indirizzi fisici
 La rilocazione dinamica uno dei meccanismi di
trasformazione da indirizzo virtuale (detto anche rilocabile) a
fisico
Registro base

Indirizzo
calcolato
(fisico)

Indirizzo
virtuale
(rilocabile)
27

MEMORIA
PROCESSORE
999

RB
1000

1000

1001

1002

1003

processo in
esecuzione

1004

PC
3

indirizzi fisici

indirizzi virtuali

28

Memoria virtuale vs. fisica

 La memoria virtuale e quella fisica non coincidono per i


seguenti motivi:
nella memoria fisica risiedono contemporaneamente il s.o.
e i diversi processi
conviene mantenere nella memoria fisica una sola copia di
parti di programmi che sono uguali in diversi processi
(memoria condivisa)
 per evitare la frammentazione della memoria (spazi vuoti in
memoria inutilizzabili) utile allocare i programmi
suddividendoli in pezzi
 la memoria fisica pu essere insufficiente a contenere la
memoria virtuale di tutti processi

29

Soluzione al problema della frammentazione

MEMORIA
Sistema Operativo
Processo P

MEMORIA

Processo S

Sistema Operativo
Processo P
Processo S (1)

Processo Q

Processo Q
Processo S (2)

Processo R

Processo R

30

Paginazione

 Si rinuncia ad avere una zona contigua della


memoria fisica per ciascun processo
 La memoria virtuale del programma viene suddivisa in
porzioni (pagine virtuali) di lunghezza fissa (potenza di 2, es:
4K)
 La memoria fisica viene divisa in pagine fisiche
della stessa dimensione
 Le pagine virtuali di un programma vengono caricate in
altrettante pagine fisiche, non necessariamente contigue

31

MEMORIA
FISICA

MEMORIA
VIRTUALE P

dimensione
pagina

MEMORIA
VIRTUALE Q

32

Struttura degli indirizzi virtuali


 Un indirizzo virtuale costituito da un numero di pagina
virtuale (NPV) e da uno spiazzamento (offset) allinterno
della pagina
indirizzo virtuale
NPV

offset

 NB: se (come succede sempre in pratica) la dimensione della


pagina una potenza di 2, giustapponendo numero pagina e
offset si calcola la somma base_pagina+offset
33

Struttura degli indirizzi fisici

 E del tutto analoga: si hanno un numero di pagina fisica


(NPF) e da uno spiazzamento (offset) allinterno della pagina

indirizzo fisico
NPF

offset

34

Traduzione dal virtuale al fisico

indirizzo virtuale
offset

NPV

traduzione

NPF

offset
indirizzo fisico

le pagine virtuali e quelle fisiche hanno la


stessa dimensione, quindi loffset lo stesso
35

Esempio

 Spazio di indirizzamento virtuale:


32
indirizzi da 32 bit  2 indirizzi
 Dimensione di pagina:
12
4K parole (o celle)  2 byte (1 cella occupa 1 byte)
Offset  numero di bit necessari per indirizzare una cella
all'interno di una pagina = log2(dimensione_pagina)=12
 Numero di pagine dello spazio di indirizzamento
32
12
20
virtuale = 2 / 2 = 2 pagine
22
 Spazio di indirizzamento fisico: 4M parole (o celle)  2
indirizzi
 Numero di pagine dello spazio di
22
12
10
indirizzamento fisico = 2 / 2 = 2 pagine

36

Esempio (segue)

indirizzo virtuale
offset

NPV
20bit

12bit

10bit

12bit

NPF

offset

indirizzo fisico

37

La tabella delle pagine

 E il meccanismo pi semplice per la traduzione da virtuale a


fisico

indirizzo virtuale
NPV = 0
NPV

offset
NPF

0
1
2
3

NPF

offset
indirizzo fisico

C una tabella delle pagine per


ciascun processo
38

Memory Management Unit

 Per accelerare la traduzione da NPV a NPF si ricorre allora


alla MMU
 La MMU una memoria particolarmente veloce (memoria
associativa) dalle dimensioni ridotte, contenente solo le
informazioni sulle pagine pi utilizzate
 Visto che gli NPV e gli NPF si riferiscono alle pagine di un
processo, ogni volta che il processo in esecuzione cambia la
MMU dovrebbe essere tutta riscritta
 Per evitare ci si aggiunge una colonna che dice a quale
processo appartengono le pagine e un registro che dice qual
il processo attualmente in esecuzione

39

Pagine residenti e non

 Durante lesecuzione di un programma solo un certo numero


delle sue pagine virtuali caricato in altrettante pagine
fisiche
 Tali pagine sono dette pagine residenti
 A ogni accesso alla memoria si controlla che allindirizzo
virtuale corrisponda una pagina residente, altrimenti si
produce un interrupt di segnalazione di errore detto pagefault
 Il processo viene sospeso in attesa che la pagina richiesta
venga caricata in memoria, eventualmente scaricando su
disco una pagina gi residente per liberare lo spazio
necessario

40

LA MEMORIA CACHE
Il problema della memoria: costo vs. prestazioni
 Obiettivo:
fornire agli utenti una memoria grande e veloce
fornire al processore i dati alla velocit con cui in
grado di elaborarli
 Problema: Il tasso di crescita nella velocit dei processori
non stato seguito da quello delle memorie
Tempo di accesso alle SRAM: 2 - 25ns al costo di $100 $250 per Mbyte.
Tempo di accesso alle DRAM: 60-120ns al costo di $5 $10 per Mbyte.
Tempo di accesso al disco: da 10 a 20 million ns al costo
di $0.10 - $0.20 per Mbyte.

41

Prestazioni di processori e cache

Prestazioni

1000

CPU

Legge di Moore

100

Divario di prestazioni
Processore-Memoria
(cresce 50% / anno)

10

1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000

DRAM

Proc
60%/anno
(2X/1.5yr)

DRAM
9%/anno
(2X/10yr)

Tempo
42

Soluzione: gerarchia di memoria

CPU

Livelli della
gerarchia di
memoria

Livello 1

Livello 2

Incremento del
tempo di
accesso da
parte della
CPU

Utilizzare diversi
livelli di memoria, con
tecnologie diverse in
modo da ottenere un
buon compromesso
costo/prestazioni

Livello n

Dimensioni della memoria ad ogni livello

43

Livelli della gerarchia di memoria

Capacit
Tempo di accesso
Costo
Registri CPU
h Bytes
<10s ns
Cache
K Bytes
10-100 ns
1-0.1 cents/bit

Registri
Istr. Operandi

Predisposizione
Unit di trasf.
prog./compilatore
1-8 bytes

Cache
Blocchi

Memoria centrale
M Bytes
200ns- 500ns
$.0001-.00001 cents /bit

Memoria

Disco
G Bytes, 10 ms
(10,000,000 ns)
10E-6 10E-5 cents/bit

Disco

Nastro
infinito
sec-min
10E-8 cent/bit

Livello
superiore
+ veloce

Pagine

Files
Nastro

Controllore cache
8-128 bytes

OS
512-4K bytes

utente
Mbytes

+ grande
Livello
inferiore
44

Localit
Localit

 E la propriet fondamentale dei programmi che


rende possibile sfruttare lorganizzazione
gerarchica della memoria per incrementarne le
prestazioni
 Localit: in ogni istante di tempo un programma
accede a una parte relativamente piccola del suo
spazio di indirizzamento
 Esistono due diversi tipi di localit: temporale e

spaziale

45

Il principio di localit
localit
 Localit temporale: se un dato viene referenziato in un
dato istante, probabile che lo stesso dato venga
nuovamente richiesto entro breve
 Localit Spaziale: Se un dato viene utilizzato in un dato
istante, probabile che dati posizionati in celle di memoria
adiacenti vengano anchessi richiesti entro breve
 Negli ultimi 15 anni, le tecniche di miglioramento delle
prestazioni nellhardware si sono basate sul principio di
localit

46

Gerarchia di memoria

 Si considerino solo due livelli di gerarchia:


 Il processore richiede un dato al sistema di memoria:

La richiesta viene prima inviata al livello di


memoria superiore (pi vicino al processore)
Se il dato non presente nel livello superiore
(fallimento della richiesta) la ricerca viene
effettuata nel livello inferiore

Al Processore

Livello sup.
di memoria

Livello inf
di memoria

blocco X

Dal Processore

blocco Y

47

Gerarchia di memoria:
memoria: definizioni

 Hit (successo): dati presenti in un blocco del


livello superiore (esempio: Blocco X)
Hit Rate (tasso di successo): numero di accessi
a memoria che trovano il dato nel livello
superiore sul numero totale di accessi
Hit Time (tempo di successo): tempo per
accedere al dato nel livello superiore della
gerarchia:
Tempo di accesso alla CACHE + tempo per
determinare successo/fallimento della richiesta

48

Gerarchia di memoria:
memoria: definizioni

 Miss (fallimento): i dati devono essere recuperati


dal livello inferiore della memoria (Blocco Y)
Miss Rate (tasso di fallimento) =
1 - (Hit Rate)
Miss Penalty (tempo di fallimento): tempo per
determinare il MISS + tempo necessario a
sosituire un blocco nel livello superiore + tempo
per trasferire il blocco al processore
tipicamente si ha: Hit Time << Miss Penalty
 Tempo medio di accesso in presenza di memoria
cache: semplicemente la media pesata con le
probabilit
HitTime*HitRate + MissRate*MissPenalty

49

Cache
 Memoria al livello superiore della gerarchia
 Sfruttare il principio di localit dei programmi e tenere in
memoria cache i dati utilizzati pi di recente
 Obiettivo: fornire dati al processore in uno o due cicli di
clock
 Memoria cache: veloce nei tempi di accesso ma di
dimensioni ridotte

50

Cache e principio di localit


localit

 Le memorie cache sfruttano il principio di localit


spaziale trasferendo dal livello inferiore della
gerarchia pi dati di quanti non ne siano stati
strettamente richiesti (blocco o linea di cache)
 La localit temporale viene sfruttata nella scelta
del blocco da sostituire nella gestione di un
fallimento (es: sostituire il blocco a cui si fatto
accesso meno di recente)

51