Sistema Operativo
Il software può essere diviso in due grandi classi:
i programmi di sistema, che gestiscono le funzionalità del
sistema di calcolo
i programmi applicativi, che risolvono i problemi degli utenti
L’insieme dei programmi di sistema viene comunemente
identificato con il nome di Sistema Operativo (SO)
Definizione
Un sistema operativo è un programma che controlla
l’esecuzione dei programmi applicativi ed agisce come
interfaccia fra le applicazioni e l’hardware del calcolatore
1
Scopo del sistema operativo
Gestione EFFICIENTE delle risorse del sistema di elaborazione
Creazione di un’interfaccia AGEVOLE tra l’uomo e la macchina
2
Il SO come macchina estesa – 1
Visione a strati delle componenti hardware/software che
compongo un elaboratore
3
Il SO come macchina estesa – 2
Il SO può essere inteso come uno strumento che virtualizza
le caratteristiche dell’hardware, offrendo all’utente la visione
di una macchina astratta più potente e più semplice da
utilizzare di quella fisicamente disponibile
In questa visione, un SO…
…nasconde a programmatori/utenti i dettagli dell’hardware e
fornisce un’interfaccia conveniente e facile da usare
…agisce come intermediario tra programmatore/utente e
hardware
Il S.O. fornisce quindi all’utente:
Indipendenza dall’hardware
Comodità d’uso
Programmabilità a diversi livelli
4
Il sistema operativo ̶ 1
Il sistema operativo è uno strato
software che opera direttamente
sull’hardware...
...isola gli utenti dall’architettura
sottostante e fornisce un insieme di
funzionalità di alto livello
...permette
lo
svolgimento
di
operazioni quali la copia di un file o
l’esecuzione di un programma; opera
le azioni necessarie a caricare i
programmi in memoria centrale,
eseguirli, leggere e/o scrivere dati
da/su memoria di massa e periferiche
Il SO rende totalmente disponibile all’utente l’hardware del
calcolatore
5
Il sistema operativo ̶ 2
Il SO può essere...
...monoutente (tipicamente nei PC), se l’intero sistema hw/sw
è dedicato ad un singolo utente
...multiutente, quando diversi utenti condividono lo stesso
sistema hw/sw; il SO nasconde a ciascun utente la presenza
degli altri, dando l’impressione che il sistema (unità di
elaborazione, memoria, periferiche, etc.) gli sia interamente
dedicato
Il SO è un insieme di programmi molto complesso ed
articolato, soprattutto in contesto multiutente
Per facilitarne il progetto, ed isolarne le varie componenti, il
SO è organizzato per strati funzionali, con una struttura
cosiddetta “a cipolla”
6
Il sistema operativo ̶ 3
at io soft wa
plic
Ciascuno strato funzionale realizza
re
p
A
una macchina virtuale, che maschera
ms softwa
st e
le caratteristiche della macchina
hardware e offre all’utente un
Hardware
insieme di funzionalità
Struttura modulare: ciascun modulo
esporta funzionalità verso l’esterno e
mantiene al suo interno i propri
meccanismi implementativi
Ogni macchina virtuale “sembra” più potente della
corrispondente macchina fisica, perché offre ai suoi utenti
l’illusione di una macchina dedicata
re
Sy
ns
7
Sistema operativo
Le richieste dell'utente al SO, fatte
digitando dei comandi nelle
interfacce a carattere o selezionando
oggetti con il mouse nelle interfacce
grafiche (Graphic User Interface),
sono intercettate dall'interprete dei
comandi (shell), il quale attiva i
moduli programma che agiscono nei
componenti del nucleo (kernel).
Questi attivano i dispositivi
hardware quali il processore, la
memoria, i controller di I/O, ecc.,
che svolgono la richiesta dell'utente.
Sistema operativo
E’ uno strato software che
opera direttamente
sull’hardware
Isola gli utenti dai dettagli
dell’hardware
E’ organizzato a strati:
 Architettura a buccia di
cipolla
 Ogni strato costituisce
