You are on page 1of 43

Il Sistema Operativo

Introduzione
Gestione dei processi
Gestione della memoria (cenni)
Il sistema Operativo

q Il sistema operativo (SO) è uno strato software che nasconde


agli utenti i dettagli dell’architettura hardware del calcolatore

q Fornisce diverse funzionalità ad alto livello che facilitano


l’accesso alle risorse del calcolatore

q Supporta l’esecuzione 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

2
Tipi di Sistema Operativo

q 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, il sistema operativo di uno
smartphone
Multiutente (e multiprogrammato)
• Consente l’utilizzo contemporaneo da parte di più utenti
• E’ inerentemente multiprogrammato
• Esempi: Linux, Mac OS X, Windows 8

3
Architettura del sistema operativo

q Il SO è tipicamente organizzato a
strati
Programmi utente
q Ciascun strato costituisce
una macchina virtuale che gestisce Interprete comandi
una risorsa del calcolatore
q Le principali funzionalità offerte File system
sono elencate a destra
q Le prime tre funzionalità sono
Gestione delle periferiche
indispensabili per il funzionamento
del sistema e pertanto
costituiscono il nucleo del SO Gestione della memoria
(Kernel)
Gestione dei processi

Macchina fisica

Kernel
4
Gestione dei processi

Gestione dei processi

Macchina fisica

q Il SO multiprogrammato si occupa di gestire l’esecuzione


concorrente di più programmi utente
q La CPU del calcolatore (o le CPU nei sistemi
multiprocessore) deve essere distribuita in maniera
opportuna fra i programmi da eseguire
q Il gestore dei processi mette a disposizione di ogni
programma in esecuzione una macchina virtuale che ne
consente l’esecuzione come se la CPU del calcolatore fosse
interamente dedicata a esso

5
Gestione della memoria

q La gestione concorrente di molti programmi applicativi


comporta la presenza di molti programmi in memoria
centrale
q Il SO offre a ogni programma applicativo la visione di una
memoria virtuale, che può avere dimensioni maggiori di
quella fisica
q Per gestire la memoria virtuale il SO dispone di diversi
meccanismi (descritti più avanti):
Rilocazione
Paginazione Gestione della memoria

Segmentazione
Gestione dei processi

Macchina fisica

6
Gestione delle periferiche

q Sono meccanismi software a cui è affidato il compito di


trasferire dati da e verso le periferiche
q 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)

Gestione delle periferiche

Gestione della memoria

Gestione dei processi

Macchina fisica

7
Gestione del file system

q 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
q Gestione dei file indipendente dalle caratteristiche fisiche
della memoria di massa
q I file vengono inclusi
all’interno di directory File system
(o cartelle, o cataloghi)
In genere, le directory sono Gestione delle periferiche
organizzate ad albero
Gestione della memoria

Gestione dei processi

Macchina fisica
8
La struttura ad albero

9
Organizzazione dei file

q A ciascun utente è normalmente associata una directory


specifica, detta home directory
q Il livello di protezione di un file indica quali operazioni
possono essere eseguite da ciascun utente
q Ciascun file ha un pathname (o nome completo) che include
l’intero cammino dalla radice dell’albero
q Il contesto di un utente all’interno del file system è la
directory in cui correntemente si trova

10
Gestione dell’interfaccia utente

q Il SO fornisce un interprete dei comandi inseriti dall’utente


attraverso la tastiera o il mouse
q L’interfaccia utente può essere
Testuale (esempio: DOS)
Grafica (esempio: Windows)
q Consente l’inserimento di Programmi utente

diversi comandi: Interprete comandi


Esecuzione di programmi
applicativi File system

Operazioni sulle periferiche


Configurazione dei servizi Gestione delle periferiche

del SO
Operazioni sul file system Gestione della memoria

(creazione, rimozione, copia,


ricerca, ecc.) Gestione dei processi

Macchina fisica
11
PROCESSI E MACCHINE
VIRTUALI

12
Che cosa è un processo per il SO?

q Processo ≠ programma !
q Processo = esecuzione di un programma. Composto
da:
codice eseguibile (il programma stesso)
dati
q 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

13
Il sistema operativo e le macchine virtuali

q Il sistema operativo può gestire più processi


simultaneamente
q Rende quindi visibile ad ogni processo una macchina virtuale
ad esso interamente dedicata e quindi con risorse proprie
nella figura OD = other devices (altri dispositivi)

CPU B RAM B HD B CPU C RAM C HD C


proc. B

proc. 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

proc. D
proc. A

OD A Rete A I/O A OD D Rete D I/O D

14
Il sistema operativo e la macchina reale

Gestore  dei  processi Gestore  della  memoria Gestore  delle  periferiche

Utilizzo  della  CPU   Suddivisione  della   Utilizzo  delle  periferiche


a  rotazione memoria  in  blocchi a  rotazione
RAM
CPU Periferiche
A
A,  B,  C,  D B
C A,  B,  C,  D
D

bus

15
Il sistema operativo e la macchina reale