una macchina virtuale
Programmi utente
Interprete comandi
attivazione programmi d’utente o di sistema
File system
controllo e gestione degli accessi a file
Gestione delle periferiche
gestione di ingresso/uscita da periferica
Gestione della memoria
allocazione e gestione della memoria
Gestione dei processi (nucleo)
gestione dei processi e delle interruzioni
Macchina fisica
Kernel
Gestore dei processi
È responsabile dell’esecuzione dei programmi da parte
dell’unità di elaborazione
In caso di SO multiutente, deve garantire l’esecuzione
concorrente di processi multipli, decidendo a quale di essi
assegnare l’accesso e l’uso dell’unità di elaborazione
Gestisce gli interrupt provenienti dalle periferiche
Lo strato del gestore dei processi offre agli strati superiori
una macchina virtuale in cui ciascun programma opera come
se avesse a disposizione un’unità di elaborazione dedicata
10
Gestore della memoria
Alloca la memoria e la ripartisce fra i vari programmi che la
richiedono
Nei SO multiutente, è opportuno che molti programmi siano
contemporaneamente presenti in memoria centrale, per
ottenere un’esecuzione “simultanea”
Lo strato del gestore di memoria offre agli strati superiori
una macchina virtuale in cui ciascun programma opera come
se avesse a disposizione una memoria dedicata
11
Driver di dispositivo
Sono responsabili delle operazioni di ingresso/uscita che
coinvolgono le periferiche
Ciascun driver è un modulo software dedicato a “guidare”
una periferica specifica: ne conosce (e ne occulta) le
caratteristiche hardware
Lo strato del gestore delle periferiche offre all’utente una
versione astratta delle periferiche hardware; l’utente ha a
disposizione un insieme di procedure standard di alto livello
per leggere/scrivere da/su periferiche, che “percepisce” come
dedicate
12
File system
È responsabile della gestione dei file in memoria di massa;
struttura i dati in file e li organizza in directory (cartelle nel
linguaggio di MS Windows)
Fornisce all’utente un insieme di funzioni di alto livello per
operare su file e directory, mascherando le operazioni
realmente effettuate per allocare la memoria e per accedervi
in lettura/scrittura
Tramite il file system, ciascun utente può organizzarsi la
propria area di memoria e garantirne la protezione da
accessi esterni
Consente la condivisione dei file
13
Interprete dei comandi
Consente all’utente di attivare i programmi
Accede al programma, residente su memoria di massa, tramite
il file system
Alloca memoria e vi carica il programma (tramite il gestore della
memoria)
Attiva il processo (sfruttando le funzionalità del nucleo)
Sfrutta l’organizzazione a strati del SO e può richiedere
l’esecuzione di qualsiasi funzione implementata negli strati
sottostanti
14
Ancora sul sistema operativo...
I primi tre strati del SO, dedicati alla gestione dei processi,
della memoria e delle periferiche, ne costituiscono il nucleo,
o kernel
L’obiettivo del SO consiste nell’ottimizzare le prestazioni del
sistema informatico, determinando le politiche migliori di
gestione delle risorse sotto il suo controllo
Nei sistemi multiutente, ciascun utente risente della
presenza degli altri in misura crescente con il carico
complessivo del sistema, ovvero, al crescere del numero
delle richieste di elaborazione, il sistema può diventare
sovraccarico e fornire prestazioni percepibilmente scadenti
15
Gestione dei processi e dei
processori
Gestione dei processi:
gestione dell’avvicendamento dei processi in esecuzione sul
processore (o sui processori).
Gestione dei processori:
gestione dell’assegnazione dei processori ai processi.
16
S.O. multi-tasking
Obiettivo: sfruttare l’attesa per il compimento di
operazioni di I/O (anche l’80-90% del tempo di
elaborazione)
Mentre il processo i attende per un’op. di I/O viene
mandato in esecuzione il processo j.
17
Tempo
Elapsed time: tempo trascorso tra l’inizio
della vita del processo e la sua terminazione
CPU time: tempo in cui il processo è stato
realmente in esecuzione
18
Obiettivi
Massimizzare l’uso della CPU.
Massimizzare il numero di processi eseguiti
nell’unità di tempo.
Minimizzare il tempo di risposta.
19
Processi Concorrenti
Nei sistemi attuali sono in esecuzione più processi
‘contemporaneamente’.
La CPU esegue comunque una sola istruzione per volta.
Il S.O. gestisce l’avvicendamento dei processi in
esecuzione: assegna la CPU ai vari processi istante dopo
istante.
Scheduler: parte del S.O. che si occupa della gestione dei
processi e dei processori
20
La gestione dei processi  1
Processo — un programma in esecuzione
Il processo è un oggetto dinamico, che evolve nel tempo, in
contrapposizione al programma, un oggetto statico ed
invariante nel tempo
L’unità di elaborazione che esegue i processi prende il nome
di processore
La corrispondenza tra programma e processo non è
necessariamente biunivoca: uno stesso programma
eseguibile può essere associato a più processi, ciascuno dei
quali svolge uno dei compiti richiesti dal programma
21
La gestione dei processi – 2
Il gestore dei processi è il modulo che si occupa del
controllo, della sincronizzazione, dell’interruzione e della
riattivazione dei programmi in esecuzione
Il programma che si occupa della distribuzione del
tempo di CPU tra i vari processi attivi, decidendone
l’avvicendamento, è chiamato scheduler
Nel caso di sistemi multiprocessore, lo scheduler si
occupa anche di gestire la cooperazione tra le diverse
CPU presenti nel sistema
22
Stato dei processi  1
Mentre viene eseguito, un processo cambia stato:
New: Il processo viene creato
Running: Il processo viene eseguito
Waiting: Il processo è in attesa di un evento
Ready: Il processo è in attesa di essere assegnato al
processore
Terminated: Il processo ha terminato la propria esecuzione
23
Stato dei processi  2
Nell’ipotesi di un unico processore, uno solo dei processi può
essere in esecuzione ad un certo istante, cioè in stato di
running
Gli altri processi sono pronti (ready) o in attesa (waiting)
I processi pronti possono venir eseguiti immediatamente: sarà
lo scheduler della CPU, in base alla politica di gestione dei
processi, a decidere quale dei processi pronti sarà il prossimo
ad accedere alla CPU
I processi in attesa attendono il verificarsi di un evento esterno
(per esempio l’immissione di dati tramite un dispositivo di I/O)
per passare in stato di pronto
24
Il ciclo di vita dei processi  1
Ogni nuovo processo entra nel
sistema accedendo alla ready
queue (new  ready), e va in
esecuzione (ready  running)
quando viene selezionato dallo
scheduler
Un processo attivo può essere
arrestato per un interrupt esterno
(running  ready)
Un processo può anche essere sospeso  preempted  dal nucleo
(running  ready), dopo un dato intervallo temporale, per
garantire a tutti i processi un uso paritario della CPU: lo scheduler
sceglie quale fra i processi pronti mandare in esecuzione
25
Il ciclo di vita dei processi  2
Anche un’interruzione interna
può causare l’arresto di un
processo (running  waiting)
Viceversa, il verificarsi dell’evento
atteso da un processo fa sì che
esso passi dallo stato di attesa
allo stato di pronto (waiting 
ready)
Infine, un processo in esecuzione può terminare regolarmente, o
essere interrotto e terminato forzatamente dal nucleo (aborted ) per
il verificarsi di un errore
Ugualmente, lo scheduler seleziona un nuovo processo dalla ready
queue
26
Cambiamento di contesto
Contesto: insieme delle informazioni che caratterizzano lo
stato di un processo
Se il processo è fisicamente in esecuzione parte del contesto si
trova nei registri della CPU (Program Counter, registri utente)
Se il processo non è in esecuzione il contesto è in memoria.
Cambiamento di contesto (context switch): operazione che
avviene quando il sistema operativo decide di mandare in
esecuzione un altro processo
Il sistema operativo deve salvare tutte le informazioni
necessarie a ripristinare esattamente lo stato del processo in
esecuzione nel futuro.
Context Switch della CPU da processo a processo
Dispatcher
Divide il tempo in quanti (< 50 millisec.)
Da’ un quanto ad ogni processo, uno alla volta
Alla fine del quanto, segnale che passa la CPU ad un altro
processo pronto
Prima di passare al prossimo processo, la CPU esegue il
programma di gestione delle interruzioni
Aggiorna la tabella dei processi (PCB)
 Salva lo stato (registri, celle di M, ...)
 Sceglie un altro processo dalla tabella dei
processi
 ……..

Transizioni tra stati di un processo
In esecuzione
richiesta di I/O
schedulazione
pronti
fine tempo oppure
evento esterno
In attesa
conclusione I/O
Coda ordinata in
attesa della CPU
Insieme in attesa
di eventi
Gestione informazione sui processi
Il S.O. mantiene l’informazione relativa a tutti i processi
attivi (non terminati) nella tabella dei processi (PCB,
Process Control Block) .
Per ogni processo la PCB contiene un certo numero di
informazioni.
La tabella dei processi è in ogni istante caricata
interamente in RAM.
La tabella dei processi (PCB)
Per ogni processo attivo:
PID: Process Identifier
Stato corrente (Execute, Ready, Blocked)
Program Counter
Contenuto dei registri CPU
Priorità
Stato della memoria
Processi I/O e CPU bound
I processi utente si possono sospendere in attesa che un
dispositivo esterno abbia completato un’operazione di I/O,
rispetto alla frequenza con la quale invocano operazioni di l’I/O
si possono definire due tipologie di processi:
 I/O bound: si sospendono frequentemente eseguendo brevi
fasi di elaborazione (burst di CPU) tra un’operazione di I/O e
l’altra. I processi interattivi sono tipicamente I/O bound.
 CPU bound: si sospendono raramente ed eseguono lunghe
fasi (burst di CPU) di elaborazione. I processi non interattivi
sono spesso CPU bound.
La velocizzazione delle CPU tende a rendere più numerosi i casi
di processi I/O bound, in quanto la velocità dei dispositivi non
aumenta allo stesso ritmo.
Processi I/O e CPU bound
CPU bound
I/O bound
Scheduling dei processi
È l’attività mediante la quale il sistema
operativo effettua delle scelte per
ottimizzare l’esecuzione dei processi,
riguardo :
al caricamento in memoria centrale
 all’assegnazione del processore ai processi

Tre livelli di scheduling:



Scheduling a breve termine
 Sceglie tra i processi pronti quello a cui assegnare il processore
 non preemptive scheduling
 preemptive scheduling
(preemption = prelazione)
Scheduling a medio termine (Swapping)
 trasferimento temporaneo in memoria secondaria di processi
- quando la disponibilità di memoria principale è inferiore alla necessità
dei processi esistenti
(= esclusione/reinserimento nell’insieme dei processi schedulabili in coda)
Scheduling a lungo termine
 Sceglie tra i lavori in arrivo quelli da ammettere per la prima volta tra i