Gestore  dei  processi Gestore  della  memoria Gestore  delle  periferiche

Utilizzo  della  CPU   Suddivisione  della   Utilizzo  delle  periferiche


a  rotazione memoria  in  blocchi a  rotazione
RAM
CPU Periferiche
A
A,  B,  C,  D B
C A,  B,  C,  D
D

bus

16
Lo stato di un processo

q Lo stato del processo può essere distinto fra stato interno e


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

17
Stato di un processo (1)

Inizio esecuzione
q Pronto: può andare in
- Fine quanto di tempo Processo
esecuzione, se il
- Interruzione esterna pronto
gestore dei processi lo
decide
q In esecuzione: Primo processo
assegnato al processore pronto
ed eseguito da esso Processo in Evento esterno
q In attesa: attende il esecuzione atteso
verificarsi di un evento
esterno per andare in
Interruzione interna
stato di pronto
Processo in
- Fine esecuzione attesa
- Abort per errore

18
Stato di un processo (2)

Inizio esecuzione
q I processi appena creati P2
sono messi in stato di P1
- Fine quanto di tempo Processo
pronto - Interruzione esterna pronto
q Il gestore dei processi
decide quale processo
pronto mettere in stato di Primo processo
esecuzione pronto
q Il gestore assegna il Processo in
processore a un processo Evento esterno
per un quanto di tempo esecuzione atteso
Coda dei processi
pronti Interruzione interna
Round-robin
Processo in
Priorità dei processi
- Fine esecuzione attesa
- Abort per errore

19
Stato di un processo (3)

Inizio esecuzione
q Il processo in esecuzione P2
passa in stato di attesa se - Fine quanto di tempo Processo
richiede operazioni di I/O - Interruzione esterna pronto
(interruzione interna)
q Corrisponde alla Primo processo
esecuzione dell’istruzione pronto
“chiamata a supervisore” P1
(SuperVisor Call, SVC) Processo in Evento esterno
esecuzione atteso

Interruzione interna

Processo in
- Fine esecuzione attesa
- Abort per errore

20
Stato di un processo (4)

Inizio esecuzione
q Cambiamento di P2
contesto: - Fine quanto di tempo Processo
Salvare il contesto di - Interruzione esterna pronto
P1
nel suo descrittore di Primo processo
processo pronto
q Il processore è ora
libero, un altro processo Processo in Evento esterno
passerà in esecuzione esecuzione atteso

Interruzione interna
P1
Processo in
- Fine esecuzione attesa
- Abort per errore

21
Stati di un processo (5)

Inizio esecuzione
q Quando l’operazione di I/O
è finita viene generata - Fine quanto di tempo
un’interruzione esterna Processo
- Interruzione esterna pronto
q Il processo in esecuzione
viene interrotto
q Il gestore dei processi Primo processo
esegue il gestore delle pronto
P2
interruzioni che esegue le
azioni opportune
Processo in Evento esterno
esecuzione atteso
q P1 può tornare pronto
q Il gestore dei processi
sceglie quale Interruzione interna
processo mandare in P1
esecuzione Processo in
- Fine esecuzione attesa
- Abort per errore

22
Stato di un processo (6)

Inizio esecuzione
q Pre-emption: quando il P2
quanto di tempo è - Fine quanto di tempo Processo
scaduto, il gestore dei - Interruzione esterna pronto
processi interrompe il
processo in esecuzione
Primo processo
q Si cerca di garantire un pronto
uso equo della CPU a P1
tutti i processi Processo in Evento esterno
esecuzione atteso

Interruzione interna

Processo in
- Fine esecuzione attesa
- Abort per errore

23
La gestione del quanto di tempo

q Il quanto di tempo è gestito da una particolare interruzione,


generata dall’orologio di sistema:
a una frequenza definita, il dispositivo che realizza
l’orologio di sistema genera un’interruzione. 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 il
processo prosegue nell’esecuzione, a meno che il gestore
delle interruzioni non ne abbia altre da gestire
se invece il quanto di tempo è scaduto viene invocata una
particolare funzione del gestore dei processi (preempt)
che cambia lo stato del processo da esecuzione a pronto,
salva il contesto del processo e attiva una particolare
funzione (change) che esegue una commutazione di
contesto e manda in esecuzione un processo pronto.

24
I processi e il sistema operativo

q Il sistema operativo è garante che i conflitti tra i processi


siano controllati e gestiti correttamente;
q Il sistema operativo viene eseguito in modalità privilegiata
(kernel mode o supervisor), così da poter controllare
gli altri processi eseguiti in modalità user;
q Anche il sistema operativo è implementato tramite processi.

25
Chiamate al supervisor

q 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
q Perché usare la modalità privilegiata (supervisor)?
Le operazioni di I/O sono operazioni riservate:
• un processo A non deve poter andare a scrivere messaggi su
un terminale non associato allo stesso processo A;
• un processo A non deve poter leggere caratteri immessi da
un 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 quest’ultimo;
• 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;