processi schedulabili
- controlla il grado di multiprogrammazione per ottimizzarlo
Scheduling nei sistemi Batch
Tre livelli di scheduling
Scheduling
Lo scheduling è la funzionalità che determina, nel caso di più processi
che competano per la CPU, quale tra essi andrà in esecuzione.
La funzionalità che effettua la “messa in esecuzione” è detta scheduler.
La politica (algoritmo) con il quale viene effettuata la scelta è detta
politica di scheduling.
Lo scheduling è una funzione di nucleo che viene attivata ogni volta che
un evento richieda di valutare quale sia il processo “più conveniente” da
mettere in esecuzione.
La politica di scheduling seleziona il processo da mettere in esecuzione
mentre il dispatcher assegna il processo alla CPU.
Il dispatcher esegue la commutazione di contesto (context switch), il
passaggio al modo utente e l’impostazione del PC.
Il tempo utilizzato dal dispatcher per il cambiamento di contesto è
definito overhead.
Criteri di Scheduling
Obiettivi principali degli algoritmi di scheduling:
• Fairness (Equità) - processi della stesso tipo devono avere trattamenti
simili ==> In particolare: evitare l’attesa indefinita
• Balance (Bilanciamento) - tutte le parti del sistema (CPU, dispositivi
…) devono essere utilizate al massimo
• Throughput - massimizzare il numero di job completati in un intervallo
di tempo
• Turnaround time - minimizzare il tempo di permanenza di un job nel
sistema
• Tempo di risposta - minimizzare il tempo di riposta agli eventi
• Proporzionalità - assicurare un tempo di risposta proporzionale alla
complessità dell’azione
Scheduling della CPU
Le politiche di scheduling sono raggruppabili in due grandi
categorie:
Preemptive: l’uso della CPU da parte di un processo può essere
interrotto in un qualsiasi momento, e la risorsa concessa ad
altro processo
Non preemptive: una volta che un processo ha ottenuto l’uso
della CPU, è unico proprietario della risorsa finché non ne
decide il rilascio
40
Politiche di Scheduling della CPU
Roundrobin : la politica di scheduling più semplice, che consiste
nel garantire la rotazione nell’esecuzione dei processi
Lo scheduler assegna la CPU ad un processo per un quanto di
tempo
Quando il quanto di tempo termina, il processo in esecuzione
viene interrotto e ritorna nella ready queue
Per realizzare l’alternanza fra processi, lo scheduler gestisce la
ready queue in modo tale da assegnare il processore al primo
processo in coda che, quando esaurisce il suo quanto, viene posto
alla fine della coda (FIFO)
Alla fine della coda si inseriscono anche i processi che passano
dallo stato di attesa allo stato di pronto
Politica Round Robin
Primo
Primo
Coda Pronti
B
C
D
In Esecuzione
A
A passa in esecuzione
E
Coda Pronti
C
D
E
A
In Esecuzione
B
A esaurisce il quanto di tempo
Scheduling con priorità
Ogni processo ha una priorità
Ogni volta va in esecuzione il processo a priorità più elevata
 Criteri di assegnazione della priorità ??
>> Per esempio: politica Shortest Job First (SJF)
Punti chiave
Priorità statica
==> Possibilità di attesa indefinita per i processi a priorità
più bassa
Priorità dinamica
==> strategia di assegnazione della priorità ?
per esempio: priorità maggiore ai processi I/O bound
Scheduling con priorità
Molte strategie per il calcolo dinamico della priorità:
Priorità crescente nel tempo per i processi che
rimangono in stato di pronto. Obiettivo: impedire
attesa indefinita
 Incremento di priorità quando i processi vengono
riattivati. Obiettivo: tempo di risposta
 Priorità legata alla percentuale f del quanto di tempo
che è stato consumato l’ultima volta che il processo è
andato in esecuzione (es. proporzionale a 1/ f ).
Obiettivo: favorire processi I/O bound

Politica SJF
Scheduling con politica Shortest Job First (SJF)
==> privilegia il job più corto
Ipotesi:
 l’insieme dei job da schedulare è noto all’inizio
 si conosce il tempo di esecuzione T di ogni job
Politica:
 i job sono schedulati in ordine di T crescente
 non c’è prerilascio