26
Il sistema operativo e la macchina reale

Gestore  dei  processi Gestore  della  memoria Gestore  delle  periferiche

Utilizzo  della  CPU   Suddivisione  della   Utilizzo  delle  periferiche


a  rotazione memoria  in  blocchi a  rotazione
RAM
CPU Periferiche
A
A,  B,  C,  D B
C A,  B,  C,  D
D

bus

27
Il S.O. e la gestione della memoria

Il modello della memoria

q E’ un modello lineare MEMORIA


q La memoria è una 0
sequenza di celle 1
numerate da 0 fino a un
2
valore massimo M
q Il numero che identifica
ogni cella è detto indirizzo
q La dimensione della cella
dipende dal tipo di
calcolatore

M
28
Spazio di indirizzamento

q Lo spazio di indirizzamento è il numero massimo


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

29
Memoria virtuale vs. fisica

q Gli indirizzi contenuti in un programma eseguibile sono


indirizzi virtuali e fanno riferimento alla memoria virtuale

q La memoria effettivamente presente nel calcolatore è la


memoria fisica e i suoi indirizzi sono detti indirizzi fisici
q La memoria virtuale e quella fisica non coincidono:
La memoria virtuale di ogni processo parte dall’indirizzo
0, il primo indirizzo della memoria fisica assegnata a un
processo dipende dallo stato della macchina
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)
la memoria fisica può essere insufficiente a contenere la
memoria virtuale di tutti processi

30
Rilocazione

q Rilocazione: meccanismo di trasformazione da indirizzo


virtuale (detto anche rilocabile) a fisico
Statica: i nuovi indirizzi vengono calcolati al caricamento
del programma in memoria
Dinamica: ogni indirizzo viene calcolato al momento
durante l’esecuzione, come mostrato qui sotto

Registro base

Indirizzo
+ calcolato
(fisico)

Indirizzo
virtuale
(rilocabile)
31
Esempio di rilocazione dinamica per l’accesso alle
istruzioni di un programma

MEMORIA

PROCESSORE
Registro  base
999
1000 0
RB 1001 1
1000 processo  in  
1002 2 esecuzione
+ 1003 3
1004
PC
3

indirizzi  fisici indirizzi  virtuali

32
Problema della frammentazione

MEMORIA MEMORIA

Sistema  Operativo Sistema  Operativo


Processo  S

Processo  P Processo  P
Processo  S  (1)
Processo  Q Processo  Q
Processo  S  (2)
Processo  R Processo  R

Per evitare la frammentazione della memoria


(spazi vuoti in memoria inutilizzabili) è utile
allocare i programmi suddividendoli in pezzi
33
Paginazione

q Si rinuncia ad avere una zona contigua della


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

34
MEMORIA MEMORIA
VIRTUALE  P FISICA

MEMORIA
VIRTUALE  Q
dimensione  
pagina

35
Struttura degli indirizzi virtuali

q Un indirizzo virtuale è costituito da un numero di pagina


virtuale (NPV) e da uno spiazzamento (offset) all’interno
della pagina

indirizzo  virtuale
NPV offset

36
Struttura degli indirizzi fisici

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


(NPF) e da uno spiazzamento (offset) all’interno della pagina

indirizzo  fisico
NPF offset

37
Traduzione dal virtuale al fisico

indirizzo  virtuale
NPV offset

traduzione

NPF offset
indirizzo  fisico

le  pagine  virtuali  e  quelle  fisiche  hanno  la  


stessa  dimensione,  quindi  l’offset  è  lo  
stesso

38
Esempio

q Supponiamo di avere una macchina organizzata come segue:


Spazio di indirizzamento virtuale:
32
indirizzi da 32 bit ð 2 indirizzi
Dimensione di pagina:
12
4K parole (o celle) ð 2 celle (o byte se 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

39
Esempio (segue)

indirizzo  virtuale
NPV offset

20bit 12bit

10bit 12bit

NPF offset
indirizzo  fisico

40
La tabella delle pagine

q E’ il meccanismo più semplice per la traduzione da virtuale a


fisico

indirizzo  virtuale
NPV  =  0 offset

NPV NPF

2 NPF offset
3 indirizzo  fisico

C’è  una  tabella  delle  pagine  per  


ciascun  processo

41
Memory Management Unit

q Per accelerare la traduzione da NPV a NPF si ricorre allora


alla MMU
q La MMU è una memoria particolarmente veloce (memoria
associativa) dalle dimensioni ridotte, contenente le
informazioni per la traduzione da NPV a NPF delle pagine più
utilizzate
q 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
q 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

42
Pagine residenti in memoria e non

q Durante l’esecuzione di un programma solo un certo numero


delle sue pagine virtuali è caricato in altrettante pagine
fisiche
q Tali pagine sono dette pagine residenti
q A ogni accesso alla memoria si controlla che all’indirizzo
virtuale corrisponda una pagina residente, altrimenti si
produce un interrupt di segnalazione di errore detto page-
fault
q 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

43

You might also like