Proprietà: SJF minimizza il tempo medio di turnaround
Scheduling della CPU
Esempio: In un sistema che comporta problemi di sicurezza,
alcuni eventi (come la segnalazione di guasti ai motori di un
aereo) sono molto più importanti di altri (come la
segnalazione di difetti al sistema di intrattenimento)
Nella maggior parte delle applicazioni di elaborazione dati
viene attribuita una priorità bassa ai cosiddetti processi
batch, che non necessitano interazione con l’utente
Problema: Starvation (blocco indefinito), i processi a bassa
priorità potrebbero non venir mai eseguiti
Soluzione: Aging (invecchiamento), aumento graduale della
priorità dei processi che si trovano in attesa nel sistema da
lungo tempo
46
Interruzioni interne  1
Nel corso della sua evoluzione, il processo in esecuzione può
richiedere lo svolgimento di un’operazione di ingresso/uscita
che coinvolge una periferica
L’esecuzione del processo si interrompe ed il kernel del SO
diviene attivo (si esegue un processo di sistema)
La sospensione del processo in esecuzione si dice interruzione
interna: il processo passa dallo stato ready allo stato waiting
L’esigenza di sospendere il processo all’atto di una richiesta di
un servizio di I/O risponde ad una logica di buona
amministrazione delle risorse
47
Interruzioni interne  2
E’ notevole la differenza fra i tempi di esecuzione delle
istruzioni in memoria centrale (dell’ordine delle decine di
nanosecondi) ed i tempi di esecuzione delle istruzioni di I/O
(qualche millisecondo per accesso alla memoria di massa,
qualche secondo per comandi da terminale)
La sospensione avviene in modo tale che il processo possa
riprendere la propria attività, dopo l’interruzione,
esattamente dallo stesso punto e con gli stessi dati
Occorre salvare il contesto, cioè copiare il contenuto dei registri
del processore in una zona particolare di memoria, il descrittore
del processo
Prima di riprendere l’esecuzione del processo interrotto, occorre
eseguire l’operazione inversa, cioè ricopiare il contenuto del
descrittore nei registri del processore, per ripristinare il
contesto
48
Interruzioni interne  3
Dopo il salvataggio del contesto del processo interrotto, lo
scheduler della CPU seleziona uno dei processi pronti e gli
alloca il processore
Molti processi possono essere nello stato di pronto allo stesso
tempo
Il contesto del processo selezionato, in base alla politica di
scheduling, viene ripristinato, e la sua esecuzione può
proseguire dall’istruzione successiva a quella che ne aveva
provocato l’interruzione (quella puntata dal registro program
counter )
L’operazione complessiva di interruzione di un processo,
salvataggio del contesto, scelta di un nuovo processo dalla
ready queue (coda dei processi pronti), e ripristino del suo
contesto, prende il nome di cambiamento di contesto o
context switch
49
Interruzioni esterne  1
Le interruzioni esterne sono eventi asincroni, cioè non
regolati dal clock del processore: le operazioni
dell’elaboratore si coordinano con il mondo esterno
attraverso le periferiche
Quando si verifica un’interruzione esterna, il kernel...
...salva il contesto del processo attivo, che passa dallo stato di
esecuzione allo stato di pronto
...richiama un proprio modulo, il gestore delle interruzioni, che
esegue le operazioni necessarie per far fronte alla particolare
interruzione
50
Interruzioni esterne  2
Esempio: Se l’interruzione segnala la presenza di dati in
ingresso da tastiera, a fronte di un’operazione di lettura
richiesta dal processo P1, il gestore delle interruzioni...
...trasferisce i dati dal registro della periferica in memoria
centrale
...provvede a modificare lo stato del processo P1, da waiting a
ready
Inoltre, al termine della gestione dell’interruzione, lo scheduler
seleziona uno dei processi pronti (non necessariamente quello
sospeso dall’interruzione appena servita) e lo manda in
esecuzione
51
Sincronizzazione dei processi  1
I processi devono sincronizzarsi, devono cioè coordinare le
loro attività
La modalità più semplice di coordinamento consiste
nell’esecuzione sequenziale : un processo termina invocando
l’attivazione di un nuovo processo
Tempo di utilizzo della CPU
Tempo di attesa di eventi
esterni
C
B
A
t
T
52
Sincronizzazione dei processi  2
Tecniche di sincronizzazione più complesse nascono
dall’esigenza dei processi di competere per alcune risorse, o
di cooperare fra loro
Esempio: Un processo che richiede un servizio di I/O può
essere interrotto e la CPU passata a un altro programma
Tempo di utilizzo della CPU
C
Tempo di attesa di eventi
esterni
B
A
t
Tmulti-tasking Tmono-tasking
53
Sincronizzazione dei processi  3
Un esempio di competizione si verifica quando due processi vogliono
accedere simultaneamente ad una risorsa, detta risorsa critica, sulla
quale può operare un solo processo alla volta; nel caso di richieste
contemporanee, uno solo dei processi richiedenti accede alla risorsa
critica, mentre l’altro deve attendere il rilascio della risorsa per
potervi accedere a sua volta
Un esempio di coordinazione si ha quando due processi sono tali per
cui ciascuno di essi ha bisogno dell’altro per poter evolvere; nel
classico problema del produttore/consumatore, il primo processo
produce dati (per esempio, acquisendoli da una periferica) mentre il
secondo li utilizza (per esempio, svolgendo su di essi delle
elaborazioni)
54
Sincronizzazione dei processi  4
La sincronizzazione dei processi, necessaria sia nel caso di
competizione sia nel caso di cooperazione, avviene tramite
due meccanismi fondamentali...
...l’uso di variabili condivise (dette semafori), per l’accesso a
parti critiche di codice
...e la comunicazione esplicita fra processi (mediante scambio
di messaggi)
Esempio:
L’accesso concorrente a dati condivisi può causare incoerenza
nei dati
Per garantire la coerenza dei dati occorrono meccanismi che
assicurano l’esecuzione ordinata dei processi cooperanti
55
Sincronizzazione dei processi  5
Problema della sezione critica:
n processi competono per utilizzare dati condivisi; ciascun
processo è costituito da un segmento di codice, detto sezione
critica, in cui accede ai dati e li modifica
Ipotesi:
Assicurarsi che, quando un processo esegue la sua sezione critica,
a nessun altro processo sia concesso eseguire la propria
L’esecuzione di sezioni critiche da parte di processi cooperanti è
mutuamente esclusiva nel tempo
Soluzione: progettare un protocollo di cooperazione fra processi
Ogni processo deve chiedere il permesso di accesso alla sezione
critica, tramite una entry section (il semaforo diviene “rosso” ad
opera del processo che trova il “verde” e si accinge ad accedere ai
dati)
La sezione critica è seguita da una exit section (il semaforo “rosso”
diviene “verde” ad opera del processo che ha terminato di utilizzare
i dati condivisi); il rimanente codice è non critico
56
Gestione della memoria
RAM: volatile, costosa e quindi di dimensione limitata 
contiene i Programmi + Dati (Modello di Von Neumann)
Processi della CPU in esecuzione in un certo intervallo di tempo
utilizzando i registri
Programma + Dati contenuti nella RAM
Il sistema operativo deve gestire lo spostamento di
Progr. +
Dati tra RAM e CPU .
57
Gerarchia di memoria
Si cerca di raggiungere un compromesso
sfruttando la gerarchia di memoria
Registri
Cache
Memoria Principale
Dischi Magnetici
Dischi Ottici
Nastri Magnetici
58
Gerarchia di memoria
Dispositivo di
memoria
Velocità di
accesso
Capacità
Costo
Volatilità
Registri
nanosecondi
Kbyte
Molto alto
alta
Cache
decine di ns
Mbyte
€100/Mby
te
alta
Memoria
principale
50-70 ns
centinaia
Mbyte
€1/Mbyte
alta
Dischi magnetici
5-15 ms
decine
Gbyte
€10/Gbyt
e
bassa
Dischi ottici
100 ms
centinaia
Mbyte
€5/Gbyte
bassa
Nastri
Fino a 1 s
Fino a 1
Tbyte
€1/Gbyte
bassa
59
Gestore della memoria
La parte del SO che gestisce la memoria è il Gestore di
Memoria i cui compiti sono:
 tenere traccia di quali parti di memoria sono in uso e
quali non lo sono
 allocare la memoria ai processi che la necessitano e
deallocarla
 gestire lo swapping tra la memoria principale e il disco
quando la memoria principale non è sufficientemente
grande per mantenere tutti i processi
 in definitiva cercare di sfruttare al meglio la gerarchia di
memoria
60
Gestione della memoria centrale
La memoria centrale…
…è un “array” di byte indirizzabili singolarmente
…è un deposito di dati facilmente accessibile e condiviso tra la
CPU ed i dispositivi di I/O
Il SO è responsabile delle seguenti attività riguardanti la
gestione della memoria principale:
Tenere traccia di quali parti della memoria sono usate e da chi
Decidere quali processi caricare quando diventa disponibile
spazio in memoria
Allocare e deallocare lo spazio di memoria quando necessario
61
Gestione della memoria centrale
Premessa indispensabile per la gestione concorrente di molti
processi è la presenza di molti programmi in memoria
centrale (multiprogrammazione)
La memoria centrale assume un ruolo simile all’unità di
elaborazione: è una risorsa unica, spesso scarsa, da
suddividere fra i vari processi/programmi
Per allocare i programmi in memoria centrale è necessario
rilocarli:
Rilocare significa trasformare gli indirizzi logici, presenti nei
programmi, in indirizzi fisici, corrispondenti alle locazioni di
memoria dove il codice eseguibile viene effettivamente caricato
D’altra parte, l’uso di indirizzi logici nei programmi è essenziale
per consentirne il caricamento in differenti porzioni di memoria
Problema: come allocare lo spazio in maniera ottimale
62
Allocazione a partizioni multiple
Memoria
Memoria
0000x
0000x
Programma A
Programma A
Programma D
Programma B
Programma E
Programma C
Programma C
Istante T1
Istante T2
63
Allocazione a partizioni multiple
Memoria
0000x
Programma A
Programma D
Programma F
Programma E
PROBLEMA !!!!
FRAMMENTAZIONE
Programma C
64
Paginazione
Un importante meccanismo di “suddivisione” della memoria
centrale, e delle entità in essa memorizzate, è quello della
paginazione:
La memoria centrale è considerata
dal gestore della memoria come
partizionata in pagine, ciascuna
delle quali è un’area di memoria
contigua, di dimensione prefissata
Anche i programmi vengono
partizionati in pagine ed allocati in
un numero intero di pagine, non
necessariamente contigue
Tabella di mappa di
pagina
65
Tabella di mappa di pagina
Compito della Tabella di mappa di pagina è:
- mettere in relazione le pagine di un programma e i blocchi di memoria
- consentire al Sistema Operativo di sapere quali pagine sono realmente
presenti in memoria e in quali blocchi sono memorizzate (paginazione
dinamica)
- generare un’interruzione quando un lavoro vuole accedere ad un indirizzo
contenuto in una pagina non presente in memoria e quindi richiedere al
Sistema Operativo di caricarla dal disco in memoria.
1) Se vi sono blocchi liberi, questa operazione consisterà
nell'aggiornamento della tabella di mappa e nel caricamento effettivo nel
blocco prescelto.
2) Se invece non vi sono blocchi disponibili, occorrerà scegliere tra le
pagine presenti in memoria quale riportare sul disco, liberando così il relativo
blocco di memoria.
66
Soluzione: Paginazione
Memoria
0000x
Programma A
Memoria
0000x
Programma A
Programma A
Programma A
Programma A
Programma A
Programma B
Programma E
Programma B
Programma F
Programma D
Programma D
Programma F
67
Segmentazione
Segmento: parte di un programma che svolge
determinata funzione logica. (funzioni, array, ecc)
Il gestore della memoria può
utilizzare il partizionamento
logico del programma per
caricare
segmenti
di
lunghezza
variabile
in
maniera indipendente
Segmenti logici
una
1
4
1
2
3
4
2
3
Spazio utente (Programma)
Spazio fisico di memoria
Segmenti fisici
NB: Mentre le pagine hanno lunghezza fissa, i segmenti,
essendo logicamente suddivisi, hanno lunghezza variabile
68
La Segmentazione
Definiamo segmento un insieme di istruzioni considerate come una
unità logica ad esempio una routine, un array, un'area dati ecc.
Uno spazio degli indirizzi di un programma si può quindi pensare
composto da diversi segmenti di dimensioni variabili, ciascuno dei
quali viene caricato in memoria all'occorrenza e collegato al resto
del programma in modo dinamico (paginazione dinamica) ed
utilizzato per l'esecuzione.
69
Paginazione e Segmentazione
• Paginazione
– la divisione in pagine eseguita dal S.O.
– le pagine hanno dimensione fissa
– le pagine possono contenere informazioni disomogenee (ad
es. sia codice sia dati)
– una pagina ha un indirizzo di memoria
– dimensione tipica della pagina: 4 KB
70
Segmentazione e Paginazione
Segmentazione
– la divisione in segmenti spetta al programmatore.
– i segmenti hanno dimensione variabile
– un segmento contiene informazioni omogenee per tipo di accesso
e permessi di condivisione (insieme di istruzioni)
– un segmento ha un nome.
– dimensione tipica di un segmento: 64KB - 1MB
71
Memoria Virtuale (swap)
Segmentazione e paginazione non sono mutuamente
esclusive: in molti SO vengono applicate contemporaneamente
In entrambi i casi, il gestore della memoria offre al programma
applicativo la visione di una memoria virtuale, che può essere
maggiore di quella fisica
Si possono gestire programmi caricandone effettivamente in
memoria solo le pagine (o i segmenti) relative al codice
attualmente in esecuzione
Le pagine (o i segmenti) che non sono al momento caricate in
memoria rimangono disponibili sulla memoria di massa,
all’interno di opportuni file
72
La memoria virtuale
Memoria
0000x
Programma A-1
Programma B-1
Programma D
Swap
Programma A-2
Programma A-3
Programma B-2
73
La memoria virtuale
Memoria
0000x
Programma A-2
Programma B-1
Programma D
Swap
Programma A-1
Programma A-3
Programma B-2
74
Memoria fisica e memoria virtuale
Decimale
Mem. virtuale o logica
Mem. fisica
0
1
0
2
1
3
2
4
…...
5
…...
128 Mega
4 Giga
Il numero di indirizzi virtuali (o logici) è maggiore
del numero di indirizzi fisici !!!
75
Indirizzi logici e fisici
Se numero ind. logici = numero ind. fisici
abbiamo una corrispondenza uno a uno
Mem. virtuale
Mem. fisica
148
148
…...
…...
76
Indirizzi logici e fisici
- Poiché nella memoria virtuale: num. indirizzi logici > num. indirizzi fisici
allora più indirizzi logici vengono tradotti in un unico indirizzo fisico
Mem. virtuale
56
Mem. fisica
132
148
300
…...
…...
77
Indirizzi logici e fisici
Mem. virtuale
56
Mem. fisica
132
148
300
...
Istante T1
...
Mem. virtuale
56
Mem. fisica
132
148
300
Istante T2
...
...
N.B. Le celle con ind. logici tradotti in un unico ind. fisico non
possono essere usate contemporaneamente.
78
Traduzione degli indirizzi
La traduzione degli indirizzi logici in indirizzi fisici è effettuata
dalla MMU (Memory Management Unit), componente HW
nella CPU.
CPU
Ind. logici
RAM
MMU
Ind. fisici
Address BUS
Data BUS
Control BUS
79
Memoria di modo S ed U  1
Ai programmi che realizzano le funzioni proprie del SO, ed
alle strutture dati da esso usate, devono essere assegnate
opportune zone di memoria
Inoltre, i processi di sistema possono usare l’intero set di
istruzioni del calcolatore (talune non disponibili per i
programmi utente), possono venire allocati in memoria in
maniera ottimale, e devono essere protetti da errori causati
da altri programmi
La memoria viene suddivisa in memoria di modo S (supervisore)
e memoria di modo U (utente)
Nella porzione di modo S vengono caricati i processi del SO e
vengono create le strutture dati da esso utilizzate
Nella porzione di modo U vengono caricati i processi utente
80
Memoria di modo S ed U  2
Se il processore sta eseguendo un processo utente, lo si dice attivo
in modo utente (modo U), se esegue un processo di sistema, cioè
se è attivo il nucleo, lo si dice attivo in modo supervisore (modo S)
Quando il processore è attivo in modo S può accedere a tutta la
memoria (di modo U e di modo S) ed ha a disposizione un insieme più
ricco di istruzioni
Il processore attivo in modo U può accedere solo alle zone di memoria
di modo U, ed in particolare a quelle riservate al solo processo in
esecuzione
La suddivione della memoria protegge il codice e le strutture dati
che il SO usa per garantire una gestione delle risorse corretta ed
efficiente
Le istruzioni di codice utente non possono accedere a zone di memoria
di modo S se non richiedendo l’intervento del SO
81
Il file system
82
Il file system  1
File: Spazio di indirizzi logici contigui; è un insieme di
informazioni correlate e registrate nella memoria secondaria,
a cui è stato assegnato un nome
Dal punto di vista dell’utente...
...è la più piccola porzione di memoria secondaria indirizzabile
logicamente e...
...i dati possono essere scritti nella memoria secondaria
soltanto all’interno di un file
Dal punto di vista del SO...
...i file vengono mappati su dispositivi fisici di memorizzazione
non volatili
83
Il file system  2
Attributi del file:
Nome: identificativo del file
Locazione: puntatore al dispositivo ed alla posizione del file sul
dispositivo
Dimensione: dimensione attuale del file
Protezione: parametri di controllo per l’accesso in lettura,
scrittura ed esecuzione del file
Ora, data, identificativo dell’utente: dati necessari a protezione
e sicurezza del sistema, e per il controllo d’uso
84
Il file system  3
Il file system è responsabile della gestione dei file in
memoria di massa
struttura i dati in file...
...li organizza in directory (o cartelle)
realizza inoltre un insieme di funzioni di alto livello per operare
su file e directory
Il file system garantisce una gestione dei file indipendente
dalle caratteristiche fisiche dei dispositivi che costituiscono la
memoria di massa: astrazione utile sia per l’utente sia per i
programmi
85
La gestione dei file  1
Le infomazioni sui file sono conservate nella struttura di
directory, che risiede sulla memoria secondaria
Le directory hanno (nel caso più semplice) organizzazione ad
albero; ciascuna directory può contenere file e sottodirectory
Directory
File
Albero delle directory
86
La gestione dei file  2
Ciascun file viene identificato da un pathname che include
l’intero cammino, dalla radice dell’albero al file stesso
Tutti i file e sottodirectory presenti nella stessa directory
devono avere nomi distinti  ciascun pathname è unico
Il file system di WINDOWS
87
La gestione dei file  3
Un utente che interagisce con il file system ha un
proprio contesto, cioè una specifica posizione nel file
system, corrispondente ad un nodo nell’albero
Per default, all’atto del collegamento al sistema, il
contesto dell’utente è costituito dalla sua home
directory
Il contesto può essere variato, muovendosi ovunque
nell’albero delle directory (almeno in quelle accessibili
all’utente)
88
La gestione dei file  4
Funzioni disponibili agli utenti del file system:
Creazione di file (operazione normalmente eseguita da
software applicativo, come editor e word processor) e
directory
Comandi per stabilire i parametri di protezione
Lista del contenuto di una directory
Comandi per cambiare il contesto
Copia, ridenominazione e visualizzazione di file
Cancellazione di file e rimozione di directory
89
La gestione delle periferiche
90
La gestione dei dispositivi di I/O
La gestione dell’I/O richiede:
Un’interfaccia comune per la gestione dei device driver
Un insieme di driver per dispositivi hardware specifici
Un sistema di gestione di buffer per il caching delle
informazioni
Il gestore dei dispositivi di I/O è il modulo del SO incaricato
di assegnare i dispositivi ai task che ne fanno richiesta e di
controllare i dispositivi stessi
Da esso dipende la qualità e il tipo di periferiche riconosciute
dal sistema
91
Driver di dispositivo
I driver sono moduli software cui è affidato il compito di
comunicare dati da e verso le periferiche
Permettono l’accesso alle periferiche tramite “primitive di
alto livello”
I device driver implementano le seguenti funzioni:
Rendono trasparenti le caratteristiche fisiche tipiche di ogni
dispositivo
Gestiscono la comunicazione dei segnali verso i dispositivi
Gestiscono i conflitti, nel caso in cui due o più task vogliano
accedere contemporaneamente allo stesso dispositivo
I driver vengono scritti specificamente per ciascun
dispositivo e sono normalmente forniti dal costruttore
92
Scarica

Sistema Operativo 1