Sei sulla pagina 1di 371

DIIGA - Università Politecnica delle Marche

A.A. 2004/2005

Sistemi di Elaborazione
dell’Informazione
Luca Spalazzi
spalazzi@diiga.univpm.it
w w w.diiga.univpm.it/~spalazzi/

Sistemi di Elaborazione A.A. 2004/2005 1


Programma del Corso

 Introduzione • Struttura dei sistemi di elaborazione


• Struttura dei SO

 Gestione dei Processi • Processi e Thread


• Scheduling della CPU

 Gestione della Memoria • Gestione della memoria


• Memoria virtuale

 File System
 Sistemi di I/O • Struttura dei sistemi di I/O
• Struttura dei dischi

 Linux • Installazione
• Amministrazione di sistema
• Programmazione tramite script

Sistemi di Elaborazione A.A. 2004/2005 2


Testi di riferimento e materiale didattico

 A. Silberschatz, P. B. Galvin, G. Gagne, Sistemi


Operativi, VI Edizione, Addison-Wesley
 A. Silberschatz, P. B. Galvin, G. Gagne, Instructor’s
Manual (soluzioni degli esercizi del libro)
 Copia dei lucidi proiettati a lezione
 Raccolta di esercizi del docente

Sistemi di Elaborazione A.A. 2004/2005 3


Sito Web del corso
www.diiga.unian.it/C3I067/
 Registrazione al sito del corso
fare il login con
• username: registra
• password: sistelab
appena registrati arriva una email con la password
 Il sito serve per
 Reperire informazioni sul corso, esami,
ricevimento, ecc.
 Scaricare materiale didattico
 Iscriversi alle esercitazioni di laboratorio
 Iscriversi all’esame

Sistemi di Elaborazione A.A. 2004/2005 4


Laboratorio
 Esercitatori
ing. G. Capuzzi, ing. F. Pagliarecci
 Esercitazioni di linux (knoppix)
 Una versione di knoppix si può scaricare al seguente
indirizzo:
www.knoppix.org
 Orario delle esercitazioni (4 turni)
• Mercoledì 10:30-13:30
• Venerdì 13:30-16:30
 Iscrizione alle esercitazioni
 Inviare un messaggio (con il servizio di posta
interna al sito) all’utente
laboratorio
 L’oggetto del messaggio deve contenere
cognome, nome, matricola
Sistemi di Elaborazione A.A. 2004/2005 5
Iscrizione Esami
 Iscrizione agli esami
 Ci sarà un utente per appello, il nome di tale
utente corrisponde alla data dell’esame
 Inviare un messaggio (con il servizio di posta
interna al sito) all’utente corrispondente alla data
prescelta
 L’oggetto del messaggio deve contenere
cognome, nome, matricola
 L’iscrizione si chiude due giorni prima dell’appello
 Terminate l’iscrizione, viene pubblicato sul sito
l’elenco degli iscritti e gli orari dell’esame
 Verificate che risultate iscritti!!!

Sistemi di Elaborazione A.A. 2004/2005 6


Modalità di esame
 Prima prova: scritta (questionario al calcolatore)
• vale 10,5 punti

 Seconda prova: orale


• vale 21 punti

Voto Prova Scritta Ammissione all’orale Quando


voto ≥ 6 ammesso ha tempo fino a
gennaio 2006
5 ≤ voto < 6 ammesso stesso appello della
prova scritta
<5 non ammesso

Sistemi di Elaborazione A.A. 2004/2005 7


Assistenza studenti
 Orario di ricevimento
• Martedì 11:30 – 13:30
 Recapito telefonico
• 071 220 4829
 Recapito di posta elettronica
• spalazzi@diiga.univpm.it

Sistemi di Elaborazione A.A. 2004/2005 8


Introduzione
 Sistemi di Elaborazione
 Esempi di Sistemi di Elaborazione
• Mainframe, Desktop, Multiprocessore, Distribuiti, Real -Time,
Handheld
 Architettura dell’Hardware
• CPU
• Memoria centrale
• Dispositivi di I/O
• Gerarchia della memoria
• Protezione dell’Hardware
 Architettura del Sistema Operativo
• Componenti e servizi di un SO
• System call
• Architetture
> Monolitica
> Stratificata
> Microkernel
> Macchina Virtuale

Sistemi di Elaborazione A.A. 2007/2008 1


Sistema di Elaborazione

Insieme di risorse hardware e software per


l’elaborazione automatica delle informazioni.

Sistemi di Elaborazione A.A. 2007/2008 2


Architettura di un Sistema di Elaborazione

Sistemi di Elaborazione A.A. 2007/2008 3


Architettura di un Sistema di Elaborazione
1. Hardware:
le risorse di calcolo fondamentali (CPU, memoria,
dispositivi di I/O).
2. Sistema Operativo:
controlla e coordina l’utilizzo dell’hardware da parte dei
vari programmi applicativi di utenti diversi.
3. Programmi Applicativi:
definiscono il modo in cui le risorse del sistema devono
essere usate per risolvere i problemi di elaborazione dei
diversi utenti (es. compilatori, basi di dati, video game,
videoscrittura, programmi scientifici, programmi contabili).
4. Utenti:
coloro che utilizzano i programmi applicativi (persone,
macchine, altri computer).

Sistemi di Elaborazione A.A. 2007/2008 4


Sistema Operativo
 Un programma che funge da intermediario tra un utente e
l’hardware di un computer.
 Un programma che rende possibile lo sfruttamento in
modo efficiente dell’hardware del computer

 Obiettivi di un SO:
• Eseguire i programmi utente
• Facilitare la soluzione dei problemi degli utenti.
• Rendere il computer conveniente.

Sistemi di Elaborazione A.A. 2007/2008 5


Altre Definizioni di SO

 Allocatore di Risorse – gestisce ed alloca risorse.


 Programma di Controllo – controllo l’esecuzione dei
programmi utente e le operazioni dei dispositivi di I/O.
 Kernel – l’unico programma che è sempre in esecuzione
(tutti gli altri sono considerati programmi applicativi).

Sistemi di Elaborazione A.A. 2007/2008 6


Introduzione
 Sistemi di Elaborazione
 Esempi di Sistemi di Elaborazione
• Mainframe, Desktop, Multiprocessore, Distribuiti, Real -Time,
Handheld
 Architettura dell’Hardware
• CPU
• Memoria centrale
• Dispositivi di I/O
• Gerarchia della memoria
• Protezione dell’Hardware
 Architettura del Sistema Operativo
• Componenti e servizi di un SO
• System call
• Architetture
> Monolitica
> Stratificata
> Microkernel
> Macchina Virtuale

Sistemi di Elaborazione A.A. 2007/2008 7


Simple Batch System

Memory layout

Sistemi di Elaborazione A.A. 2007/2008 8


Multiprogrammed Batch Systems
Diversi job sono tenuti in memoria contemporaneamente e la CPU è
multiplexata tra loro.

Sistemi di Elaborazione A.A. 2007/2008 9


Cosa serve per la Multiprogrammazione

 Scheduling della CPU:


il sistema deve scegliere tra i diversi job pronti per
l’esecuzione.
 Gestione della Memoria:
il sistema deve allocare la memoria a diversi job.
 Gestione dei Dispositivi di I/O:
• il sistema deve allocare l’I/O a diversi job.
• il sistema deve fornire le routine di I/O.

Sistemi di Elaborazione A.A. 2007/2008 10


Time-Sharing

 La CPU è multiplexata tra diversi job che sono sia in


memoria sia su disco. La CPU è allocata solo a job che
sono in memoria.
 Ogni job può essere portato dal disco in memoria (swap
in) e viceversa (swap out).
 Viene messa a diposizione una comunicazione on-line tra
gli utenti ed il sistema; quando il SO termina l’esecuzione
di un comando, il controllo passa alla tastiera (e quindi
all’utente).
 Viene messo a diposizione degli utenti un sistema on-line
per accedere ai dati ed al codice.

Sistemi di Elaborazione A.A. 2007/2008 11


Desktop Systems

 Personal computers – computer dedicati ad un singolo


utente.
 Dispositivi di I/O – tastiera, mouse, schermo, stampante.
 Maggior convenienza e prontezza delle risposte ma
anche maggior responsabilità per gli utenti.
 Infatti spesso non vengono forniti sofisticati meccanismi
di protezione.
 Possono girare diversi tipi di SO (Windows, MacOS,
UNIX, Linux)

Sistemi di Elaborazione A.A. 2007/2008 12


Sistemi Paralleli
 Sistemi multiprocessore con le CPU in stretta
comunicazione fra loro.
 Sistemi Strettamente Accoppiati (Tightly coupled system)
i processori condividono la memoria e il clock; i
processori, di solito, comunicano tra loro attravero la
memoria condivisa.
 Vantaggi dei sistemi paralleli:
• throughput elevato
• economia di scala
• affidabilità elevata
> graceful degradation: possibilità di continuare il servizio
in misura proporzionale al livello di hardware difettoso

Sistemi di Elaborazione A.A. 2007/2008 13


Sistemi Paralleli (Cont.)

 Symmetric multiprocessing (SMP)


• In ogni processore è in esecuzione la stessa copia di SO.
• Possono essere eseguiti diversi procesi
contemporaneamente senza degrado delle prestazioni.
• La maggior parte dei moderni SO supporta SMP
 Asymmetric multiprocessing
• Ad ogni processore viene assegnato un compito specifico;
esiste un processore master che ha il compito di schedulare
e allocare il lavoro sui diversi processori slave.
• Sono più comuni in sistemi estremamente grandi.

Sistemi di Elaborazione A.A. 2007/2008 14


Symmetric Multiprocessing

Sistemi di Elaborazione A.A. 2007/2008 15


Sistemi Distribuiti

 L’elaborazione è distribuita tra diversi procesori fisici.


 Sistemi lascamente accoppiati (Loosely coupled system)
ogni processore ha la sua memoria locale; ogni
processore comunica con gli altri attraverso linee di
comunicazione (bus ad alta veocità, linee telefoniche, ...).
 Vantaggi dei sistemi distribuiti.
• Condivisione delle risorse
• Accelerazione della computazione – bilanciamento del
carico di lavoro
• Affidabilità
• Comunicazione

Sistemi di Elaborazione A.A. 2007/2008 16


Sistemi Distribuiti (Cont.)

 Richiedono infrastrutture di rete.


 Reti locali (Local area networks - LAN) o Reti geografiche
(Wide area networks - WAN)
 Possono adottare architetture
• client-server
• peer-to-peer.

Sistemi di Elaborazione A.A. 2007/2008 17


Client-Server

Sistemi di Elaborazione A.A. 2007/2008 18


Peer-to-Peer

peer peer peer ... peer

network

Sistemi di Elaborazione A.A. 2007/2008 19


Sistemi Real-Time

 Spesso sono usati come dispositivi di controllo in


applicazioni dedicate come il controllo di esperimenti
scientifici, di immagini mediche, di applicazioni
industriali,...
 Esitono vincoli temporali precisi.
 Possono essere hard or soft real-time.

Sistemi di Elaborazione A.A. 2007/2008 20


Real-Time Systems (Cont.)
 Hard real-time:
• La memoria secondaria è limitata o assente, i dati sono
memorizzati in memoria RAM o ROM.
• Di solito i general-purpose operating systems non vanno
bene.
 Soft real-time
• Limitato impiego nella robotica industriale.
• E’ utilesoprattutto in applicazioni (quali multimedia, virtual
reality) che richiedono SO con caratteristiche avanzate.

Sistemi di Elaborazione A.A. 2007/2008 21


Sistemi Handheld
 Personal Digital Assistants (PDAs)
 Telefoni cellulari
 Caratteristiche:
• memoria limitata
• processori lenti
• schermi piccoli.
 Possono girare diversi tipi di SO (Windows Mobile, Embedded
Linux, Symbian, Android (?))

Sistemi di Elaborazione A.A. 2007/2008 22


Introduzione
 Sistemi di Elaborazione
 Esempi di Sistemi di Elaborazione
 Mainframe, Desktop, Multiprocessore, Distribuiti, Real -Time,
Handheld
 Architettura dell’Hardware
• CPU
• Memoria centrale
• Dispositivi di I/O
• Gerarchia della memoria
• Protezione dell’Hardware
 Architettura del Sistema Operativo
• Componenti e servizi di un SO
• System call
• Architetture
> Monolitica
> Stratificata
> Microkernel
> Macchina Virtuale

Sistemi di Elaborazione A.A. 2007/2008 23


Architettura di un Computer

Sistemi di Elaborazione A.A. 2007/2008 24


Operazioni di un Computer
 I dispositivi di I/O e la CPU funzionano concorrentemente.
 Ogni controller si occupa solo di un particolare tipo di
dispositivo.
 Ogni controller ha un buffer locale..
 La CPU trasferisce dati dalla memoria centrale ai buffer locali e
viceversa.
 Una operazione di I/O consiste nel trasferire dati dal dispositivo
al buffer locale e/o viceversa.
 Controller dei dispositivi e CPU devono essere sincronizzati tra
loro.

Sistemi di Elaborazione A.A. 2007/2008 25


Architettura di una CPU
Indirizzi
Bus Dati
Controllo

CPU

Sistemi di Elaborazione A.A. 2007/2008 26


Architettura della Memoria Centrale

Memoria Centrale

Circuiti di
controllo

Indirizzi
Bus Dati
Controllo

Sistemi di Elaborazione A.A. 2007/2008 27


Ciclo di funzionamento

while (not halt ) do


{ /* fetch istruzione */
RCP -> RIp;
RIp -> RIm;
M[RIm] ->RLSm;
RLSm -> RLSp;
RLSp -> RIC;
/* decodifica istruzione */
“attiva rete di decodifica”;
/* esegui istruzione */
....
RCP + 1 -> RCP
}

Sistemi di Elaborazione A.A. 2007/2008 28


Architettura dei Dispositivi di I/O
Indirizzi
Bus Dati
Controllo

Decodificatore Circuiti di controllo: Registri:


Indirizzi: -istruzione corrente (RICd) -lettura/scrittura (RLSd)
-indirizzi (RId) -stato (RSd)

Controller

Dispositivo

Sistemi di Elaborazione A.A. 2007/2008 29


Architettura dei Dispositivi di I/O
Ogni dispositivo e’ collegato al bus di sistema tramite un’interfaccia
dove risiedono alcuni registri (di controllo, per permettere la
sincronizzazione CPU-Dispositivo, buffer per contenere i dati in
ingresso/uscita). Questa interfaccia e’ chiamata controller.

La CPU colloquia con il controller scrivendo/leggendo i suoi registri:

-utilizzando apposite istruzioni (IN / OUT) che avranno come


parametro un “indirizzo” che identifica un particolare controller
-utilizzando normali istruzioni LOAD/STORE a indirizzi associati ai
registri del controller: questa tecnica si chiama Memory Mapped I/O

Sistemi di Elaborazione A.A. 2007/2008 30


Tipi di I/O
Nelle architetture più semplici si trovano normalmente tre tipi di
schemi per eseguire le azioni di I/O

•I/O programmato con Busy-Waiting

•I/O guidato dalle interruzioni (Interrupt)

•I/O con accesso diretto alla memoria (DMA)

Sistemi di Elaborazione A.A. 2007/2008 31


I/O Programmato (con busy waiting)

Sistemi di Elaborazione A.A. 2007/2008 32


I/O Programmato (con busy waiting)
Pseudocodice per il controllo dell’output di una stringa di caratteri
sul display

Busy Waiting

Sistemi di Elaborazione A.A. 2007/2008 33


I/O guidato da Interrupt

Dato che CPU e dispositivi di I/O hanno velocità molto diverse, è


opportuno non tenere la CPU bloccata in un ciclo di controllo dei bit
di stato in attesa che termini l’operazione richiesta. Se si potesse
evitare il busy waiting, mentre i dispositivi di I/O lavorano, la CPU
potrebbe essere impiegata in compiti più utili (per esempio
eseguire una altro programma).

Sistemi di Elaborazione A.A. 2007/2008 34


I/O guidato da Interrupt
Interazione CPU/tastiera basata su interrupt

CPU Controllore
1.Comando input
Tastiera
2. Interrupt

RAM 3. CPU copia in memoria

La CPU viene interrotta prima del trasferimento in memoria (che


viene effettuato dalla CPU) del contenuto del buffer.

Sistemi di Elaborazione A.A. 2007/2008 35


I/O guidato da Interrupt
Problemi:

Come funziona nel caso ci siano più dispositivi che possono


inviare segnali di interrupt ?

1. i segnali provenienti dai diversi dispositivi vengono messi in


OR

2. il dispositivo che ha causato interrupt viene individuato tramite


Polling oppure utilizzando la tecnica dell’Interrupt Vettorizzato

CPU Device 1 Device n

INT Int. 1 Int. n

OR
Sistemi di Elaborazione A.A. 2007/2008 36
I/O guidato da Interrupt
Problemi:

Cosa accade se arrivano piu’ interrupt contemporaneamente?


la CPU avverte un solo segnale (OR di tutti i segnali di int.)

1) se si usa il Polling, l’ordine di scansione determina un


ordinamento implicito tra i dispositivi

2) se si usa l’Interrupt vettorizzato, occorre impostare un protocollo


di comunicazione tra CPU e dispositivi: quando la CPU ha ricevuto
l’interrupt ed e’ pronta a gestirlo, invia un segnale di Acknowledge
(INTA). Quando il controller riceve il segnale invia l’identificatore
del dispositivo (vettore di interrupt) sul bus dati. Se il segnale di
INTA viene propagato sequenzialmente dai controllori dei
dispositivi (collegamento daisy chain) e assorbito dal primo
controller che aveva un interrupt pendente, si ha un ordinamento
implicito tra i dispositivi determinato dal collegamento in daisy chain
degli stessi

Sistemi di Elaborazione A.A. 2007/2008 37


I/O guidato da Interrupt
Bus dati

Int.Vect.1 Int.Vect.n
INTA
CPU Device 1 Device n

INT Int. 1 Int. n


OR

Sistemi di Elaborazione A.A. 2007/2008 38


I/O guidato da Interrupt

Sistemi di Elaborazione A.A. 2007/2008 39


I/O guidato da Interrupt
Problemi:

Cosa accade se arriva un secondo interrupt mentre e’ in


esecuzione la procedura di trattamento di un (primo) interrupt?

1. Deve essere possibile disabilitare gli interrupt per prevenire la


perdita di interrupt e più in generale quando deve essere
eseguita una porzione di codice senza interruzioni. In questo
caso gli interrupt pendenti vengono ingorati fino alla
riabilitazione degli interrupt. Non si possono avere interrupt
annidati.

2. Se vi sono segnali di interrupt con vincoli stringenti sui tempi di


risposta, e’ opportuno poter definire diversi livelli di priorita’ e
permettere ad un interrupt ad alta priorita’ di essere gestito
anche se e’ in esecuzione una procedura di gestione di un
altro interrupt (a piu’ bassa priorita’) – si possono quindi avere
interrupt annidati
Sistemi di Elaborazione A.A. 2007/2008 40
I/O guidato da Interrupt
Bus dati

Int.Vect.1 Int.Vect.n
Porta INTA
di CPU Device 1 Device n
uscita
INT Int. 1 Int. n

Ab. 1
OR
Ab. n
All’arrivo di una interruzione
con priorità pj vengono
disabilitate le interruzioni
da dispositivi con priorità
inferiore a pj

Sistemi di Elaborazione A.A. 2007/2008 41


I/O guidato da Interrupt
Esempio di utilizzo di diversi livelli di priorita’ per gli interrupt

Stampante: Livello 2, RS232: Livello 5, Disco: livello 4

Sistemi di Elaborazione A.A. 2007/2008 42


I/O guidato da Interrupt
Gestione dell’interrupt
Cosa succede quando la CPU riceve un interrupt:

1. L’istruzione macchina in corso viene completata.


2. Si salva in memoria lo stato della computazione interrotta
(registri e program counter) nel descrittore di processo.
3. Si determina il tipo di interruzione che è avvenuta (tramite
polling o tecnica dell’interrupt vettorizzato).
4. Si salta ad una posizione in memoria dove è contenuto
l’interrupt handler ovvero il gestore di quel tipo di interruzioni
(es. driver del disco). Infatti segmenti di codice separati
determinano quale azione deve essere eseguita per ogni tipo
di interrupt.
5. Dopo aver gestito l’interrupt, viene ripristinato lo stato del
programma interrotto e la sua esecuzione prosegue
Tutto cio’ deve essere TRASPARENTE rispetto
a chi viene interrotto

Sistemi di Elaborazione A.A. 2007/2008 43


I/O guidato da Interrupt
Alcuni esempi di interrupt handler
L’interrupt handler per un interrupt da disco trasferisce dati dal
buffer del controller a memoria o viceversa, e se esistono richieste
di I/O in attesa del disco una di queste viene inoltrata al controller.
Inoltre il programma che era in attesa dell’I/O appena terminato,
viene riportato nell’insieme dei programmi a cui deve essere
assegnata la CPU.

L’interrupt handler per un timer interrupt si occupa


dell’assegnazione della CPU ad un altro programma, fra quelli
pronti per l’esecuzione.

L’interrupt handler per un interrupt da tastiera trasferisce il


carattere appena ricevuto dalla tastiera in memoria e riporta il
programma che era in attesa dell’I/O appena terminato nell’insieme
dei programmi a cui deve essere assegnata la CPU.

Sistemi di Elaborazione A.A. 2007/2008 44


I/O guidato da Interrupt
Gestione dell’interrupt

La CPU deve poter sapere quale dispositivo ha inviato l’interrupt:


Controller
CPU
dispositivo
Salta alla procedura di
gestione dell’interrupt Richiesta
(interrupt handler) il cui operazione
indirizzo di partenza si trova esecuzione
nell’interrupt vector, una I/O
INT
tabella del sistema operativo
indicizzato in base al (tipo di)
dispositivo, qui indicato da ID. INTA
ID (Identificatore
dispositivo)
Disabilita
interruzioni

Sistemi di Elaborazione A.A. 2007/2008 45


I/O guidato da Interrupt
Rilevamento e disabilitazione/abilitazione
degli interrupt

Esempio di Esempio di microinterprete con


microinterprete senza gestione degli interrupt:
gestione degli interrupt: while (not halt ) do
while (not halt ) do { if (interrupt & not int_disable)
{ fetch istruzione; {salva stato;
decodifica istruzione; invia INTA;
esegui istruzione; leggi device_id;
} int_disable = true;
PC = int_vector[device_id];}
fetch istruzione;
decodifica istruzione;
esegui istruzione; }

Sistemi di Elaborazione A.A. 2007/2008 46


Direct Memory Access Structure
 Utilizzato per dispositivi di I/O ad alta velocità in grado di
trasferire dati ad una velocità vicina a quella della memoria.
 Il controller del dispositivo trasferisce blocchi di dati dal buffer
direttamente alla memoria centrale senza l’intervento della CPU.
 Viene generato un solo interrupt per blocco piuttosto che un
interrupt per byte.

Sistemi di Elaborazione A.A. 2007/2008 47


I/O con Accesso Diretto alla Memoria
Interazione CPU/controller DMA

CPU 1. comando input

3. interrupt

Controller
DMA
2. Copia Blocco
RAM (senza l’intervento
della CPU)

La CPU viene interrotta dopo il trasferimento


in memoria (senza il suo intervento) del
contenuto del buffer. Il controller DMA e la
CPU si contendono il bus.

Sistemi di Elaborazione A.A. 2007/2008 48


I/O con Accesso Diretto alla Memoria
Poiche’ il Bus di collegamento alla memoria e’ condiviso occorre
un arbitro che gestisca i conflitti. Fenomeno del Cycle Stealing che
letteralmente significa furto di cicli (del Bus).

Sistemi di Elaborazione A.A. 2007/2008 49


Interruzioni Software (Trap)
Esiste un altro tipo di interrupt, provocato dall’esecuzione di una
determinata istruzione del programma in esecuzione:
• istruzioni con errori (divisione per zero, accesso in memoria non
valido, ...)
• istruzioni esplicite di “trap” al SO (un programma utente richiede
un servizio del SO

Le trap vengono trattate in modo del tutto analogo agli interrupt:


ciascun tipo di trap ha un identificatore che viene usato per cercare
nell’interrupt vector l’indirizzo della prima istruzione del
corrispondente interrupt handler.

Gli Interrupt sono ASINCRONI rispetto al programma in


esecuzione mentre le Trap sono SINCRONE: causate dal
programma in esecuzione.

Sistemi di Elaborazione A.A. 2007/2008 50


Memoria Secondaria
 La memoria centrale è un supporto di memorizzazione (volatile)
che può essere acceduto direttamente dalla CPU.
 La memoria secondaria è una estensione della memoria
centrale, in grado di fornire un supporto di memorizzazione non
volatile e di maggiori dimensioni.

 Un disco magnetico è un insieme di piatti ricoperti di materiale


magnetico.

Sistemi di Elaborazione A.A. 2007/2008 51


Disco Magnetico

Sistemi di Elaborazione A.A. 2007/2008 52


Gerarchia della Memoria
 Gerarchie delle memorie - il sistema di memorizzazione è
organizzato gerarchicamente sulla base di:.
• Velocità
• Costo
• Volatilità
 Caching – consiste nel copiare i dati contenuti nella memoria di
un certo livello in una memoria di livello superiore (più veloce).
Questa serve per tenere i dati che sono stati utilizzati più di
recente.
• Questo richiede una politica di cache management.
• Questo richiede che dati che si trovano simultaneamente in più di
un livello devono essere consistenti tra loro.
La cache serve per fare il caching della memoria centrale.
La memoria centrale può essere vista come la cache della
memoria secondaria.

Sistemi di Elaborazione A.A. 2007/2008 53


Gerarchia della Memoria

Sistemi di Elaborazione A.A. 2007/2008 54


Migrazione di A dal Disco ai Registri

Sistemi di Elaborazione A.A. 2007/2008 55


Protezioni Hardware
 Funzionamento in Dual-Mode
 Protezione dell’I/O
 Protezione della Memoria
 Protezione della CPU

Sistemi di Elaborazione A.A. 2007/2008 56


Funzionamento in Dual-Mode
 La condivisione delle risorse di sistema richiede al SO di
assicurare che un programma non corretto non danneggi gli altri
programmi (SO incluso).
 I sistemi sono quindi forniti di hardware di supporto per
differenziare come minimo due modi di funzionamento:
1. User mode – il sistema sta eseguendo istruzioni per conto di
programma utente.
2. Kernel mode (anche detto monitor mode o system mode) – il
sistema sta eseguendo istruzioni per conto del SO.

 Anche le istruzioni vengono suddivise in


 istruzioni privilegiate – le istruzioni macchina in grado di causare
danni allo stato del sistema
 istruzioni non privilegiate – tutte le altre istruzioni
Le istruzioni privilegiate possono essere eseguire solo in
modalità kernel.

Sistemi di Elaborazione A.A. 2007/2008 57


Funzionamento in Dual-Mode (Cont.)
 Viene aggiunto un bit di modo all’hardwa del computer
per indicare la modalità di funzionamento: kernel (0) o
user (1).
 Quando c’è una interruzione o un trap, l’hardware passa
in modalità kernel. In questo modo l’interrupt handler (che
e’ un componente del software di sistema operativo)
esegue in modalità kernel. Alla istruzione di ritorno da
interrupt, viene ripristinata la modalità utente.

Interrupt/fault

kernel user
set user mode

Sistemi di Elaborazione A.A. 2007/2008 58


Funzionamento in Dual-Mode (Cont.)
Istruzioni privilegiate
La fase di esecuzione di una qualsiasi istruzione privilegiata
inizierà con un test sul bit di modo: se questo è impostato a
“kernel” l’esecuzione prosegue, altrimenti viene generata una
eccezione (trap) e il programma che ha tentato di eseguire
l’istruzione privilegiata viene interrotto.

Sistemi di Elaborazione A.A. 2007/2008 59


Protezione dell’I/O
 Tutte le istruzioni di I/O sono istruzioni privilegiate.
 Questo è il motivo per cui per eseguire operazioni di I/O bisogna
eseguire delle system call.

Sistemi di Elaborazione A.A. 2007/2008 60


Protezione della Memoria
 Le protezioni viste fino ad ora non sono sufficienti, infatti un
programma utente potrebbe modificare il vettore di interrupt
mettendo un indirizzo relativo al codice del programma utente
stesso, in questo modo il programma utente riuscirebbe ad
eseguire le proprie istruzioni in modalità utente.
 Serve quindi proteggere la memoria da accessi indesiderati, al
meno per il vettore di interrupt e gli interrupt handler.
 Per avere la protezione della memoria bisogna aggiungere due
registri che determinano l’intervallo nello spazio degli indirizzi
che un programma può accedere legalmente:
• Registro Base – contiene l’indirizzo fisico più basso al quale un
programma può accedere legalmente.
• Registro Limite – contiene la dimenione dell’intervallo
 La memoria al di fuori di tale intervallo è protetta.

Sistemi di Elaborazione A.A. 2007/2008 61


Protezione della Memoria

Sistemi di Elaborazione A.A. 2007/2008 62


Protezione della Memoria

Sistemi di Elaborazione A.A. 2007/2008 63


Protezione della Memoria
 Quando il SO sta funzionando in modalità kernel, ha accesso
illimitato sia alla memoria del monitor sia alla memoria dei
programmi utente.
 Le istruzioni di load per i registri base e limite sono istruzioni
privilegiate.

Sistemi di Elaborazione A.A. 2007/2008 64


Protezione della CPU
 Bisogna evitare che un programma mantenga il controllo della
CPU per un tempo illimitato, il SO deve essere sempre in grado
di riprendere il controllo della CPU.
 Questo può essere ottenuto con un timer.

 Timer – interrompe il computer dopo uno specifico periodo di


tempo:
• Timer è un contatore che viene decrementato dopo ogni clock tick.
• Quando raggiunge il valore 0, viene generato un interrupt.
 Timer sono comunemente usati per realizzare il time sharing.
 Timer sono anche usati per calcolare l’ora.
 Load-timer è una istruzione privilegiata.

Sistemi di Elaborazione A.A. 2007/2008 65


Introduzione
 Sistemi di Elaborazione
 Esempi di Sistemi di Elaborazione
 Mainframe, Desktop, Multiprocessore, Distribuiti, Clustered,
Real -Time, Handheld
 Architettura dell’Hardware
 CPU
 Memoria centrale
 Dispositivi di I/O
 Gerarchia della memoria
 Protezione dell’Hardware
 Architettura del Sistema Operativo
• Componenti e servizi di un SO
• System call
• Architetture
> Monolitica
> Stratificata
> Microkernel
> Macchina Virtuale

Sistemi di Elaborazione A.A. 2007/2008 66


Componenti di un SO

 Gestione dei processi


 Gestione della memoria centrale
 Gestione dei dispositivi di I/O
 Gestione della memoria secondaria
 Gestione del file system
 Gestione delle reti
 Sistema di Protezione
 Interprete di comandi

Sistemi di Elaborazione A.A. 2007/2008 67


Gestione dei Processi

 Un processo è un programma in esecuzione


 Ogni processo ha bisogno di determinate risorse per
terminare il suo compito: CPU, memoria, file e dispositivi
di I/O.
 Il SO è responsabile della gestione dei processi:
• Creazione e cancellazione deiprocessi,
• Sospensione e ripristino dei processi,
• Meccanismi per :
> la sincronizzazione dei processi
> la comunicazione dei processi

Sistemi di Elaborazione A.A. 2007/2008 68


Gestione della Memoria

 La memoria centrale è un array di word o byte molto


grande, ognuno con un suo indirizzo. Permette l’accesso
veloce a dati condivisi dalla CPU e dai dispositivi di I/O.
 La memoria centrale è un dispositivo di memorizzazione
volatile.
 Il SO è responsabile delle seguenti attività relative alla
gestione della memoria:
• Tenere traccia di quali parti della memoria sono utilizzate e
da chi.
• Decidere quali processi caricare in memoria.
• Allocare e deallocare lo spazio di memoria.

Sistemi di Elaborazione A.A. 2007/2008 69


Gestione dei File

 Un file è una collezione di informazioni collegate tra loro e


definite dal suo creatore. Di solito un file rappresenta o un
programma (sorgente o oggetto) o dei dati.
 Il SO è responsabile delle seguenti attività relative alla gestione
dei file:
• Creazione e cancellazione dei file.
• Creazione e cancellazione di directory (cartelle).
• Mettere a disposizione primitive per la manipolazione di file e
directory.
• “Mappare” i file su dispositivi di memorizzazione secondaria e/o
altri dispositivi di I/O.
• Gestire il backup dei file.

Sistemi di Elaborazione A.A. 2007/2008 70


Gestione dell’I/O

 Il sistema di gestione dell’I/O consiste in:


• Un sistema di buffer-caching
• Una interfaccia generale per i driver dei dispositivi
• Driver per specifici dispositivi hardware

Sistemi di Elaborazione A.A. 2007/2008 71


Gestione della Memoria Secondaria

 La maggior parte dei moderni computer utilizza i dischi


come principale mezzo di memorizzazione sia per
programmi sia per i dati.
 Il SO è responsabile delle seguenti attività relative alla
gestione dei dischi:
• Gestione dello spazio libero
• Allocazione dellospazio
• Scheduling del disco

Sistemi di Elaborazione A.A. 2007/2008 72


Gestione delle Reti

 Un sistema distribuito è una collezione di processori che non


condividono ne la memori ne il clock.
 Il SO è responsabile delle seguenti attività relative alla gestione
delle reti:
• Invio e ricezione di messaggi
• Instradamento e gestione delle connessioni
• Gestione dei conflitti
• Gestione della sicurezza

Sistemi di Elaborazione A.A. 2007/2008 73


Sistema di Protezione

 La protezione si riferisce al meccanismo per controllare l’acceso


di processi e utenti alle risorse di un utente e a quelle di
sistema.
 Il sistema di protezione deve:
• distinguere tra un utilizzo autorizzato ed uno non autorizzato
• specificare quali controlli devono essere eseguiti ed i mezzi per
effettuarli

Sistemi di Elaborazione A.A. 2007/2008 74


Interprete dei Comandi
 Gran parte dei comandi sono dati al SO per mezzo di istruzioni.
Tali istruzioni permettono:
• la creazione e la gestione dei processi
• la gestione dell’I/O
• la gestione della memoria secondaria
• secondary-storage management
• la gestione della memoria centrale
• l’accesso al file system
• la protezione delle risorse
• il networking
 Il programma che legge ed interpreta tali istruzioni è chiamato in
diversi modi:
• interprete comandi
• shell (in UNIX)
• prompt di MS-DOS (in MS Windows)
 Esistono anche interpreti basati su interfacce grafiche
• Finder (MacOS)
• Explorer (MS Windows)
• X Windows (Unix)

Sistemi di Elaborazione A.A. 2007/2008 75


Servizi di un SO
 Caricamento ed esecuzione dei programmi.
 Operazioni di I/O – siccome un utente non può eseguire
le operazioni di I/O direttamente, il SO deve fornire il
modo di eseguirle.
 Manipolazione del File-system – la possibilità per un
processo o un utente di leggere, scrivere, creare e
cancellare file.
 Comunicazione – la possibilità per due processi (sulla
stessa macchina o su due macchine differenti collegate
tra loro in rete) di scambiarsi informazioni. Può essere
realizzata attraverso la memoria condivisa o lo scambio
di messaggi.

Sistemi di Elaborazione A.A. 2007/2008 76


Comunicazione tra processi

Scambio di Messaggi Memoria Condivisa

Sistemi di Elaborazione A.A. 2007/2008 77


Servizi di un SO (cont.)
 Rilevamento di errori.
 Allocazione delle risorse – a più utenti/processi in
esecuzione nello stesso momento.
 Contabilizzazione dell’uso delle risorse – tenere traccia di
chi e per quanto tempo ha utilizzato che cosa. Questo
serve sia per raccogliere statistiche sul funzionamento
del sistema sia nei sistemi in cui l’accesso alle risorse è a
pagamento.
 Protezione – assicurare che l’accesso alle risorse del
sistema sia controllato.

Sistemi di Elaborazione A.A. 2007/2008 78


System Call

 Le system call costituiscono l’interfaccia tra un


programma in esecuzione ed I servizi di un SO.
 Le chiamate alle system call sono realizzate tramite trap.
 Esistono tre metodi per il passaggio dei parametri:
• I valori dei parametri vengono memorizzati nei registri.
• I valori dei parametri vengono memorizzati in una tabella in
memoria e l’indirizzo della tabella viene memorizzato in un
registro.
• I valori dei parametri vengono memorizzati dal programma
con una operazione di push nello stack e letti dal SO con
una operazione di pop.

Sistemi di Elaborazione A.A. 2007/2008 79


System Call

Sistemi di Elaborazione A.A. 2007/2008 80


Passaggio parametri attraverso Tabella

Sistemi di Elaborazione A.A. 2007/2008 81


Programmi di sistema

 Costituiscono l’ambiente di sviluppo ed esecuzione dei


programmi:
• Manipolazione e modifica file
• Stato del sistema
• Strumenti di ausilio alla programmazione
• Caricamento ed esecuzione di programmi
• Comunicazione
• Programmi di utilità
 Per la maggior parte degli utenti, il SO è caratterizzato dai
programmi di sistema che mette a disposizione piuttosto
che dalle system call.

Sistemi di Elaborazione A.A. 2007/2008 82


Architettura Monolitica

Applicazione Applicazione
User mode
Kernel mode
System services

Controllers

Sistemi di Elaborazione A.A. 2007/2008 83


MS-DOS
 MS-DOS è stato scritto (da Tim Paterson) tenendo conto delle
limitazioni dell’hardware e per dare il massimo delle funzionalità
occupando il minimo spazio. Infatti MS-DOS, anche se ha un
minimo di strutturazione:
• non è diviso in moduli
• le interfacce e i livelli di funzionalità non sono ben separati

Sistemi di Elaborazione A.A. 2007/2008 84


MS-DOS

Sistemi di Elaborazione A.A. 2007/2008 85


UNIX

 UNIX – è stato scritto (da Ken Thompson) tenendo


conto delle limitazioni dell’hardware. Quindi lo
UNIX originale ha una strutturazione limitata. Il
sistema consiste di due parti:
• programmi di sistema
• il kernel
> tutto ciò che è compreso tra l’interfaccia con le
system call e l’hardware del sistema
> tutte le funzioni di gestione della CU, della memoria
ed altre ancora sono riunite in un unico livello.

Sistemi di Elaborazione A.A. 2007/2008 86


UNIX

Sistemi di Elaborazione A.A. 2007/2008 87


Architettura Stratificata
 Il SO è suddiviso in un certo numero di strati (chiamati livelli).
 Ogni strato è costruito sopra gli strati precedenti. Il livello più
basso (livello 0) è l’hardware ed il livello più alto (livello N) è
l’interfaccia utente.
 Per rendere il sistema modulare, i livelli sono definiti in modo
tale che ogni livello utilizza soltanto funzioni (operazioni) e
servizi che appartengono ai livelli inferiori.

Sistemi di Elaborazione A.A. 2007/2008 88


Architettura Stratificata
Applicazione Applicazione Applicazione
User mode
layer M operazioni strato M visibili dalle applicazioni Kernel mode
operazioni strato M nascoste

layer M-1 operazioni strato M-1 visibili dallo strato M

operazioni strato M-1 nascoste

layer …

layer 1 operazioni strato 1 visibili dallo strato 2

operazioni strato 1 nascoste

Controllers

Sistemi di Elaborazione A.A. 2007/2008 89


OS/2

Sistemi di Elaborazione A.A. 2007/2008 90


Architettura a Microkernel (Client/Server)
 Spostare tutto quanto è possibile dal kernel allo spazio “utente”.
 La comunicazione tra i moduli utente avviene utilizzando lo
scambio di messaggi.
 Benefici:
- è più facile estendere un microkernel
- è più facile fare il porting del SO su nuove architetture
- si adatta più facilmente ai sistemi distribuiti
- più affidabile (meno codice gira in modalità kernel)
- più sicuro

Sistemi di Elaborazione A.A. 2007/2008 91


Architettura a Microkernel (Client/Server)
Applicazione Applicazione Applicazione
(client) (client) (client)

Memory Network
File server
server server

User mode
Kernel mode
Microkernel

Controllers

Chiamata
Risposta
Sistemi di Elaborazione A.A. 2007/2008 92
Windows NT

Sistemi di Elaborazione A.A. 2007/2008 93


Symbian

Symbian adotta una architettura a microkernel


 È ad oggetti: invece di creare descrittori delle risorse vengono
create istanze di classi opportune e le system call invocano i
metodi di tali istanze
 È multitask e multithread
 Struttura:
• nanokernel - lavora in kernel mode – si occupa di sincronizzazione
e scheduling delle operazioni
• microkernel – lavora in kernel mode – si occupa di gestione dei
thread, scheduling dei processi, context switching, gestione della
memoria, caricamento delle librerie, sincronizzazione di oggetti e
comunicazione tra processi
• server layer – lavora in user mode – si occupa di gestione del
display, delle socket, …
• user-mode applications – lavora in user mode – sono le
applicazioni utente

Sistemi di Elaborazione A.A. 2007/2008 94


Symbian
Applicazione Applicazione Applicazione
(client) (client) (client)

etel esock Wserv

User mode
Kernel mode
Microkernel
Nanokernel

Controllers

Sistemi di Elaborazione A.A. 2007/2008 95


Architettura Ibrida
 Le architetture a microkernel sono state ritenute da
Linus Torvalds e da Ken Thompson inutilmente
troppo complicate (memorabile la disputa con
Andrew Tanenbaum nel 1992).

 È stata proposta da Linus Torvalds una architettura a


metà strada tra l’architettura monolitica e quella
stratificata.

Sistemi di Elaborazione A.A. 2007/2008 96


Linux

Linux (scritto da Linus Torvalds) adotta una architettura


ibrida
 adotta una architettura monolitica
 adotta i moduli
• così non si deve ricompilare il kernel ogni volta che si
aggiunge un driver o una nuova funzionalità
• basta caricare il modulo e linkarlo dinamicamente per
aggiungere una nuova funzionalità
• il modulo è software che gira in modalità kernel, se contiene
degli errori può danneggiare il kernel (il sistema si può
bloccare)

Sistemi di Elaborazione A.A. 2007/2008 97


Linux
 Come in gran parte delle implementazioni di Unix,
Linux ha tre componenti principali:
• Kernel
• System libraries
• System utilities

Sistemi di Elaborazione A.A. 2007/2008 98


Linux
 Il kernel
• Realizza tutte le funzioni del sistema operativo e serve per
isolare il resto del sistema dalle caratteristiche dell’hardware
• Viene eseguito in kernel mode ed ha accesso a tutte le
risorse fisiche del sistema
• Tutto il codice del kernel e le strutture dati sono mantenuti
nello stesso spazio degli indirizzi
 Le librerie di sistema
• Definiscono un insieme standard di funzioni attraverso le
quali le applicazioni interagiscono con il kernel
• Vengono eseguite in user mode
 Le system utilities
• Eseguono dei compiti di gestione specializzati
• Vengono eseguite in user mode

Sistemi di Elaborazione A.A. 2007/2008 99


Linux
 I moduli del kernel
• Sono sezioni del kernel che possono essere compilate,
caricate e scaricate in modo indipendente dal resto del
kernel.
• Un modulo del kernel tipicamente serve per realizzare un
driver di un dispositivo, un file system o un protocollo di rete.
• Questo permette a terze parti di distribuire driver o file
system che non possono essere distribuiti con licenza GPL.
• Questo permette a linux di essere configurato con un kernel
minimo, senza moduli esterni.

Sistemi di Elaborazione A.A. 2007/2008 100


Architettura a Macchine Virtuali
 Una macchina virtuale porta alle estreme conseguenze
l’approccio stratificato. Tratta l’hardware ed il kernel del SO
come facenti parte entrambi dell’hardware.
 Una macchina virtuale non offre alcuna funzionalità aggiuntiva,
ma fornisce una interfaccia identica all’hardware sottostante
 In questo modo il SO crea l’illusione ad ogni processo di avere a
sua completa disposizione un proprio processore con la sua
memoria
 Le risorse del computer fisico sono condivise per creare le
macchine virtuali.
• Lo scheduling della CPU crea l’illusione per l’utente di avere un
processore a sua completa disposizione.
• Lo spooling ed il file system creano l’illusione per l’utente di avere a
propria completa disposizione sia la stampante sia l’unità a disco.
• ....

Sistemi di Elaborazione A.A. 2007/2008 101


Architettura a Macchine Virtuali

Non-virtual Machine Virtual Machine

Sistemi di Elaborazione A.A. 2007/2008 102


Architettura a Macchine Virtuali
Vantaggi e Svantaggi
 Il concetto di macchina virtuale fornisce una completa
protezione alle risorse del sistema, infatti ogni macchina
virtuale è isolata dalle altre. Questo isolamento non
permette però di condividere le risorse (si pensi al disco).
 Una macchina virtuale è il veicolo ideale per la ricerca e
lo sviluppo di nuovi SO. Infatti lo sviluppo viene fatto sulla
macchina virtuale e questo non danneggia il normale
funzionamento della macchina.
 Una macchina virtuale è difficile da realizza a causa della
difficoltà nel fornire un esatto duplicato della macchina
sottostante.
 Il concetto di macchina virtuale è ritornato di moda
recentemente per risolvere i problemi di interoperabilità
• VMware (http://www.vmware.com/)
• la macchina virtuale di Java

Sistemi di Elaborazione A.A. 2007/2008 103


Java Virtual Machine
 I programmi compilati Java sono dei bytecode indipendenti dalla
piattaforma e possono essere eseguiti da una Java Virtual
Machine (JVM).
 JVM consiste in
- un class loader
- un class verifier
- un interprete
 I compilatori Just-In-Time (JIT) aumentano le prestazioni

Sistemi di Elaborazione A.A. 2007/2008 104


Java Virtual Machine

Sistemi di Elaborazione A.A. 2007/2008 105


Processi e Scheduling
 Processi e Thread
• I processi e le operazioni sui processi
• I thread e le operazioni sui thread
• I processi e i thread Linux
• I processi e i thread Symbian
 Scheduling dei processi
• Criteri di scheduling
• Algoritmi di scheduling
 FCFS
 SJF
 Priorità
 RR
 Multilevel queue
• Lo scheduling in Linux
• Lo scheduling in Symbian

Sistemi di Elaborazione A.A. 2007/2008 1


Processo
Processo = Programma in esecuzione.

Formalmente:
P = (C , S)
 P: processo
 C : codice eseguibile
 S : stato dell’esecuzione
fanno parte dello stato di esecuzione di un processo:
• program counter
• altri registri della CPU
• stato del processo
• stack
• data section
• lista dei file aperti
• ….

Sistemi di Elaborazione A.A. 2007/2008 2


Diagramma di Stato di un Processo

Sistemi di Elaborazione A.A. 2007/2008 3


Process Control Block (PCB)
o descrittore di processo
Le informazioni relative ad un processo (il suo stato di
esecuzione) sono contenute in una struttura dati apposita.
 Stato
 Program counter
 Registri della CPU
 Informazioni sullo scheduling CPU
 Informazioni sulla gestione della memoria
 Informazioni sullo stato dell’I/O
 Informazioni contabili

Sistemi di Elaborazione A.A. 2007/2008 4


Process Control Block (PCB)

Sistemi di Elaborazione A.A. 2007/2008 5


Switch della CPU tra i Processi

 Context-switch produce overhead.


 Il tempo di switch dipende dal supporto hardware a disposizione.
Sistemi di Elaborazione A.A. 2007/2008 6
Operazioni su Processi: Creazione
Il processo è un tipo di dato astratto sul quale sono state definite
alcune operazioni fondamentali, la prima è quella di creazione.

 Un processo padre può creare dei nuovi processi che vengono


detti processi figli che a loro volta possono creare altri processi,
formando un albero dei processi.
 Condivisione risorse
• Genitore e figli condividono tutte le risorse.
• I figli condividono un sottoinsieme delle risorse del genitore.
• Genitore e figli NON condividono risorse.
 Esecuzione
• Genitore e figli vengono eseguiti concorrentemente.
• Il Genitore attende che tutti o alcuni figli terminino.
 Spazio degli indirizzi
• Il figlio è un duplicato del genitore.
• Nel figlio viene caricato un programma (eventualmente diverso da
quello del genitore).

Sistemi di Elaborazione A.A. 2007/2008 7


Albero dei Processi in Unix
 In UNIX:
• La system call fork crea un nuovo processo
• La system call exec sostituisce lo spazio di memoria corrente del
processo con un nuovo programma.

Sistemi di Elaborazione A.A. 2007/2008 8


Operazioni su Processi: Terminazione
 Un processo esegue l’ultima istruzione e chiede al SO di essere
cancellato (exit).
• Può riportare alcuni dati al processo genitore che li riceve con una
istruzione (wait).
• Tutte le risorse del processo sono deallocate dal SO.
 Un genitore può terminare i processi figli (abort) per diverse
ragioni:
• Il figlio ha ecceduto le risorse allocate
• Il compito assegnato al figlio non è più necessario
• Il genitore stesso deve terminare la sua esecuzione
 e il SO non permette ai figli di continuare dopo la terminazione
dei padri.
 Terminazione a cascata.

Sistemi di Elaborazione A.A. 2007/2008 9


Esempio
#include <stdio.h>
void main (int argc, char *argv[])
{
pid = fork(); /* genera nuovo processo */
if (pid < 0) { /* errore */
fprintf(stderr,“creazione nuovo processo fallita”);
exit(-1);
}
else if (pid == 0) { /* processo figlio */
execlp(“/bin/ls”, “ls”, NULL);
}
else { /* processo padre */
wait( NULL); /* attende terminazione figlio */
printf(“il processo figlio ha terminato”);
exit(0);
}
}

Sistemi di Elaborazione A.A. 2007/2008 10


Thread

Processo a thread singolo Processo multithread


Benefici: • Prontezza
• Condivisione delle risorse
• Economicità
• Utilizzazione di architetture multiprocessore

Sistemi di Elaborazione A.A. 2007/2008 11


Thread
Lo spazio di indirizzamento è condiviso (viene usata la stessa
coppia di registri “base e limite” per tutti i thread di un processo).

Ogni thread tuttavia ha un suo stato (ready, running, waiting), i suoi


registri di CPU (stato della computazione), incluso il program
counter, stack pointer, ecc., il suo stack.

NON VI È PROTEZIONE FRA THREAD:


i thread si potrebbero “pasticciare” i dati
(per esempio quelli sullo stack) a vicenda...

Sistemi di Elaborazione A.A. 2007/2008 12


Thread
 Thread a livello utente – i thread sono gestiti da una libreria a
livello utente. Esempi:
- POSIX Pthreads
- Mach C-threads
- Solaris threads
 Thread a livello kernel – le funzionalità dei thread sono messe a
disposizione e gestite direttamente dal kernel. Esempi:
- Windows 95/98/NT/2000
- Solaris
- Tru64 UNIX
- BeOS
- Linux
- Symbian
Modelli di Multithreading:  Molti-a-Uno
 Uno-a-Uno
 Molti-a-Molti
Sistemi di Elaborazione A.A. 2007/2008 13
Modello Molti-a-Uno
 Molti thread a livello utente sono mappati ad un singolo
thread a livello kernel.
 Viene usato nei sistemi che non forniscono thread a livello
utente.

Sistemi di Elaborazione A.A. 2007/2008 14


Molti-a-Uno
Vantaggi Svantaggi
• Tempo di context switch (fra • È complesso fare in modo che
thread di uno stesso processo) quando un thread ha bisogno di
molto basso (non c’è il passaggio eseguire una system call bloccante
a kernel mode) non vengano bloccati anche gli altri
• Puo' essere implementato al di thread nello stesso processo
sopra di qualsiasi sistema (perché il S.O. memorizza nel PCB
operativo del processo “stato = bloccato” e
non gli assegna tempo di CPU
finché la system call bloccante non
viene servita)
Applicazione Multithreaded • Solo un thread running per
thread_create processo anche se il sistema

Ambiente Run Time


è multiprocessore
tid
per la gestione dei thread •Potrebbe non essere banale gestire
tabella dei thread i thread in time sharing (quindi
occorre basarsi sulla “buona
Sistema Operativo
volontà” dei thread che
tabella dei processi periodicamente cedono il passo con
una esplicita richiesta di
thread_yield al RTE)
Sistemi di Elaborazione A.A. 2007/2008 15
Modello Uno-a-Uno
 Ogni thread a livello utente si mappa ad un thread a livello
kernel. Esempi:
- Windows 95 in poi
- OS/2

Sistemi di Elaborazione A.A. 2007/2008 16


Uno-a-Uno
Vantaggi Svantaggi

• In un sistema con molte CPU è • Il tempo di context switch fra


possibile avere più di un thread thread di uno stesso processo,
running per processo anche se meno
• La gestione di system call costoso di un context switch fra
bloccanti non pone alcun problema: processi diversi, è comunque
il sistema è sempre in grado di costoso perché
schedulare i thread pronti ad richiede il passaggio a modalità
eseguire anche se uno o più altri kernel
thread nello stesso processo sono
bloccati in attesa di un evento. • Il sistema operativo deve
predisporre strutture dati per
Applicazione Multithreaded gestire tutti i thread:
thread_create questo pone limitazioni sul numero
massimo di thread che possono
Sistema Operativo tid essere attivati all'interno di
ciascun processo e
tabella dei processi
e dei threads complessivamente nel sistema

Sistemi di Elaborazione A.A. 2007/2008 17


Modello Molti-a-Molti
 Diversi thread a livello utente sono mappati a diversi thread a
livello kernel.
 Questo permette al SO di creare un numero sufficiente di
thread a livello kernel.
• Windows NT/2000 con il ThreadFiber package
• Solaris 2

Sistemi di Elaborazione A.A. 2007/2008 18


Molti-a-Molti
Applicazione Multithreaded
user_thread_create

Ambiente Run Time


utid
per la gestione dei thread
tabella dei thread utente kernel_thread_create

Sistema Operativo ktid

tabella dei processi


e dei kernel threads

L’RTE potrebbe richiedere un nuovo kernel thread ogni volta che vi


è almeno uno user thread in stato ready ma tutti gli altri kernel
thread assegnati al processo sono waiting a causa di qualche
system call bloccante. Parte dei context switch avverrebbe ancora
all’interno dell’RTE (in user mode).

Sistemi di Elaborazione A.A. 2007/2008 19


Molti-a-Molti
Vantaggi Svantaggi
• In sistemi multi-CPU è possibile • Il modello è più complicato e
avere piu' thread running per richiede che lo scheduler (del
processo S.O.) della CPU e lo scheduler dei
• Il context switch fra thread a livello threads a livello utente (parte del
utente avviene in modalità utente, a supporto run-time del
cura del sistema run-time; Il SO thread package) collaborino.
effettua il context switch di kernel • Le priorità associate ai threads
threads, che risulterà un po' meno potrebbero non essere rispettate
costoso nel caso di context switch dallo scheduler della CPU, che
tra kernel threads associati ad uno vede solo i threads associati alle
stesso processo perchè queste kernel entities.
condivideranno lo spazio di indirizzi, • Il SO deve predisporre strutture
e quindi la tabella delle pagine) dati per gestire i kernel thread:
• La gestione di system call dato che queste dovrebbero
bloccanti non pone grossi problema: essere in numero decisamente
il SO e' in grado di schedulare i inferiore al numero di thread
kernel thread pronti di un dato utente ci sono meno problemi di
processo anche se una o piu' altre allocazione di risorse rispetto allo
kernel thread dello stesso processo schema con soli thread a livello
sono bloccati in attesa di un evento. kernel.
Sistemi di Elaborazione A.A. 2007/2008 20
Pthreads
 PTHREADS è una API standard (è parte dello standard POSIX -
IEEE 1003.1c) per la creazione e la sincronizzazione dei thread.
 La API specifica il comportomanto della libreria di thread, la
realizzazione è lasciata allo sviluppatore della libreria.
 È diffusa soprattutto nei SO della famiglia UNIX.

Sistemi di Elaborazione A.A. 2007/2008 21


Esempio
#include <pthread.h>
#include <stdio.h>
int somma; /* questo dato è condiviso dai thread */
void *runner(void *param) /* il thread */
void main (int argc, char *argv[])
{
pthread_t tid; /* identificatore del thread */
pthread_attr_t attr; /* attributi del thread */
if (arcgc != 2) || (atoi(argv[1]) < 0) /* errore */
exit(-1);
else {
/* reperisce gli attributi predefiniti */
pthread_attr_init(&attr);
/* creazione del thread */
pthread_create(&tid,&attr,runner,argv[1]);
/* attende la terminazione del thread */
pthread_join(tid,NULL);
}
}

Sistemi di Elaborazione A.A. 2007/2008 22


Esempio
/* codice del thread */
void *runner(void *param)
{
int sup, i;
sup = atoi(param);
somma = 0;
if (sup > 0) {
for (i = 1; i <= sup; i++)
somma += 1;
}
pthread_exit(0); /* terminazione del thread */
}

Sistemi di Elaborazione A.A. 2007/2008 23


I Task di Linux
 Linux utilizza la stessa rappresentazione interna sia per I
processi sia per i thread che in entrambi i casi vengono chiamati
task.
 L’unica differenza è che un thread è un task che condivide lo
stesso spazio degli indirizzi con il genitore mentre il processo ha
uno spazio degli indirizzi diverso.
 Questa differenza viene indicata in fase di creazione del task
effettuando una system call opportuna
• fork crea un nuovo task con un suo nuovo contesto
• clone crea un nuovo task con una sua identità propria, ma con le
strutture dati condivise con il suo genitore
 Le proprietà di un task linux possono essere classificate in tre
categorie:
• Identità del task
• Ambiente del task
• Contesto del task

Sistemi di Elaborazione A.A. 2007/2008 24


I Task di Linux
Identità di un Task
 Process ID (PID). Identifica in modo univoco un task. Per
esempio, se una applicazione deve effettuare una system call
per inviare un messaggio, modificare o attendere un task, il
parametro da passare al SO è il PID del task.
 Credential. Ad ogni task viene associato uno user ID ed uno o
più group ID. Serve per determinare i diritti di accesso del task a
risorse e a file.
 Personality. Questa caratteristica non di trova nei tradizionali
sistemi Unix. Sotto Linux, ad ogni task viene associato un
personality ID. Modifica la semantica di certe system call.
Principalmente viene utilizzato da librerie di emulazione per
rendere le system call compatibili con determinate
caratteristiche di Unix.

Sistemi di Elaborazione A.A. 2007/2008 25


I Task di Linux
Ambiente di un task
 Ogni task eredita dal genitore due vettori:
• Il vettore degli argomenti contiene tutti gli argomenti presenti nella
linea di comando per avviare il programma. Convenzionalmente il
primo argomento è il nome del programma stesso.
Questo è uno strumento per parametrizzare l’esecuzione dei
programmi.
• Il vettore dell’ambiente è una lista di coppie del tipo
“NAME=VALUE”
che associa ad ogni variabile di ambiente un valore.
In questo modo ogni task può avere il SO configurato ad hoc,
invece di avere una configurazione unica per tutti i task.
• Inoltre le variabili possono essere utilizzate per passare
informazioni da un task ad un altro.
 Far ereditare ad un task l’ambiente del task genitore è un modo
per far passare informazioni dal genitore al figlio.

Sistemi di Elaborazione A.A. 2007/2008 26


I Processi Linux
Contesto di un task
Lo stato dell’esecuzione di un task (le informazioni contenute in
un descrittore di task).
 Lo scheduling context è la parte più importante. Sono le
informazioni necessarie allo scheduler per sospendere e
riattivare un task.
 Informazioni contabili su tutte le risorse usate attualmente ed
utilizzate fino a quel momento dal task.
 La tabella dei file aperti.
 La signal-handler table indica quali routine (appartenenti allo
spazio degli indirizzi del task) devono essere chiamate quando
al task arriva uno specifico segnale (signal).
 La virtual-memory context indica l’intero contenuto dello
spazio degli indirizzi del task.

Sistemi di Elaborazione A.A. 2007/2008 27


I Processi Symbian
 Un processo in Symbian OS è un insieme di thread che sono in
esecuzione concorrentemente.
 Ogni processo ha un proprio spazio degli indirizzi privato.
 Un processo può creare un altro processo.
 Ogni processo ha una sua priorità.
 Un descrittore di processo è un oggetto del kernel, al quale si
può accedere attraverso un handle handle (l’interfaccia è fornita
da RProcess).

Sistemi di Elaborazione A.A. 2007/2008 28


I Thread Symbian
 Un thread in Symbian OS è l’unità di esecuzione.
 Ogni processo ha un thread primario che viene creato al
momento della inizializzazione del processo stesso.
 Un thread può creare, sospendere, riattivare, eliminare un altro
thread
 Un thread può passare dati ad altri thread sia dello stesso
processo sia di un altro processo.
 Ogni thread ha una sua priorità:
• di default ogni thread riceve la priorità del processo a cui
appartiene,
• tale priorità si può modificare.
 Un descrittore di thread è un oggetto del kernel, al quale si può
accedere attraverso un handle (l’interfaccia è fornita da
RThread).

Sistemi di Elaborazione A.A. 2007/2008 29


Gli Active Object Symbian
 Un active object in Symbian OS permette la programmazione ad
eventi (orientata agli oggetti).
 Ogni thread ha un insieme di active object.
 Ogni active object è una classe collegata ad uno specifico tipo
di evento: bisogna indicare quale è l’evento e quale è il metodo
di risposta all’evento.
 Ogni evento ha la sua priorità.
 Quando si verifica un determinato evento, viene creata una
istanza dell’active object corrispondente.
 Se un evento si verifica quando un altro active object è già
attivo, viene messo in coda anche se ha una priorità più alta.

Sistemi di Elaborazione A.A. 2007/2008 30


Processi e Scheduling
 Processi e Thread
 I processi e le operazioni sui processi
 I thread e le operazioni sui thread
 I processi e i thread Linux
 I processi e i thread Symbian
 Scheduling dei processi
• Criteri di scheduling
• Algoritmi di scheduling
 FCFS
 SJF
 Priorità
 RR
 Multilevel queue
• Lo scheduling in Linux
• Lo scheduling in Symbian

Sistemi di Elaborazione A.A. 2007/2008 31


Code di Scheduling dei Processi

Job Queue
Esiste inoltre una coda di tutti
i processi del sistema

Sistemi di Elaborazione A.A. 2007/2008 32


Scheduling dei Processi

Sistemi di Elaborazione A.A. 2007/2008 33


Sequenza di CPU Burst e I/O Burst
L’esecuzione di un processo consiste di un ciclo di esecuzione
nella CPU e di attesa dell’I/O.

Sistemi di Elaborazione A.A. 2007/2008 34


Distribuzione dei CPU-burst

Sistemi di Elaborazione A.A. 2007/2008 35


CPU-bound e I/O-bound
 I processi possono essere:
• Processi I/O-bound – impiegano più tempo per l’I/O che per le
elaborazioni, hanno molti CPU bursts di breve durata.
• Processi CPU-bound – impiegano più tempo nelle elaborazioni che
per l’I/O, hanno pochi CPU bursts ma di lunga durata.

Sistemi di Elaborazione A.A. 2007/2008 36


Scheduler
 Scheduler a lungo termine (o job scheduler) – seleziona tra i
processi in stato di new quelli da caricare in memoria.
• E’ invocato di rado (secondi, minuti) ⇒ (può essere lento).
• Deve massimizzare il grado di multiprogrammazione senza far
degradare le prestazioni del sistema.

 Scheduler a medio termine – seleziona tra i processi “scaricati”


dalla memoria (swapped-out) quelli da caricare (swap in)
nuovamente in memoria.
• E’ invocato di rado (secondi) ⇒ (può essere lento).
• Deve evitare il degrado delle prestazioni del sistema.

 Scheduler a breve termine (o CPU scheduler) – seleziona tra i


processi presenti nella ready queue il processo a cui allocare la
CPU.
• E’ invocato di frequente (millisecondi) ⇒ deve essere molto veloce.
• Deve massimizzare l’utilizzo della CPU

Sistemi di Elaborazione A.A. 2007/2008 37


Job Scheduler
• Controlla il grado di multiprogrammazione (possono essere caricati
nuovi processi in memoria senza provocare il trashing?).
• Se sì, seleziona i processi che devono essere caricati in memoria.
• I descrittori di tali processi vengono inseriti nella ready queue.
• Lo stato di tali processi passa da new a ready.

Sistemi di Elaborazione A.A. 2007/2008 38


Middle-term Scheduler
• Controlla il grado di multiprogrammazione ed il rischio di degrado
delle prestazioni del sistema (trashing).
• Se il grado di multiprogrammazione è troppo elevato (il sistema
rischia il trashing), seleziona i processi da scaricare (swap out).
• Lo stato di tali processi passa a wait.
• Se il grado di multiprogrammazione è sufficientemente basso,
seleziona i processi swapped-out che devono essere caricati in
memoria (swap in).
• I descrittori di tali processi vengono inseriti nella ready queue.
• Lo stato di tali processi passa da wait a ready.

Sistemi di Elaborazione A.A. 2007/2008 39


CPU Scheduler
 Seleziona un processo tra quelli presenti in memoria che sono
pronti per l’esecuzione ed alloca la CPU a tale processo.
 Le decisioni riguardanti lo scheduling della CPU si possono
prendere nelle seguenti circostanze:
1. Un processo passa dallo stato di running allo stato di waiting.
2. Un processo passa dallo stato di running allo stato di ready.
3. Un processo passa dallo stato di waiting allo stato di ready.
4. Un processo termina.
 Scheduling senza diritto di prelazione (nonpreemptive) quando
si assegna la CPU ad un processo, questo rimane in possesso
della CPU fino a quando non la rilascia spontaneamente.
 Scheduling con diritto di prelazione (preemptive) quando il SO
può obbligare un processo a rilasciare la CPU anche se il
processo ne ha ancora bisogno.

Sistemi di Elaborazione A.A. 2007/2008 40


Dispatcher
 Dispatcher assegna il controllo della CPU al processo
selezionato dal short-term scheduler; questo comporta:
• Commutazione di contesto (switching context)
• Passaggio da modalità kernel a modalità utente
• Salto alla locazione di memoria appropriata per far ripartire il
programma utente
 Latenza di Dispatch – il tempo necessario a fermare un
processo e a far partire un altro.

Sistemi di Elaborazione A.A. 2007/2008 41


Criteri di Scheduling
 Utilizzo della CPU – tenere la CPU occupata il più
possibile da massimizzare
 Produttività (Throughput) – numero di processi
che completano la loro esecuzione per
unità di tempo da massimizzare
 Tempo di Completamento (Turnaround Time) –
il tempo di esecuzione di uno specifico
processo da minimizzare
 Tempo di attesa – quanto tempo in totale un processo è
rimasto nella coda di ready da minimizzare
 Tempo di risposta – quanto tempo passa dal momento in
cui la richiesta è stata sottomessa al momento in cui
viene prodotta la prima risposta (non il suo output) – per i
sistemi time-sharing da minimizzare

Sistemi di Elaborazione A.A. 2007/2008 42


First-Come, First-Served (FCFS)

Process Burst Time


P1 24
P2 3
P3 3
 Supponiamo che l’ordine di arrivo dei processi sia: P1 , P2 , P3
Il diagramma di Gantt risulta essere il seguente:

P1 P2 P3

0 24 27 30
 Tempi di attesa: P1 = 0; P2 = 24; P3 = 27
 Tempo medio di attesa: (0 + 24 + 27)/3 = 17

Sistemi di Elaborazione A.A. 2007/2008 43


FCFS (Cont.)
Supponiamo che l’ordine di arrivo sia invece il seguente:
P2 , P3 , P1 .
 Il diagramma di Gantt diventa:

P2 P3 P1

0 3 6 30
 Tempi di attesa: P1 = 6; P2 = 0; P3 = 3
 Tempo medio di attesa: (6 + 0 + 3)/3 = 3
 Il miglioramento è considerevole.
 Effetto convoglio: I processi brevi si accodano ai processi
lunghi.

Sistemi di Elaborazione A.A. 2007/2008 44


Shortest-Job-First (SJR)
 Questo algoritmo associa a ogni processo la lunghezza del CPU
burst successivo.
 La CPU viene assegnata al processo con il CPU burst
successivo più breve.
 Due schemi:
• Senza prelazione – il processo mantiene il possesso della CPU fino
a quando non completa il CPU burst attuale.
• Con prelazione – se arriva un nuovo processo con un CPU burst
inferiore del CPU burst che resta al processo attualmente in
esecuzione. Questo schema viene chiamato anche
Shortest-Remaining-Time-First (SRTF).
 SJF è ottimale – minimizza il tempo medio di attesa.

Sistemi di Elaborazione A.A. 2007/2008 45


Non-Preemptive SJF
Process Arrival Time Burst Time
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
 SJF (non-preemptive)

P1 P3 P2 P4

0 3 7 8 12 16

 Tempo medio di attesa = (0 + 6 + 3 + 7)/4 = 4.25

Sistemi di Elaborazione A.A. 2007/2008 46


Preemptive SJF
Process Arrival Time Burst Time
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
 SJF (preemptive)

P1 P2 P3 P2 P4 P1

0 2 4 5 7 11 16

 Tempo medio di attesa =


( ((0 - 0)+(11 – 2)) + ((2 - 2)+(5 - 4)) + (4 – 4) + (7 – 5) ) / 4 =
P1 P2 P3 P4
(9 + 1 + 0 + 2)/4 = 3

Sistemi di Elaborazione A.A. 2007/2008 47


Lunghezza del CPU Burst Successivo
 Può essere solo stimata.
 Si può utilizzare la media esponenziale dei CPU burts
precedenti.

1. tn = lunghezza effettiva dell’n-esimo CPU burst


2. τn = lunghezza stimata dell’n-esimo CPU burst
3. α = peso, dove 0 ≤ α ≤ 1
4. c = stima iniziale del primo CPU burst

τn+1 = α tn + (1 – α) τn
τ1 = c

Sistemi di Elaborazione A.A. 2007/2008 48


Lunghezza del CPU Burst Successivo

Sistemi di Elaborazione A.A. 2007/2008 49


Media Esponenziale
 α =0
• τn+1 = τn = … = τ1
• La storia recente del processo non conta.
 α =1
• τn+1 = tn
• Conta solo l’ultimo CPU burst.
 Se espandiamo la formula otteniamo:

τn+1 = α tn+(1 - α) α tn -1 + …
+(1 - α )j α tn - j + …
+(1 - α )n τ1
n-1
= Σ
j=0
(1 - α )j α tn - j + (1 - α )n τ1

 Siccome sia α sia (1 - α) sono minori o uguali ad uno, ogni


termine ha un peso minore dei termini precedenti.

Sistemi di Elaborazione A.A. 2007/2008 50


Scheduling per Priorità
 Ad ogni processo viene associata una priorità (un numero
intero)
 La CPU viene allocata al processo con la priorità più alta
(numero piccolo ≡ alta priorità).
• Con prelazione
• Senza prelazione
 SJF è uno scheduling per priorità dove la priorità è la lunghezza
del CPU burst successivo.
 Problema ≡ Starvation – processi con bassi priorità potrebbero
non ricevere mai la CPU.
 Soluzione ≡ Aging – con il passare del tempo nella coda di
ready, la priorità viene aumentata.

Sistemi di Elaborazione A.A. 2007/2008 51


Round Robin (RR)
 Ogni processo riceve la CPU per una piccola unità di tempo
(quanto di tempo), di solito 10-100 millisecondi. Allo scadere di
questo quanto di tempo il processo è prelazionato ed aggiunto
alla coda dei processi ready.
 La coda dei processi di ready viene gestita come una coda
(FIFO) circolare.
 Se ci sono n processi nella coda di ready e il quanto di tempo è
q, allora ogni processo non aspetta più di (n-1)q unità di tempo.
 Le prestazioni dipendono da q
• q molto grande ⇒ RR diventa FCFS
• q molto piccolo ⇒ q deve essere molto più grande del tempo di
commutazione di contesto, altrimenti l’overhead è troppo elevato.

Sistemi di Elaborazione A.A. 2007/2008 52


RR con Quanto di Tempo = 20

Process Burst Time


P1 53
P2 17
P3 68
P4 24
 Il diagramma di Gantt è il seguente:

P1 P2 P3 P4 P1 P3 P4 P1 P3 P3

0 20 37 57 77 97 117 121 134 154 162

 Tipicamente ha un tempo medio di completamento


maggiore di SJF, ma ha un tempo di risposta migliore.

Sistemi di Elaborazione A.A. 2007/2008 53


Quanto di Tempo e Numero di Commutazioni

Sistemi di Elaborazione A.A. 2007/2008 54


Tempo di Completamento e Quanto di Tempo

Sistemi di Elaborazione A.A. 2007/2008 55


Multilevel Queue
 Questo algoritmo di scheduling suddivide la coda di ready in
diverse code distinte. Ad esempio:
• Processi foreground (interattivi)
• Processi background (batch)
 Ogni coda adotta un proprio algoritmo di scheduling, ad
esempio:
• foreground – RR
• background – FCFS
 È inoltre necessario avere uno scheduling tra le code.
• Priorità fissa con prelazione; (per esempio vengono serviti prima
tutti i processi foreground e poi quelli background). Possibilità di
starvation.
• Time slice – ogni coda ha a disposizione una certa quantità di
tempo di CPU per i propri processi: ad esempio
 80% ai processi foreground in RR
 20% ai processi background in FCFS

Sistemi di Elaborazione A.A. 2007/2008 56


Multilevel Queue

Sistemi di Elaborazione A.A. 2007/2008 57


Multilevel Feedback Queue
 Un processo può passare da una coda ad un’altra.
 Ad esempio un processo che usa troppo la CPU si può spostare
in una coda con priorità minore. Questo schema mantiene i
processi con prevalenza di I/O e i processi interattivi nelle code
con priorità elevata.
 Analogamente un processo che attende da troppo tempo si può
spostare in una coda con priorità maggiore (ovvero questo è un
modo per implementare l’aging).

Sistemi di Elaborazione A.A. 2007/2008 58


Multilevel Feedback Queue
 Scheduling
• Un nuovo processo entra nella coda Q0. Quando ottiene la CPU,
riceve 8 millisecondi. Se non finisce in 8 millisecondi, il processo
viene spostato nella coda Q1.
• Nella coda Q1, quando il processo ottiene di nuovo la CPU, riceve
16 millisecondi. Se ancora non bastano, al termine del quanto di
tempo il processo è spostato in Q2.
• Nella coda Q2, quando il processo ottiene di nuovo la CPU, va
avanti fino al suo completamento o a una sua sospensione.

Sistemi di Elaborazione A.A. 2007/2008 59


Scheduling in Linux
 Contrariamente a quello che avviene in altri SO, in Linux lo
scheduling coinvolge sia i task che lavorano in modalità utente
sia i task che lavorano in modalità kernel.
 La richiesta di una esecuzione in modalità kernel può avvenire
in due modi diversi:
• Un programma in esecuzione può richiedere l’esecuzione di un
task del kernel esplicitamente (tramite una system call) o
implicitamente (quando si verifica un errore, ad esempio un page
fault).
• Un driver di un dispositivo può richiedere l’esecuzione di un task
del kernel quando invia una interruzione hardware (che ha come
effetto l’esecuzione del kernel-defined handler per quell’interrupt).

Sistemi di Elaborazione A.A. 2007/2008 60


Scheduling in Linux
Scheduling dei Task
 Linux usa due algoritmi di scheduling:
• time-sharing quando è più importante l’equa distribuzione del tempo
• real-time quando le priorità sono più importanti dell’equità
 L’identità di un task contiene anche la classe di scheduling,
attraverso la quale si determina quale algoritmo applicare. Tali
classi sono:
• time-sharing
• real-time RR
• real-time FCFS:
 Un task in classe real-time ha priorità statica e goodness più alte
rispetto ad un task in classe time-sharing
 Lo scheduler entra in azione
• quando un task cede spontaneamente la CPU
• quando il quanto di tempo riservato ad un task scade
• quando un nuovo task entra nella coda dei task pronti e la sua
priorità è più alta della priorità dell'attuale task in esecuzione

Sistemi di Elaborazione A.A. 2007/2008 61


Scheduling in Linux
Scheduling Time-Sharing
 Per i task time-sharing, Linux usa un algoritmo per priorità basato
sui crediti (RR con quanto dinamico).
• Ogni task ha:
 rt_priorità = 0
 ts_priorità0 = 20 – nice dove –19 ≤ nice ≤ 20
 crediti0 = priorità / 4 di fatto è il suo quanto di tempo
 goodnessn = ts_prioritàn + creditin
• Quando occorre assegnare la CPU, tra i task time-sharing la scelta
cade sul task che ha il maggior numero di crediti.
• Ogni volta che si ha una interruzione dal timer, il task in esecuzione
perde un credito.
• Quando i suoi crediti arrivano a zero, viene scelto un altro task.
• Quando tutti i task hanno credito zero, vengono ricalcolati i crediti di
tutti i task del sistema (non solo quelli ready) con la formula:
 creditin+1 = (creditin / 2) + (ts_prioritàn / 4)
• Questo sistema privilegia i task interattivi (I/O-bound). Infatti I task
che restano gran parte del tempo in stato di wait non arrivano mai a
zero con i loro crediti, anzi i loro crediti aumentano ad ogni ricalcolo.

Sistemi di Elaborazione A.A. 2007/2008 62


Scheduling in Linux
Scheduling Real-Time
 È uno scheduling real-time debole
• Ogni task ha:
 1 ≤ rt_priorità ≤ 99
 ts_priorità0 non definita
 crediti0 non definita
 goodness = rt_priorità + 1000
• Lo scheduler esegue i task con la rt_priorità più alta, a parità di
rt_priorità quelli che attendono da più tempo.
• I task in classe FIFO continuano fino a quando non rilasciano la
CPU spontaneamente o arriva un task con rt_priorità maggiore.
• I task in classe RR vengono interrotti allo scadere del loro quanto di
tempo e rimessi in coda oppure arriva un task con rt_priorità
maggiore.

Sistemi di Elaborazione A.A. 2007/2008 63


Scheduling in Symbian
Lo scheduler dei thread in Symbian OS è di tipo multilevel queue.
 Lo scheduling delle code è una variante soft real-time dello
scheduling per priorità con prelazione: scheduling statico
monotono.
• Ogni processo ha una deadline (scadenza) entro la quale deve
essere completato.
• I processi sono organizzati in modo da dare la priorità più alta ai
processi che hanno la scadenza più vicina.
• Lo scheduler gestisce 64 code.
• I thread hanno una priorità che può essere assoluta (non dipende da
quella del processo al quale appartengono) o relativa (è funzione
della priorità del processo).
• Quando arriva un thread con priorità più alta, toglie la CPU al thread
attualmente in stato di RUNNING.
 Lo scheduling dei thread di una coda è di tipo round robin.
 Lo scheduling degli active object è per priorità senza prelazione.
• Gli active object hanno un sistema di priorità diverso da quello di
processi e thread.

Sistemi di Elaborazione A.A. 2007/2008 64


Scheduling in Symbian
Priorità di processi e thread

970 Kernel supervisor


850 Real-time servers
750 File server
650 Window server
470 Comms server
500 absolute thread priority EPriorityAbsoluteHigh
450 Font & Bitmap server, high priority tasks
400 absolute thread priority EPriorityAbsoluteForeground
350 Normal process priority, foreground UI app, EPriorityForeground
300 absolute thread priority EPriorityAbsoluteBackground
250 Background UI app, low-priority threads
200 absolute thread priority EPriorityAbsoluteLow
150 background threads
100 absolute thread priority EPriorityAbsoluteVeryLow
0 Null (idle) thread – power saving

Sistemi di Elaborazione A.A. 2007/2008 65


Scheduling in Symbian
 Priorità relativa dei thread: process_priority + thread_priority_weighting
• un thread può variare la sua priorità rispetto a quella del processo
che l’ha generato di ± 10 o ± 20
• se viene modificata la priorità del processo di q, anche la priorità
del thread viene variata di q
• Esempio – processo con priorità pari a EPriorityForeground
370 EPriorityMuchMore
360 EPriorityMore
350 EPriorityNormal (default) thread_priority_weighting
340 EPriorityLess
330 EPriorityMuchLess
• Se la priorità del processo viene diminuita di 100, anche il thread
avrà la sua priorità diminuita di 100
 Priorità assoluta dei thread
• se a un thread assegniamo una priorità assoluta, questa non varia
al variare della priorità del processo
0 EPriorityNull
100 EPriorityAbsoluteVeryLow
200 EPriorityAbsoluteLow
300 EPriorityAbsoluteBackground
400 EPriorityAbsoluteForeground
500 EPriorityAbsoluteHigh
850 EPriorityRealTime
Sistemi di Elaborazione A.A. 2007/2008 66
Gestione della Memoria
 Introduzione
• Codice rilocabile
• Swapping
 Gestione della Memoria
• Allocazione contigua
• Paginazione
• Segmentazione
• Segmentazione con Paginazione
 Memoria Virtuale
• Paginazione su richiesta
• Algoritmi di sostituzione delle pagine: FIFO, Ottimale, LRU, Orologio
• Algoritmi di assegnazione dei frame liberi: Uniforme, Proporzionale,
per Priorità, basata sul Working Set, basata su Page Fault Rate
 Gestione della Memoria in Linux
• Memoria Fisica
• Memoria Virtuale

Sistemi di Elaborazione A.A. 2004/2005 1


Introduzione
 Un programma in genere risiede in un disco sotto forma di file
binario eseguibile.

 Il programma per essere eseguito deve essere caricato in


memoria ed inserito all’interno di un processo.

 Coda di Ingresso (input queue) – insieme di processi che


devono essere caricati in memoria per essere eseguiti (se è
presente lo scheduler a lungo termine, la coda viene gestita
dallo scheduler a lungo termine).

 I programmi utente passano attraverso diversi passi prima di


poter essere eseguiti.

Sistemi di Elaborazione A.A. 2004/2005 2


Codice Sorgente
Fasi di Elaborazione di un Programma
Compilatore
o Assembatore
compile time

Altri moduli
Modulo Oggetto
oggetto

Linker

Libreria di sistema Codice Eseguibile

Caricatore
(loader)
load time
dyn
Libreria di sistema ami
c linki
caricata ng
dinamicamente Processo
(immagine in run time
Sistemi di Elaborazione memoria)
A.A. 2004/2005 3
Binding di Istruzioni e Dati a Indirizzi di Memoria
Può avvenire in una qualsiasi delle seguenti fasi.
 Compilazione: Se è noto a priori dove il processo
risiederà in memoria, può essere generato un codice
assoluto, che contiene direttamente indirizzi assoluti; se
la locazione di inizio cambia, bisogna ricompilare il
programma. Un esempio sono i .com di MS-DOS
 Caricamento: Se dove il processo risiederà in memoria
NON è noto a priori, il compilatore genera un codice
rilocabile, che contiene indirizzi rilocabili. È compito del
caricatore fare il binding tra indirizzi rilocabili e gli indirizzi
assoluti (rilocazione statica).
 Esecuzione: Se durante l’esecuzione il processo può
essere spostato da un segmento di memoria ad un altro,
il binding deve essere ritardato fino al momento
dell’esecuzione (rilocazione dinamica). È necessario
dell’hardware di supporto per gestire questa situazione
(per esempio I registri base e limite). La maggior parte dei
SO d’uso generale impiega questo metodo

Sistemi di Elaborazione A.A. 2004/2005 4


Spazio di Indirizzi Logici e Fisici
 Per una corretta gestione della memoria abbiamo bisogno di
due tipi di spazio di indirizzi separati tra loro, anche se esiste un
legame che li unisce.
• Indirizzi Logici (Indirizzi Virtuali) – sono gli indirizzi generati dalla
CPU, cioè quelli che vengono messi in RIp, il registro indice della
CPU, e trasmessi attraverso il bus indirizzi.
• Indirizzi Fisici – sono gli indirizzi visti dalla unità di memoria, cioè
quelli che vengono messi in RIm, il registro indice della Memoria
(anche chiamato MAR – Memory Address Register).
 Indirizzi logici e fisici coincidono quando il binding viene fatto in
fase di compilazione o caricamento, sono diversi quando il
binding viene fatto in fase di esecuzione
 Il programma utente ha a che fare con gli indirizzi logici e non
vede mai gli indirizzi fisici.
 L’hardware che traduce gli indirizzi logici in fisici è il Memory
Management Unit (MMU).

Sistemi di Elaborazione A.A. 2004/2005 5


Memory-Management Unit (MMU)
• Usa il registro di rilocazione (al posto del registro base). Il suo valore
viene sommato a tutti gli indirizzi generati dalla CPU.
• N.B. l’uso del registri base è diverso, infatti il registro base viene
confrontato con (e NON sommato a) l’indirizzo generato dalla CPU.

1000 14000

346 14346
1346
error

Sistemi di Elaborazione A.A. 2004/2005 6


Swapping (Avvicendamento)
 Un processo può che si trova in memoria centrale, può essere
temporaneamente trsferito nella memoria secondaria, per far posto in
memoria centrale ad un altro processo. Successivamente, quando
deve riprendere la sua esecuzione, viene riportato in memoria centrale.
 Il tempo di swapping è un fattore critico.

Sistemi di Elaborazione A.A. 2004/2005 7


Gestione della Memoria
 Introduzione
 Codice rilocabile
 Swapping
 Gestione della Memoria
• Allocazione contigua
• Paginazione
• Segmentazione
• Segmentazione con Paginazione
 Memoria Virtuale
• Paginazione su richiesta
• Algoritmi di sostituzione delle pagine: FIFO, Ottimale, LRU, Orologio
• Algoritmi di assegnazione dei frame liberi: Uniforme, Proporzionale,
per Priorità, basata sul Working Set, basata su Page Fault Rate
 Gestione della Memoria in Linux
• Memoria Fisica
• Memoria Virtuale

Sistemi di Elaborazione A.A. 2004/2005 8


Allocazione Contigua – Partizioni Fisse
 La memoria viene suddivisa in un certo numero di partizioni di
dimensione fissa.
 Ogni processo viene caricato in una partizione.
 Quando un processo termina l’esecuzione, libera una partizione
che può essere occupata da un altro processo in attesa nella
coda di ingresso (singola o multipla).
 Il grado di multiprogrammazione è limitato dal numero di
partizioni

Sistemi di Elaborazione A.A. 2004/2005 9


Allocazione Contigua – Partizioni Variabili
 All’inizio ci sono due partizioni, una allocata al SO e l’altra (il resto
della memoria) è libera.
 Il SO conserva in una tabella le partizioni libere (buchi) e le
partizioni allocate, ognuna con dimensioni diverse dalle altre.
 Quando arriva un processo, viene allocato in un buco abbastanza
grande da contenerlo. La parte di buco non utilizzata viene
lasciata come partizione libera per un altro processo.
OS OS OS OS

process 5 process 5 process 5 process 5

process 9 process 9

process 8 process 10

process 2 process 2 process 2 process 2

Sistemi di Elaborazione A.A. 2004/2005 10


Allocazione Contigua – Partizioni Variabili
Come soddisfare una richiesta di dimensione n avendo a
disposizione una lista di buchi.
 First-fit: Alloca il primo buco di dimensioni sufficienti.
 Best-fit: Alloca il buco più piccolo in grado di soddisfare
la richiesta; bisogna scandire l’intera lista (a meno che
non sia ordinata per dimensione). Produce le parti di
buco inutilizzate più piccole.
 Worst-fit: Alloca il buco più grande; bisogna scandire
l’intera lista (a meno che non sia ordinata per
dimensione). Produce le parti di buco inutilizzate più
grandi.
First-fit e best-fit sono migliori di worst-fit in termini di
velocità e utilizzo della memoria.

Sistemi di Elaborazione A.A. 2004/2005 11


Allocazione Contigua – Partizioni Variabili
In memoria sono presenti i seguenti spazi liberi:
100K, 500K, 200K, 300K, 600K
(ordinati in base all’indirizzo di partenza). Come verrebbero
allocati i seguenti processi:
P1 (212K), P2 (417K), P3 (112K), P4 (426K),
utilizzando gli algoritmi First Fit, Best Fit e Worst Fit?

First Fit: P1 in 500K (rimane 288K), P2 in 600K (rimane 183K)


P3 in 288K (rimane 176K), P4 deve attendere

Best Fit: P1 in 300K (rimane 88K), P2 in 500K (rimane 83K)


P3 in 200K (rimane 88K), P4 in 600K (rimane 174K)

Worst Fit: P1 in 600K (rimane 388K), P2 in 500K (rimane 83K)


P3 in 388K (rimane 276K), P4 deve attendere

Sistemi di Elaborazione A.A. 2004/2005 12


Frammentazione
 Frammentazione Interna – la memoria allocata può essere più
grande di quella che effettivamente serve; la memoria in più è
interna alla partizione, ma non può essere usata.
Tipica delle partizioni fisse.
 Frammentazione Esterna – la somma totale di tutti gli spazi
liberi è sufficiente per contenere un nuovo processo, ma il
processo non può essere caricato in memoria perché questi
spazi non sono contigui.
Tipica delle partizioni variabili.
 La frammentazione esterna può essere eliminata con la
compattazione.
• Riordina il contenuto della memoria per riunire la memoria libera in
un unico buco.
• La compattazione è possibile solo se la rilocazione è dinamica.
• La compattazione è costosa.

Sistemi di Elaborazione A.A. 2004/2005 13


Paginazione
 Lo spazio degli indirizzi logici può non essere contiguo.
 La memoria fisica è divisa in blocchi di dimensioni fisse chiamati
frame (le dimensioni sono potenze di 2, tra 512 byte e 8192
byte).
 La memoria logica è divisa in blocchi chiamati pagine, le cui
dimensioni sono pari a quelle dei frame.
 Bisogna tenere traccia di tutti i frame liberi.
 Per eseguire un programma di dimensioni pari ad n pagine,
bisogna trovare n frame liberi e caricare le pagine in quei frame.
 Viene usata una tabella delle pagine (di solito una per
processo) per tradurre gli indirizzi logici in indirizzi fisici.
 Presenta il problema della frammentazione interna.

Sistemi di Elaborazione A.A. 2004/2005 14


Paginazione - Traduzione degli Indirizzi
 Gli indirizzi generati dalla CPU si dividono in due parti:
• Numero di pagina (p) – viene usato come indice della tabella delle
pagine che contiene l’indirizzo base di ogni pagina nella memoria
fisica.
• Offset (d) – è lo scostamento all’interno della pagina.

Sistemi di Elaborazione A.A. 2004/2005 15


Paginazione - Esempio

Sistemi di Elaborazione A.A. 2004/2005 16


Paginazione - Esempio

Sistemi di Elaborazione A.A. 2004/2005 17


Frame Liberi

Prima dell’assegnazione Dopo l’assegnazione


Sistemi di Elaborazione A.A. 2004/2005 18
Realizzazione della Tabella delle Pagine
 La Tabella delle Pagine è mantenuta in memoria.
 Page-table base register (PTBR) indica l’inizio della Tabella
delle Pagine.
 Page-table length register (PRLR) indica le dimensioni della
Tabella delle Pagine.
 Con questo schema, per ogni accesso a dati/istruzioni ci sono
due accessi in memoria: uno alla Tabella delle Pagine ed uno ai
dati/istruzioni veri e propri.
 Il problema del duplice accesso in memoria può essere risolto
con una speciale memoria associativa usata come cache.
Questa memoria viene chiamata translation look-aside buffer
(TLB)
 La memoria associativa permette di cercare in parallelo su tutti
gli elementi quale sia uguale ad un valore dato.

Sistemi di Elaborazione A.A. 2004/2005 19


Realizzazione della Tabella delle Pagine

Sistemi di Elaborazione A.A. 2004/2005 20


Tempo Effettivo di Accesso con TLB
 Tempo di accesso alla memoria associativa = ε unità di tempo
 Tempo di accesso in memoria = 1 unità di tempo
 Hit ratio =α
percentuale di successo nel trovare l’elemento cercato nel TLB.
 Tempo Effettivo di Accesso (EAT)
EAT = (1 + ε) α + (2 + ε)(1 – α)
=2+ε–α

Sistemi di Elaborazione A.A. 2004/2005 21


Protezione della Memoria
 Ad ogni frame viene associato un bit di protezione.
 Ad ogni elemento della Tabella delle Pagine viene associato un
bit di validità:
• “valido” indica che la pagina associata rientra nello spazio
degli indirizzi logici del processo.
• “non valido” indica che la pagina associata NON rientra nello
spazio degli indirizzi logici.

Sistemi di Elaborazione A.A. 2004/2005 22


Paginazione a Due Livelli
 Tecnica di paginazione per ridurre le dimensioni delle pagine. È
comune in macchine con indirizzi a 32 bit o meno. Consiste nel
paginare la stessa tabella delle pagine
 Su una macchina a 32-bit con pagine di 4K, l’indirizzo è
suddiviso in: :
• Un numero di pagina di 20 bit.
• Un offset di 12 bit.
 Siccome la tabella delle pagine è paginata, il numero di pagina è
ulteriormente suddiviso in:
• Un numero di pagina di 10-bit.
• Un offset di 10-bit.
 Quindi un indirizzo logico ha la seguente struttura:
page number page offset
p1 p2 d

10 10 12
dove p1 è l’indice della tabella esterna delle pagine, e p2 è lo
scostamento all’interno della pagina della tabella delle pagine.
 Ad esempio il Pentium II usa questa tecnica.
 Macchine con indirizzi più lunghi di 32 bit adottano altre tecniche.

Sistemi di Elaborazione A.A. 2004/2005 23


Paginazione a Due Livelli

Sistemi di Elaborazione A.A. 2004/2005 24


Paginazione a Due Livelli
Schema di Traduzione degli Indirizzi

Sistemi di Elaborazione A.A. 2004/2005 25


Segmentazione
 È uno swchema di gestione della memoria che si avvicina al
modo in cui l’utente vede la memoria.
 Un programma è una collezione di segmenti. Ogni segmento è
una unità logica. Ad esempio abbiamo:
programma principale,
procedure,
funzioni,
metodi,
oggetti,
variabili locali e variabili globali,
blocco comune,
stack,
symbol table, array

Sistemi di Elaborazione A.A. 2004/2005 26


Segmentazione
1

1 4
subroutine
2
stack

3
programma 4 2
principale tabella dei
simboli

Spazio logico degli indirizzi Spazio fisico degli indirizzi


(vista dell’utente) (memoria fisica)
Sistemi di Elaborazione A.A. 2004/2005 27
Segmentazione
 Gli indirizzi logici sono costituiti da una coppia:
<numero-di-segmento, offset>,
 Tabella dei segmenti – permette la traduzione dallo spazio
bidimensionale degli indirizzi logici allo spazio unidimensionale
degli indirizzi fisici. Ogni elemento della tabella ha:
• base – contiene l’indirizzo fisico di inizio dell’area di memoria dove
risiede il segmento.
• limite – indica la lunghezza del segmento.
 Segment-table base register (STBR) punta alla locazione di
memoria dove risiede la tabella dei segmenti.
 Segment-table length register (STLR) indica il numero di
segmenti;
numero-di-segmento s è legale se s < STLR.

Sistemi di Elaborazione A.A. 2004/2005 28


Segmentazione
 Protezione.
Ad ogni elemento della tabella vengono associati:
• Bit di validità (quando = 0 ⇒ segmento illegale)
• Privilegi di lettura/scrittura/esecuzione
 Condivisione dei segmenti.
Siccome la protezione avviene a livello di ogni singolo
segmento, i segmenti possono essere condivisi tra processi
diversi.
 Problema di allocazione dinamica della memoria.
Siccome I segmenti sono di lunghezza variabile, si presentano
gli stessi problemi affrontati per l’allocazione contigua a
partizioni variabili (frammentazione esterna, first/best/worst fit).

Sistemi di Elaborazione A.A. 2004/2005 29


Segmentazione

Sistemi di Elaborazione A.A. 2004/2005 30


Segmentazione - Esempio

Sistemi di Elaborazione A.A. 2004/2005 31


Condivisione di Segmenti

Sistemi di Elaborazione A.A. 2004/2005 32


Segmentazione con Paginazione: Intel 386
L’Intel 386 usa la segmentazione con paginazione a due livelli.

Sistemi di Elaborazione A.A. 2004/2005 33


Gestione della Memoria
 Introduzione
 Codice rilocabile
 Swapping
 Gestione della Memoria
 Allocazione contigua
 Paginazione
 Segmentazione
 Segmentazione con Paginazione
 Memoria Virtuale
• Paginazione su richiesta
• Algoritmi di sostituzione delle pagine: FIFO, Ottimale, LRU, Orologio
• Algoritmi di assegnazione dei frame liberi: Uniforme, Proporzionale,
per Priorità, basata sul Working Set, basata su Page Fault Rate
 Gestione della Memoria in Linux
• Memoria Fisica
• Memoria Virtuale

Sistemi di Elaborazione A.A. 2004/2005 34


Memoria Virtuale
 Lo spazio degli indirizzi logici è più grande dello spazio degli
indirizzi fisici.
• Solo la porzione di processo necessaria viene tenuta in memoria per
l’esecuzione.
• Lo spazio degli indirizzi può essere condiviso tra processi diversi.
• La creazione dei processi è più efficiente.
 Realizzazione:
• Paginazione su richiesta.
• Segmentazione su richiesta.

Sistemi di Elaborazione A.A. 2004/2005 35


Paginazione su Richiesta

Sistemi di Elaborazione A.A. 2004/2005 36


Paginazione su Richiesta

I bit di validità è inizializzato a 0.


In fase di traduzione,
se bit = 0 ⇒ page fault.
Riferimento non valido
Pagina non in memoria

Sistemi di Elaborazione A.A. 2004/2005 37


Gestione di un Page Fault

Sistemi di Elaborazione A.A. 2004/2005 38


Prestazioni della Paginazione su Richiesta
 Probabilità che si verifichi un Page Fault: 0 ≤ p ≤ 1.0
• p=0 page fault non si verifica mai
• p=1 page fault si verifica sempre

 Tempo di accesso effettivo (EAT)


EAT = (1 – p) x accesso_in_memoria
+ p (page_fault + swap_out + swap_in+ restart)

 Esempio:
si desidera un rallentamento inferiore al 10% avendo le seguenti
prestazioni:
- accesso_in_memoria = 0.1 µs
- page_fault + swap_out + swap_in+ restart = 25 ms = 25000 µs

EAT = (1 – p) x 0.1 + p 25000 =


= 0.1 + 24999.9 x p < 0.11
dobbiamo avere
p < 4 x 10-7

Sistemi di Elaborazione A.A. 2004/2005 39


Paginazione su Richiesta
Realizzazione
 Swap-out
Per ridurre il numero di swap-out richiesti, si può utilizzare un
bit di modifica (dirty bit):
• Il bit viene messo ad 1 ogni volta che la pagina viene modifcata
• Durante lo swap-out la pagina viene effettivamente copiata su
disco solo se il bit di modifica è a 1.

 Servono inoltre:
• Algoritmo di assegnazione dei blocchi di memoria
• Algoritmo di sostituzione delle pagine.

Sistemi di Elaborazione A.A. 2004/2005 40


Sostituzione delle Pagine
Necessità della Sostituzione

Sistemi di Elaborazione A.A. 2004/2005 41


Sostituzione delle Pagine
Algoritmo Base

Sistemi di Elaborazione A.A. 2004/2005 42


Sostituzione delle Pagine
Criteri di Scelta dell’Algoritmo
 Deve minimizzare la probabilità di page-fault.
 Gli algoritmi vengono valutati considerando il loro
comportamento (il numero di page fault prodotti) con determinate
successioni dei riferimenti.
 In tutti i nostri esempi le successione dei riferimenti sono:
successione 1: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5.
successione 2: 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1.

Sistemi di Elaborazione A.A. 2004/2005 43


Sostituzione delle Pagine
Andamento Desiderato dei
Page Fault in Funzione del Numero di Frame

Sistemi di Elaborazione A.A. 2004/2005 44


Algoritmo First-In-First-Out (FIFO)
 Sostituire la prima pagina caricata in memoria
 Successione 1: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
 3 frame (in ogni istante possono essere in memoria 3
pagine per processo)
1 1 4 5
2 2 1 3 9 page fault
3 3 2 4
 4 frame

1 1 5 4
2 2 1 5 10 page fault
3 3 2

4 4 3
 Anomalia di Belady
• Aumentare I frame non garantisc una diminuzione dei page
fault

Sistemi di Elaborazione A.A. 2004/2005 45


Algoritmo First-In-First-Out (FIFO)
Anomalia di Belady

Sistemi di Elaborazione A.A. 2004/2005 46


Algoritmo First-In-First-Out (FIFO)

Successione 2

Sistemi di Elaborazione A.A. 2004/2005 47


Algoritmo Ottimo
 Sostituire la pagina che si utilizzerà il più tardi possibile.
 4 frame
Successione 1: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

1 4
2 6 page fault
3

4 5

 Impossibile da realizzare in pratica


 Usato come punto di riferimento per gli altri algoritmi.

Sistemi di Elaborazione A.A. 2004/2005 48


Algoritmo Ottimo

Successione 2

Sistemi di Elaborazione A.A. 2004/2005 49


Algoritmo Least Recently Used (LRU)
 Sostituire la pagina che è stata usata meno di recente
 Successione 1: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

1 5
2 8 page fault
3 5 4
4 3

Sistemi di Elaborazione A.A. 2004/2005 50


Algoritmo Least Recently Used (LRU)

Successione 2

Sistemi di Elaborazione A.A. 2004/2005 51


Algoritmo Least Recently Used (LRU)
Realizzazione
 Con i Contatori
• Ogni elemento delle pagine ha un contatore.
• Ogni volta che c’è un rifermento alla pagina, il valore del clock
viene copiato nel contatore.
• Quando bisogna selezionare una pagina, si sceglie quella che ha il
valore più piccolo del contatore.

 Con lo Stack
• I numeri delle pagine sono organizzati in una lista doppiamente
concatenata.
• Ogni volta che c’è un riferimento ad una pagina, il suo numero
viene inserito/spostato in cima allo stack.
• Quando bisogna selezionare una pagina, si sceglie quella presente
in fondo allo stack => la sostituzione non richiede nessuna ricerca
nella lista

Sistemi di Elaborazione A.A. 2004/2005 52


Algoritmo Least Recently Used (LRU)
Realizzazione con lo Stack

Sistemi di Elaborazione A.A. 2004/2005 53


Algoritmi che Approssimano LRU
 Bit di Riferimento
• Ad ogni pagina è associato un bit di riferimento, inizialmente = 0
• Ogni volta che c’e’ un accesso alla pagina il bit viene posto ad 1.
• La lista delle pagine è gestita FIFO, viene sostituita la pagina che ha il bit di
riferimento a 0 (se esiste).
• Il bit dice se la pagina è stata usata recentemente, ma non mi dice l’ordine
d’uso.
 Seconda chance
• Utilizza il bit di riferimento.
• La lista delle pagine è una lista circolare (per questo viene detto anche
algoritmo dell’orologio) gestita FIFO, viene selezionata una pagina:
• Se il bit di riferimento è a 0 => - viene sostituita
• Se il bit di riferimento è a 1 => - il bit viene messo a 0,
- la pagina è lasciata in memoria,
- viene selezionata la pagina successiva
a cui vengono applicate le stesse regole

Sistemi di Elaborazione A.A. 2004/2005 54


Algoritmo della Seconda Chance (Orologio)

Sistemi di Elaborazione A.A. 2004/2005 55


Esercizio: Algoritmo della Seconda Chance

Applicare l’algoritmo della seconda chance alla


seguente successione :

successione 2:
7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1.

Sistemi di Elaborazione A.A. 2004/2005 56


Assegnazione dei Blocchi di Memoria
 Nella paginazione su richiesta pura, inizialmente tutti I frame
sono posti nella lista dei frame liberi, quando il primo processo
deve essere caricato in memoria, il processo genera una
sequenza di page fault.
 Un metodo più efficiente, consiste nell’assegnare al processo
direttamente in fase di caricamento un certo numero di frame
liberi.

 Ogni processo ha bisogno di un numero minimo di pagine che


devono essere assegnate ad ogni processo. Tale numero
dipende dal linguaggio macchina.
 Esempio: IBM 370 – possono servire fino a 6 pagine per
eseguire l’istruzione SS MOVE <from> <to>:
• L’istruzione occupa 6 byte, quindi può stare a cavallo di due pagine.
• Il contenuto della parola indirizzata da <from> può stare a cavallo di
due pagine.
• Il contenuto della parola indirizzata da <to> può stare a cavallo di
due pagine.
Sistemi di Elaborazione A.A. 2004/2005 57
Algoritmo di Assegnazione Uniforme
 I frame vengono assegnati in base al numero di processi:
sia m il numero di frame liberi ed n il numero di processi,
ogni processo riceve m/n frame.

 Esempio
m = 100 frame
n = 5 processi,

ogni processo riceve 20 pagine.

Sistemi di Elaborazione A.A. 2004/2005 58


Algoritmo di Assegnazione Proporzionale
 Con l’assegnazione uniforme ci sono processi di piccole
dimensioni che ricevono molti frame e processi di grandi
dimensioni che ricevono pochi frame.
 Con l’assegnazione proporzionale i frame vengono assegnati in
base alle dimensioni del processo:
• si dimensioni del processo pi,
• S = Σsi
• m numero totale di frame
• ai = m × si/S numero di frame assegnati al processo pi

 Esempio
m = 62 s1 = 10 s2 = 127
Uniforme Proporzionale
a1 = 62/2 = 31 a2 = 62 × 10/137 ≈ 4
a1 = 62/2 = 31 a2 = 62 × 127/137≈ 57
rimane 1 frame libero

Sistemi di Elaborazione A.A. 2004/2005 59


Algoritmo di Assegnazione per Priorità
 Sia con l’assegnazione uniforma sia con l’assegnazione
proporzionale, un processo con priorità elevata viene trattato
nello stesso modo di un processo a bassa priorità.
 L’assegnazione per priorità si basa su una assegnazione
proporzionale alla priorità dei processi invece che alla loro
dimensione.

 Se un processo Pi genera un page fault,


• Si sostituisce uno dei suoi frame (assegnazione locale).
• Si sostituisce un frame di un processo con priorità minore
(assegnazione globale).
Questo permette ad un processo con una priorità elevata di
aumentare il numero di frame che gli sono stati assegnati.

Sistemi di Elaborazione A.A. 2004/2005 60


Assegnazione Globale e Locale
 Assegnazione Globale –
per la sostituzione viene selezionato un frame tra tutti quelli
esistenti, anche se appartiene ad un processo diverso da quello
che ha generato il page fault. In questo modo ci sono processi
che vedono aumentare il numero di frame a loro disposizione e
processi che vedono tale numero diminuire.
 Assegnazione Locale –
per la sostituzione viene selezionato un frame del processo che
ha generato il page fault.

Sistemi di Elaborazione A.A. 2004/2005 61


Paginazione Degenere (Thrashing)
 Se un processo non ha un numero “sufficiente” di pagine, il
tasso di page fault diventa troppo alto. Questa può essere la
conseguenza della seguente situazione
1. se si verifica un basso utilizzazo della CPU
2. il SO decide di aumentare il grado di multiprogrammazione
3. aggiunge un altro processo in memoria.
 Thrashing ≡ il SO impiega gran parte del tempo in operazioni
di swap-in e swap-out.
 Questo si verifica soprattutto se si usa un algoritmo di
assegnazione globale.

Sistemi di Elaborazione A.A. 2004/2005 62


 Le pagine usate da
un processo in un certo
periodo della sua
esistenza formano la
Principio di Località

località in cui si trova il


processo in quel
momento.
• Un processo migra
da una località ad
un’altra.
• Le località si possono
sovrapporre tra loro.

 Il trashing si verifica se:


Σ dim(località) >
dim(memoria)

Sistemi di Elaborazione A.A. 2004/2005 63


Assegnazione Basata sul Working-Set
 Working-set di un processo ≡ insieme delle pagine referenziate negli
ultimi ∆ istanti (dove ∆ ≡ finestra del working-set).
 WSSi = dimensione del working-set del processo Pi (varia nel tempo)
• se ∆ troppo piccolo non include l’intera località.
• se ∆ troppo grande può sovrapporre più località.
• se ∆ = ∞ ⇒ include l’intero processo.
 D = Σ WSSi ≡ totale della domanda di frame (se D > m ⇒ Thrashing)
 Schema basato sul working-set
• assegnazione pari a dimensione del working set (varia nel tempo)
• se D < m, allora viene attivato un nuovo processo;
• se D > m, allora un processo viene sospeso.

= 10

Sistemi di Elaborazione A.A. 2004/2005 64


Esercizio: Working Set

Calcolare l’evoluzione temporale del working set


nel seguente caso:

ampiezza finestra:
∆ = 10

successione 2:
7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1.

Sistemi di Elaborazione A.A. 2004/2005 65


Assegnazione Basata su Page Fault Rate

Il processo necessita di altri frame

Il processo ha troppi frame

 Schema basato sulla frequenza di page-fault.


• Se la frequenza scende sotto il limite inferiore,
al processo viene tolto un frame.
• Se la frequenza sale sopra il limite superiore,
al processo viene assegnato un altro frame.

Sistemi di Elaborazione A.A. 2004/2005 66


Considerazioni
Struttura dei programmi
 Esempio
• Supponiamo di avere pagine di dimensionipari a 1024 parole.
• Supponiamo di dover inizializzare a zero tutti gli elementi della
seguente matrice
int A[1024][1024];
• Ogni riga è memorizzata in una pagina.
• Programma 1 for (j = 0; j < 1024; j++)
for (i = 0; i < 1024; i++)
A[i,j] = 0;
1024 x 1024 page fault

• Programma 2 for (i = 0; i < 1024; i++)


for (j = 0; j < 1024; j++)
A[i,j] = 0;
1024 page fault

Sistemi di Elaborazione A.A. 2004/2005 67


Considerazioni
Vincoli di I/O
 Le pagine che sono usate
per copiare un file da un
dispositivo di I/O devono
poter essere vincolate in
memoria per evitare che
vengano selezionate dall’
algoritmo di sostituzione
delle pagine.

Sistemi di Elaborazione A.A. 2004/2005 68


Gestione della Memoria
 Introduzione
 Codice rilocabile
 Swapping
 Gestione della Memoria
 Allocazione contigua
 Paginazione
 Segmentazione
 Segmentazione con Paginazione
 Memoria Virtuale
 Paginazione su richiesta
 Algoritmi di sostituzione delle pagine: FIFO, Ottimale, LRU, Orologio
 Algoritmi di assegnazione dei frame liberi: Uniforme, Proporzionale,
per Priorità, basata sul Working Set, basata su Page Fault Rate
 Gestione della Memoria in Linux
• Memoria Fisica
• Memoria Virtuale

Sistemi di Elaborazione A.A. 2004/2005 69


Gestione della Memoria in Linux
Spazio di indirizzamento di un task su architetture Intel a 32 bit.
 Indirizzi a 32 bit, quindi abbiamo al massimo 4GB di memoria.
 Ogni task ha a disposizione uno spazio d indirizzamento virtuale
di 3GB, il restante 1GB è riservato al kernel.
• Un task in user mode non vede lo spazio riservato al kernel.
• Ogni volta che viene invocato il kernel (per es. richiamando una
system call) il kernel riesce a vedere il suo spazio di indirizzamento
senza bisogno di “ripulire” la TLB, aumentando le prestazioni del
sistema.
 Lo spazio di indirizzamento è costituito da un insieme di regioni.
 Ogni regione è costituita da un insieme di pagine omogenee e
contigue.
 Ogni pagina ha dimensione pari a 4KB su architetture x86

Sistemi di Elaborazione A.A. 2004/2005 70


Gestione della Memoria in Linux
Il gestore della memoria di Linux ha due componenti:
 Gestore della memoria fisica. Si occupa dell’assegnazione e del
rilascio di pagine fisiche, gruppi di pagine fisiche e piccoli
blocchi di memoria (blocchi di memoria di dimensione inferiore
alla pagina).
 Gestore della memoria virtuale. Si occupa della gestione della
memoria virtuale, ovvero la memoria indirizzabile dai task in
esecuzione.

Sistemi di Elaborazione A.A. 2004/2005 71


Gestione della Memoria in Linux
Memoria Fisica
 L’allocazione della memoria può avvenire in due modi:
• staticamente – i driver riservano aree di memoria contigua durante
l’avvio del sistema;
• dinamicamente – tramite un allocatore delle pagine (quello base
oppure per alcuni moduli del kernel dei propri allocatori specializzati)

 allocatore delle pagine di base (page allocator):


• è responsabile dell’allocazione e del rilascio di pagine fisiche,
• è in grado di assegnare su richiesta gruppi di pagine fisicamente
contigue (regioni),
• utilizza l’algoritmo buddy-heap.

Sistemi di Elaborazione A.A. 2004/2005 72


Gestione della Memoria in Linux
Memoria Fisica
Algoritmo buddy-heap:
 Ogni regione allocabile ha:
• dimensione pari a 2n pagine fisiche (quindi la regione più piccola ha
dimensione pari ad una pagina),
• una compagna adiacente (detta buddy).
 Per gestire le regioni libere, vengono utilizzate liste concatenate
distinte, una per ogni dimensione.

 Ad ogni rilascio di memoria:


• Se la regione rilasciata è adiacente ad un’altra regione libera, le due
regioni vengono combinate per formarne una più ampia.

Sistemi di Elaborazione A.A. 2004/2005 73


Gestione della Memoria in Linux
Memoria Fisica
Algoritmo buddy-heap (continua):
 Ad ogni richiesta di memoria:
• Sia k il numero di pagine richieste (es. k=5).
• Si calcola m pari alla prima potenza di 2 superiore a k (es. m=8).
• Se esiste una regione nella lista delle regioni a dimensione m, viene
allocata alla richiesta.
• Altrimenti si cerca nelle liste delle regioni di dimensioni
immediatamente superiori (2m, 4m, …) fino a trovare una regione
libera.
• Sia 2h .m la sua dimensione, essa viene divisa in due buddy per h
volte fino ad ottenere una regione della dimensione desiderata.

 Vantaggi:
• Allocazione della memoria molto veloce
 Svantaggi:
• Frammentazione interna ed esterna
• Esistono dei meccanismi per riutilizzare la memoria “sprecata” a
causa della frammentazione interna
Sistemi di Elaborazione A.A. 2004/2005 74
Gestione della Memoria in Linux
Memoria Fisica
Algoritmo buddy-heap – Esempio:
• Sequenza di richieste: 8 pagine, 8 pagine, 4 pagine;
• Seguita dal rilascio: 8 pagine, 8 pagine

32 32 32 32 32 32 32 32

64
8 8 8 8
16 16 16
8 4 4 4
32 4 4 4
8 8 8 8 8
16 16
8 8 8 8 8
Sistemi di Elaborazione A.A. 2004/2005 75
Gestione della Memoria in Linux
Memoria Virtuale
Regioni di memoria virtuale
 Lo spazio di indirizzamento è costituito da un insieme di regioni.
 Ogni regione rappresenta un insieme di pagine logicamente
contigue, contenenti informazioni omogenee tra loro (codice,
dati, ...).
 Ogni regione è descritta da una struttura dati
(vm_area_struct) che contiene tra l’altro:
• permessi di lettura, scrittura ed esecuzione,
• proprietà di paginazione,
• informazioni riguardo i file,
• numero della prima e dell’ultima pagina appartenente alla regione.
 Le regioni relative ad uno spazio di indirizzamento sono
organizzate in un albero binario bilanciato
• per una rapida ricerca della regione corrispondente ad un dato
indirizzo virtuale.

Sistemi di Elaborazione A.A. 2004/2005 76


Gestione della Memoria in Linux
Memoria Virtuale
Paginazione su richiesta a tre livelli
 Con i processori più semplici (per es. il pentium) il secondo
livello è disabilitato.
PTBR Indirizzo logico
a g m p d

a b c
g
+ + m + p
b
f
c
.. .. ..
. . .

Indirizzo fisico
f d
Sistemi di Elaborazione A.A. 2004/2005 77
Gestione della Memoria in Linux
Memoria Virtuale
Algoritmo di sostituzione
 esiste un demone chiamato kswapd il cui codice viene eseguito
una volta al secondo
• verifica che ci siano abbastanza pagine libere disponibili
• in caso contrario, seleziona una pagina occupata e la rende libera
 le pagine di codice vengono mappate direttamente nei file
eseguibili da cui derivano
 tutte le altre pagine vengono mappate
• nella partizione di swap
 più efficiente
 scrittura contigua, accesso diretto al dispositivo
• in file di swap (fino a 8 file diversi)
 meno efficiente
 blocchi possono essere fisicamente non contigui, accesso
attraverso il file system
 algoritmo di selezione
• decide quali pagine selezionare

Sistemi di Elaborazione A.A. 2004/2005 78


Gestione della Memoria in Linux
Memoria Virtuale
Algoritmo di selezione
 l’algoritmo è piuttosto complesso, riportiamo una versione
semplificata:
• si cerca il processo che ha più pagine in memoria
• si analzano tutte le sue regioni (a partire dall'ultima regione
analizzata nella ricerca precedente)
• non vengono considerate le pagine condivise, utilizzate dai canali
DMA, locked, assenti dalla memoria
• per selezionare la pagina si adotta l’algoritmo dell’orologio a doppia
scansione.

Sistemi di Elaborazione A.A. 2004/2005 79


Gestione della Memoria in Linux
Memoria Virtuale
Algoritmo di selezione (continua)
 vengono utilizzate due liste:
• la lista delle pagine attive
• la lista delle pagine inattive
 quando si fa lo swap-in di una pagina,
• la pagina viene messa in testa alla lista delle pagine inattive ed il bit
di validità viene messo a uno
 quando una pagina viene referenziata
• se è inattiva e il bit è a zero, il bit viene messo a uno
• se è inattiva e il bit è a uno, viene messa in testa alla lista delle
pagine attive ed il bit viene messo a zero
• se è attiva, il bit viene messo a uno
 periodicamente le pagine con bit a zero vicine alla coda della lista
delle pagine attive, vengono messe in testa alla lista delle pagine
inattive
 quando si deve fare uno swap-out,
• viene selezionata la pagina con bit di validità a zero più vicina alla
coda della lista delle pagine inattive
• la copia su disco viene fatta solo se il dirty bit è a uno
Sistemi di Elaborazione A.A. 2004/2005 80
Gestione della Memoria in Linux
Memoria Virtuale
Linux crea un novo spazio di indirizzamento virtuale quando:
 Viene eseguita una exec
• Viene creato uno spazio di indirizzi completamente vuoto.
• È compito del caricatore popolare lo spazio con regioni di memoria
virtuale.
 Viene eseguita una fork
• Viene creata una copia dello spazio di indirizzamento del task
genitore.
• Il kernel copia tutti i vm_area_struct del genitore.
• Crea un nuovo insieme di tabelle delle pagine per il figlio.
• Il contenuto delle tabelle delle pagine del genitore è copiato nelle
tabelle del figlio.
• Dopo la fork, genitore e figlio condividono le stesse pagine fisiche
(anche quelle private del genitore).
• La pagina di una regione privata viene duplicata solo in fase di
esecuzione, quando uno dei due task chiede di modificarla.
• Così le copie delle pagine si creano solo quando è necessario.
Sistemi di Elaborazione A.A. 2004/2005 81
Gestione della Memoria in Linux
Memoria Virtuale
 Linux adotta per i programmi eseguibili:
• Il formato a.out (comune ai vecchi sistemi Unix);
• Il formato ELF.
 Inizialmente il programma eseguibile viene mappato nello spazio
di indirizzamento virtuale, ma le pagine non vengono caricate
• solo quando il task chiede di accedere ad una data pagina, ci sarà
un page fault e di conseguenza la pagina verrà caricata (swapped
in) nella memoria fisica.
• Il compito del caricatore è quello di instaurare le associazioni iniziali
per permettere l’avvio dell’esecuzione del programma.
 Linux permette due tipi di collegamento alle librerie di sistema:
• Il collegamento statico
• Il collegamento dinamico (occupa meno spazio sia in memoria
centrale sia su disco)

Sistemi di Elaborazione A.A. 2004/2005 82


Gestione della Memoria in Linux
Memoria Virtuale
Organizzazione della memoria per il formato ELF

brk

Sistemi di Elaborazione A.A. 2004/2005 83


File-System
 Interfaccia del File System
• Tipo di Dato Astratto File
• File Ordinari
• Directory
• File Speciali
• Protezioni
 Realizzazione del File System
• Struttura dei file system
• Realizzazione delle directory
• Realizzazione dei file (assegnazione dei blocchi liberi)
• Cache (dei blocchi e delle pagine)
 File System di Linux
• Virtual File System
• Ext2 File System
• Ext3 File System
• Proc File System
• Network File System

Sistemi di Elaborazione A.A. 2004/2005 1


File
 Un file è un tipo di dato astratto.
 Definire un file significa quindi definire:
• Struttura
• Attributi
• Operazioni
 Fornisce agli utenti (e in particolare ai programmatori) una
interfaccia uniforme alla gestione dei dispositivi di I/O
 In particolare il concetto di file è utile per la gestione delle
memorie di massa. In questo caso, ogni file denota uno spazio
logico degli indirizzi contiguo, indipendentemente da come è
realizzato.

Sistemi di Elaborazione A.A. 2004/2005 2


Struttura dei File
a) Assenza di struttura – sequenza di byte
b) Struttura a Record – sequenza di record
• Record di lunghezza fissa Le strutture (b) e (c) si
possono realizzare
• Record di lunghezza variabile
con struttura (a)
c) Struttura Complessa (sequenze di byte)
• Grafo/Albero di record dotata di opportuni
• Documento formattato (es. Ipertesti) caratteri di controllo

 Chi gestisce la struttura del file?


• Sistema operativo
• Programma
Sistemi di Elaborazione A.A. 2004/2005 3
Attributi dei File
 Nome – è l’informazione che permette agli utenti di identificare
in modo univoco il file.
 Identificatore - è l’informazione che permette al SO di
identificare in modo univoco il file.
 Tipo – questa informazione serve ai sistemi che gestiscono file
di tipo diverso.
 Locazione – è il puntatore al dispositivo e alla locazione del file
in tale dispositivo.
 Dimensione – è l’attuale dimensione del file.
 Protezione – sono informazioni di controllo degli accessi al file
(chi può leggere, scrivere, far eseguire il file).
 Ora, data, e identificatore dell’utente – sono informazioni
relative alla creazione, all’ultima modifica e all’ultimo uso del file.
Servono per la protezione ed il controllo dell’uso.

Gli attributi dei file sono conservati nella struttura directory, che
risiede a sua volta nella memoria secondaria.

Sistemi di Elaborazione A.A. 2004/2005 4


Operazioni sui File
 Create – per creare un file bisogna compiere due passi:
1) si deve trovare lo spazio per il file nel file system;
2) si deve creare un nuovo elemento nella directory dove registrare i suoi
attributi.
 Open – questa operazione riceve il nome del file, lo cerca nella directory,
e copia l’elemento ad esso associato in memoria (nella tabella dei file
aperti). In alcuni SO l’apertura dei file avviene implicitamente la prima
volta che il processo fa riferimento al file.
 Write – il file system deve mantenere un puntatore di scrittura contenente
la locazione nel file in cui deve avvenire la prossima operazione di
scrittura. Il file deve essere già aperto.
 Read – il file system deve mantenere un puntatore di lettura contenente la
locazione nel file in cui deve avvenire la prossima operazione di lettura. Il
file deve essere già aperto.
 Seek – spesso il puntatore di lettura e quello di scrittura coincidono, la
seek cambia il valore a tale puntatore (senza operazioni di I/O).
 Delete – si cerca l’elemento relativo al file nella directory, si rilascia lo
spazio assegnato al file e si elimina l’elemento di directory.
 Truncate – si cancella il contenuto del file mantenendo i suoi attributi.
 Close – copia l’elemento contenuto nella tabella dei file aperti nella
directory. In alcuni SOla chiusura avviene implicitamente quando il
processo termina.
Sistemi di Elaborazione A.A. 2004/2005 5
Tipi di File – Estensione dei Nomi

ps, pdf

Sistemi di Elaborazione A.A. 2004/2005 6


Metodi di Accesso
Metodi Base
 Accesso Sequenziale
read next legge il record nella posizione corrente (cp)
write next scrive il record nella posizione corrente,
quel record diventa l’ultimo del file
reset riporta la posizione corrente all’inizio del file (cp = 0)
- non è possibile fare una read dopo una write se prima non si fa una
reset
- non è possibile fare una rewrite
 Accesso Diretto
read n legge il blocco n-esimo (cp = n)
write n scrive il blocco n-esimo (cp = n)
rewrite n riscrive il blocco n-esimo
- è la base di altri metodi di accesso: accesso con indice, accesso
con hash

Sistemi di Elaborazione A.A. 2004/2005 7


Accesso Sequenziale

Sistemi di Elaborazione A.A. 2004/2005 8


Accesso con Indice

chiave

Sistemi di Elaborazione A.A. 2004/2005 9


Directory
 È una collezione di file.
 Una directory è un tipo di dato astratto. È un tipo di file quindi:
• Possiede gli stessi attributi e le stesse operazioni dei file.
• Ha una struttura particolare.
• Possiede inoltre delle operazioni aggiuntive.

Directory

Files
F1 F2 F4
F3
Fn

Sistemi di Elaborazione A.A. 2004/2005 10


OrganizzazioneTipica di un File-System

Sistemi di Elaborazione A.A. 2004/2005 11


Elemento di Directory
Ogni elemento di directory contiene informazioni relative ad un file
(gli attributi del file)
Nome
Tipo
Locazione
Dimensione attuale
Dimensione massima consentita
Data dell’ultimo accesso
Data dell’ultimo aggiornamento
ID del proprietario
Protezione

Sistemi di Elaborazione A.A. 2004/2005 12


Operazioni sulle Directory
 Search – ricerca di un file
 Create – creazione di un file
 Delete – cancellazione di un file
 List – elenco di una directory
 Rename – ridenominazione di un file
 Traverse – attraversamento del file system

Sistemi di Elaborazione A.A. 2004/2005 13


Organizzazione Logica delle Directory
Il file system deve essere organizzato logicamente in modo tale da
soddisfare i seguenti requisiti:
 Efficienza – deve essere possibile per l’utente ritrovare i propri
file il più rapidamente possibile.
 Assegnazione di nomi unici – ogni file deve avere un nome
unico, ma questo spesso contrasta con le esigenze degli utenti:
• Due utenti possono usare lo stesso nome per due file diversi.
• Due utenti possono dare due nomi diversi allo stesso file.
 Raggruppamento – deve essere possibile raggruppare
logicamente i file sulla base delle loro proprietà (tutti i file di un
dato programma, tutti i documenti di un certo tipo, …).

Sistemi di Elaborazione A.A. 2004/2005 14


Directory a Livello Singolo
 Una unica directory per tutti gli utenti.

Problema dei nomi unici

Problema del raggruppamento dei file

Sistemi di Elaborazione A.A. 2004/2005 15


Directory a Due Livelli
 Una directory separata per ogni utente.

•Path name
•Si possono avere file di utenti diversi con lo stesso nome
•Ricerca più efficiente
•Ad un utente non è permesso raggruppare i propri file

Sistemi di Elaborazione A.A. 2004/2005 16


Directory Strutturata ad Albero

 Ricerca efficiente
 Possibilità di raggruppare i file
 Path name assoluto e relativo
 Directory corrente
(directory di lavoro)

Sistemi di Elaborazione A.A. 2004/2005 17


Directory Strutturata a Grafo Aciclico
 È permessa la condivisione di file e directory:
• Collegamenti simbolici – lo spazio è reso disponibile solo quando è
cancellato il file (MS Windows e Unix)
• Collegamenti effettivi (hard link) – lo spazio è reso disponibile quando
 È cancellato il primo hard link
 Sono stati cancellati tutti gli hard link (Unix)

Sistemi di Elaborazione A.A. 2004/2005 18


Directory Strutturata a Grafo Generale
 È permessa la presenza di cicli

Sistemi di Elaborazione A.A. 2004/2005 19


Directory Strutturata a Grafo Generale
 Bisogna evitare che i processi che attraversano il file system
vadano in loop infinito:
• Controllare se si è in presenza di un ciclo nel grafo.
• Impedire collegamenti a directory

 Sia MS Windows sia Unix permettono cicli realizzati attraverso i


collegamenti simbolici.
 Unix non permette hard link a directory.

Sistemi di Elaborazione A.A. 2004/2005 20


File System Mounting
 Un file system deve essere montato prima di potervi accedere.
 Un file system non montato viene montato ad un mount point.

po int
nt
mou

File System esistente Partizione non montata

Sistemi di Elaborazione A.A. 2004/2005 21


File System Mounting

bill fred

... ...

Sistemi di Elaborazione A.A. 2004/2005 22


File Speciali
I “file speciali” sono inclusi nella gerarchia delle directory come
qualsiasi altro file, ma in realtà corrispondono a device di I/O. Si
possono avere file speciali a blocchi (dischi) o a caratteri (tastiere,
video a caratteri, ecc.). Questo trucco permetti di fare riferimento
ad un dispositivo utilizzando un pathname.

dev

hd3 tty00
hello world!
12>

Sistemi di Elaborazione A.A. 2004/2005 23


Protezioni
 Il proprietario/creatore di un file deve essere in grado di
controllare:
• cosa può essere fatto (modi di accesso: Read, Write, eXecute)
• da chi

 Gli utenti di ogni file vengono raggruppati in tre categorie:


• Proprietario – RWX
è l’utente che ha creato il file 7 ⇒ 111
• Gruppo – RW–
insieme di utenti che condividono il file 6 ⇒ 110
• Universo – ––X
tutti gli altri utenti del sistema 1 ⇒ 001

 Ogni utente può essere associato ad uno o più gruppi

Sistemi di Elaborazione A.A. 2004/2005 24


File-System
 Interfaccia del File System
 Tipo di Dato Astratto File
 File Ordinari
 Directory
 File Speciali
 Protezioni
 Realizzazione del File System
• Struttura dei file system
• Realizzazione delle directory
• Realizzazione dei file (assegnazione dei blocchi liberi)
• Cache (dei blocchi e delle pagine)
 File System di Linux
• Virtual File System
• Ext2 File System
• Ext3 File System
• Proc File System
• Network File System

Sistemi di Elaborazione A.A. 2004/2005 25


File System Stratificato
1.Interazione con il file system.

2.Reperimento dei file all’interno della


gerarchia delle directory. Gestione dei
metadati (es. i descrittori di file o FCB).
3.Assegnazione dei blocchi liberi del
disco. Traduzione indirizzi dei blocchi
logici in indirizzi dei blocchi fisici.
4.Cache. Comunicazione con i driver per
leggere e scrivere blocchi fisici
(<superfice,cilindro,settore>).
5.Driver dei dischi. Interazione con i
controller.

6.Controller. Interazione con i dispositivi


Sistemi di Elaborazione A.A. 2004/2005 26
File System Stratificato
Ciascun strato è realizzato grazie ai servizi degli strati
sottostanti. Una system call percorrerà i diversi strati a
partire dal primo, fino ad arrivare all’ultimo, il driver,
che si occuperà di far svolgere al controller del disco
su cui si trova il file/directory coinvolto le operazioni
necessarie a soddisfare la richiesta.

Uno dei motivi per strutturare in questo modo la


gestione del file system riguarda la separazione degli
strati che dipendono dall’hardware da quelli che sono
indipendenti dall’hardware.

Sistemi di Elaborazione A.A. 2004/2005 27


Virtual File System
 VFS fornisce la stessa interfaccia basata su system call (API)
da usare per diversi tipi di file system.

Sistemi di Elaborazione A.A. 2004/2005 28


Strutture del File System in Memoria
Descrittore di File - File Control Block

Sistemi di Elaborazione A.A. 2004/2005 29


Strutture del File System in Memoria

apertura
lettura

Sistemi di Elaborazione A.A. 2004/2005 30


Realizzazione delle Directory
 Lista lineare –
Lista di nomi di file con puntatori ai blocchi dei dati.
• Ricerca di un file: ricerca lineare.
• Aggiunta di un file: ricerca lineare se non esiste un omonimo ed
inserimento in fondo alla lista.
• Cancellazione di un file: ricerca lineare del file, marcatura
dell’elemento di directory come libero (oppure si copia l’ultimo
elemento in quello liberato oppure si usa una lista concatenata).
 Semplice da programmare.
 Costosa computazionalmente.

 Hash Table –
Lista lineare con struttura dati hash.
• Ricerca tramite funzione di hash.
 Tempo di ricerca molto breve.
 Bisogna gestire le collisioni (due elementi con lo stesso indice).
 La dimensione della tabella è fissa e decisa a priori.

Sistemi di Elaborazione A.A. 2004/2005 31


Realizzazione dei File: Metodi di Allocazione
Il problema principale da risolvere è come assegnare lo spazio
ai file

 Assegnazione Contigua

 Assegnazione Concatenata

 Assegnazione Indicizzata

Sistemi di Elaborazione A.A. 2004/2005 32


Assegnazione Contigua
Ogni file occupa un insieme contiguo di blocchi nel disco.

È semplice, serve solo la locazione iniziale e


la lunghezza (numero dei blocchi) .
Consente l’accesso diretto.
Problema dell’assegnazione dinamica della
memoria:
• first-fit, best-fit, worst-fit,
• frammentazione esterna.
Problema della quantità di spazio necessario:
• La dimensione massima è fissa.
•Frammentazione interna
• Assegnazione contigua con Estensione

Sistemi di Elaborazione A.A. 2004/2005 33


Assegnazione Concatenata
Ogni file è una lista concatenata di blocchi.
Ogni blocco può trovarsi in un punto qualsiasi del disco.

 Traduzione degli indirizzi


sia
LA = Indirizzo Logico
B = Numero di Blocco
S = Scostamento:
 B = LA / 511
 S = (LA % 511) + 1

Sistemi di Elaborazione A.A. 2004/2005 34


Assegnazione Concatenata
 È semplice.
 Non esiste frammentazione esterna.
 Non è necessario dichiarare la dimensione massima.

 Permette solo l’accesso sequenziale.


 I puntatori richiedono spazio. Blocco = Pointer: 4 byte
(512 byte)
Dati: 508 byte
 Affidabilità (se si perde un puntatore …)

× T

Sistemi di Elaborazione A.A. 2004/2005 35


File-Allocation Table (FAT)
Variante dell’assegnazione concatenata.
È utilizzata da MS-DOS e OS/2.

Sistemi di Elaborazione A.A. 2004/2005 36


Assegnazione Indicizzata
Tutti i puntatori vengono mantenuti in una tabella indice.

Accesso diretto
Accesso dinamico
senza frammentazione
esterna.
File di lunghezza
illimitata.

Necessità di riservare
dello spazio per la
tabella indice.
Sovraccarico per la
gestione della tabella
indice.

Sistemi di Elaborazione A.A. 2004/2005 37


Assegnazione Indicizzata
Schema Concatenato
 La tabella degli indici è realizzata con una lista concatenata
di blocchi
 Traduzione degli indirizzi
sia
LA = Indirizzo Logico
Q1 = blocco della tabella indice
Q2 = scostamento nel blocco della tabella indice
R2 = scostamento nel blocco del file
 Q1 = LA / (512 × 511)
 R1 = LA % (512 × 511)
 Q2 = R1 / 512
 R2 = R1 % 512

Sistemi di Elaborazione A.A. 2004/2005 38


Assegnazione Indicizzata
Indice a più Livelli
 La tabella degli indici è a sua volta indicizzata.
 Traduzione degli indirizzi (esempio a due livelli)
sia
LA = Indirizzo Logico
Q1 = scostamento nella tabella indice di primo livello (outer index)
Q2 = scostamento nel blocco della tabella indice di 2° livello
R2 = scostamento nel blocco del file
 Q1 = LA / (512 × 512)
 R1 = LA % (512 × 512)
 Q2 = R1 / 512
 R2 = R1 % 512

outer-index index table file


Sistemi di Elaborazione A.A. 2004/2005 39
Assegnazione Indicizzata
Schema Combinato
UFS – File System di Unix BSD (8K bytes per blocco)

(12)

Sistemi di Elaborazione A.A. 2004/2005 40


Gestione dello Spazio Libero
Vettore di Bit
0 1 2 n-1


0 ⇒ block[i] libero
bit[i] =
1 ⇒ block[i] occupato

numero blocco = (numero di bit per parola) * (numero di parole di valore 0) +


(offset del primo bit a 1)

 Facile da realizzare
 Efficiente solo se il vettore è tenuto in memoria centrale

 Utilizzabile solo se i dischi sono piccoli

Sistemi di Elaborazione A.A. 2004/2005 41


Gestione dello Spazio Libero
Lista Concatenata

Sistemi di Elaborazione A.A. 2004/2005 42


Cache del Disco
 Per migliorare le prestazioni del file system si può utilizzare una
parte della memoria centrale come cache del disco.
 Nella cache del disco vengono tenuti i blocchi che si prevede di
utilizzare entro breve tempo
 Per migliorare le prestazioni nei PC, a volte una parte della
memoria viene utilizzata come disco virtuale (RAM disk).

 Algoritmo di sostituzione dei blocchi: LRU

Diverse locazioni di cache per i dischi


Sistemi di Elaborazione A.A. 2004/2005 43
Cache delle Pagine
 Utilizza tecniche di memoria virtuale per la gestione dei dati dei
file come pagine anzichè come blocchi fisici del disco.
 L’uso degli indirizzi virtuali è più efficiente dell’uso dei blocchi
fisici del disco
 Questo permette di utilizzare la cache sia per le pagine dei
processi sia per le pagine dei dati del disco (memoria virtuale
unificata)

 Algoritmo di sostituzione delle pagine:


• LRU
• Paginazine con priorità
l’algoritmo di scansione delle pagine dà la priorità alle pagine dei
processi rispetto a quelle dei dati del disco.

Sistemi di Elaborazione A.A. 2004/2005 44


File-System
 Interfaccia del File System
 Tipo di Dato Astratto File
 File Ordinari
 Directory
 File Speciali
 Protezioni
 Realizzazione del File System
 Struttura dei file system
 Realizzazione delle directory
 Realizzazione dei file (assegnazione dei blocchi liberi)
 Cache (dei blocchi e delle pagine)
 File System di Linux
• Virtual File System
• Ext2 File System
• Ext3 File System
• Proc File System
• Network File System

Sistemi di Elaborazione A.A. 2004/2005 45


File System di Linux

 Interfaccia del File System


• Il file system di linux appare adotta una interfaccia a grafo con la
stessa semantica degli altri sistemi Unix.
 Realizzazione del File System
• Il file system di linux deve essere in grado di gestire diversi tipi di
file system contemporaneamente.
• I dettagli implementativi di ogni tipo di file system vengono nascosti
da uno strato comune a tutti, il file system virtuale (VFS).
• VFS è stato progettato secondo i principi della programmazione ad
oggetti.
• I tre tipi di oggetti principali definiti dal VFS sono:
 inode-object e file-object rappresentano file singoli
 file-system-object rappresenta un intero file system

Sistemi di Elaborazione A.A. 2004/2005 46


File System di Linux
Virtual File System
 Media based  Network
• ext2 - Linux native • nfs
• Coda
• minix - Minix
• AFS - Andrew FS
• ufs – BSD Unix
• smbfs – Lan Manager
• sysv – System V Unix
• ncpfs - Novell
• fat - DOS FS
• vfat - win 95  Journaling
• NTFS - NT ’s FS • ext3 - Linux native
• hpfs - OS/2 • reiserfs - Linux native
• Isofs - CDROM
• hfs - Macintosh  Special ones
• affs - Amiga Fast FS • procfs - proc
• adfs - Acorn-strongarm • umsdos - Unix in DOS
• userfs - redirector to user

Sistemi di Elaborazione A.A. 2004/2005 47


File System di Linux
Virtual File System
System Call Layer

VFS Layer

Local Local NFS NFS


FS 1 FS 2 Client Server

Buffer Cache

Driver Driver Message Message


to server from client

Local Local
disk disk

Sistemi di Elaborazione A.A. 2004/2005 48


File System di Linux
Virtual File System
 Layout di un file system
Boot Gestione Gestione Root File e
Superblock
Block spazio libero spazio occupato dir Directory

 Cosa contiene un superblocco in Linux?


• meta-informazioni sull'intero file system
• qual'è il file system contenuto nella partizione
• quanti blocchi esistono, quanti sono liberi
• qual’è la dimensione dei blocchi
• informazioni specifiche dei particolari file system

Sistemi di Elaborazione A.A. 2004/2005 49


File System di Linux
Ext2 File System
 Ext2fs utilizza un meccanismo di allocazione dei blocchi di un
file simile a quello di BSD Fast File System (ffs).
 Le principali differenze sono:
• In ffs, i blocchi sono da 8Kb e sono suddivisi in frammenti da 1Kb
per ridurre la frammentazione interna nell’ultimo blocco.
• Ext2fs non usa frammenti, esistono solo blocchi da 1Kb, anche se
sono permessi anche blocchi da 2Kb e 4Kb.
• Ext2fs utilizza politiche di allocazione progettate in modo tale che
una richiesta di I/O riguardante diversi blocchi può essere
effettuata con una sola operazione:
 suddivide un file system in gruppi di blocchi e tenta di
assegnare ad un file solo blocchi appartenenti ad un unico
gruppo;
 tenta di posizionare blocchi logicamente adiacenti in blocchi
fisicamente adiacenti sul disco.

Sistemi di Elaborazione A.A. 2004/2005 50


File System di Linux
Ext2 File System
Gruppo di blocchi

Boot Block Block Block Block


Block Group 1 Group 2 Group 3 … Group n


Super- Group Block i-node
i-nodes Data blocks
block descriptor bitmap bitmap


Sistemi di Elaborazione A.A. 2004/2005 51
File System di Linux
Ext2 File System
Politica di assegnazione dei blocchi

Sistemi di Elaborazione A.A. 2004/2005 52


File System di Linux
Ext3 File System
 Ext3 – è una versione journaling di Ext2 (ovvero con
annotazione delle modifiche)
• Largamente basato su codice Ext2 (un file system Ext3 può essere
montato come file system Ext2)
• Inserisce un journal (.journal file) in Ext2

 Come funziona il journal di Ext3?


• Ogni operazione sul file system viene fatta in due passi:
 una copia dei blocchi da scrivere viene scritta nel journal
(commit)
 al completamento del commit, i blocchi vengono scritti nelle
effettive destinazioni
• Al momento del recovery (distinguiamo due casi):
 prima della terminazione del commit: rimozione, fs inalterato
 dopo la terminazione del commit: replica delle operazioni

Sistemi di Elaborazione A.A. 2004/2005 53


File System di Linux
Ext3 File System
 Tre modalità di funzionamento:
• Journal
 Nel journal finiscono sia i metadati che i dati
 Molto costoso
• Ordered
 Prima vengono fatte le operazioni sui dati
 Poi i metadati vengono scritti sul journal
 Poi i metadati sono scritti nella destinazione effettiva
 Default
• Writeback
 Nel journal finiscono solo i metadati
 Più efficiente

Sistemi di Elaborazione A.A. 2004/2005 54


File System di Linux
Proc File System
 Il file system proc non serve per archiviare in modo permanente
dati, ma serve da interfaccia per altri servizi, quindi:
• non memorizza dati,
• il suo contenuto è calcolato "on demand“ a seconda delle richieste
dei processi utenti
 proc deve implementare una struttura di directory e il contenuto
dei file; questo significa anche definire un inode number univoco
e persistente per ogni directory e file contenuto nel file system
• il numero di inode identifica l’operazione richiesta da un utente che
cerchi di leggere un certo file o di esaminare una certa directory
• quando i dati vengono letti, proc raccogliere le informazioni
appropriate, le formatta in forma testuale e le copia nel buffer di
lettura del processo richiedente
 Esempio: il comando ps
• Invece di essere un processo privilegiato con accesso alla
descrizione dei processi direttamente in memoria virtuale
• È un processo ordinario che legge i dati contenuti nel file system
proc

Sistemi di Elaborazione A.A. 2004/2005 55


File System di Linux
Client kernel Network File System Server kernel
System Call Layer System Call Layer

VFS Layer VFS Layer

Local Local NFS NFS Local Local


FS 1 FS 2 Client Server FS 1 FS 2

Buffer Cache Buffer Cache

Driver Driver Message Message Driver Driver


to server from client

Local Local Local Local


disk disk disk disk

Sistemi di Elaborazione A.A. 2004/2005 56


File System di Linux
Network File System
Esempio
Dati tre file system indipendenti

Sistemi di Elaborazione A.A. 2004/2005 57


File System di Linux
Network File System

Montaggio di Montaggio in cascata di


S1:/usr/shared in S2:/usr/dir2 in
U:/usr/local U:/usr/local/dir1
ottenuto al passo precedente
Sistemi di Elaborazione A.A. 2004/2005 58
Gestione dell’I/O
 Gestione dei dispositivi di I/O
• Hardware dei dispositivi di I/O
• Controller dei dispositivi di I/O
• Driver dei dispositivi di I/O
• Sottosistema per l’I/O del Kernel
• Ciclo di vita di una richiesta di I/O
 Gestione dell’Unità a Disco
• Struttura del disco
• Scheduling del disco
• Gestione del disco
• Strutture RAID
 Gestione dell’I/O in Linux
• Struttura
• Tipi di dispositivi
• Scheduling del disco

Sistemi di Elaborazione A.A. 2004/2005 1


Struttura Relativa all’I/O del Kernel

Sistemi di Elaborazione A.A. 2004/2005 2


Una Tipica Struttura a BUS di un PC

Sistemi di Elaborazione A.A. 2004/2005 3


Hardware dei Dispositivi di I/O
 Esiste una incredibile varietà di dispositivi di I/O
 Concetti comuni
• Porta
• Bus
• Controller
 I dispositivi hanno indirizzi usati da
• istruzioni dirette di I/O
• memory-mapped I/O

Sistemi di Elaborazione A.A. 2004/2005 4


Indirizzi delle Porte dei Dispositivi di I/O nei PC
(elenco parziale)

Sistemi di Elaborazione A.A. 2004/2005 5


Caratteristiche dei Dispositivi di I/O

Sistemi di Elaborazione A.A. 2004/2005 6


Dispositivi a Blocchi e a Caratteri
 Dispositivi a Blocchi
I dispositivi a blocchi comprendono i dischi
• Sono a disposizione istruzioni quali read, write, seek.
• Le applicazioni comunicano attraverso l’interfaccia del File System
oppure attraverso l’I/O a basso livello.
• È possibile l’accesso memory-mapped

 Dispositivi a Caratteri
I dispositivi a carattere comprendono tastiere, mouse, porte
seriali
• Sono a disposizione istruzioni quali get, put.
• Esistono librerie che permettono operazioni di editing (quali
l’accesso riga per riga o il backspace)

 Dispositivi di Rete
I dispositivi di rete sono profondamente diversi dagli altri, tanto
da avere una interfaccia propria.
• Ad esempio le applicazioni comunicano atraverso l’interfaccia delle
socket.
Sistemi di Elaborazione A.A. 2004/2005 7
Velocità di Trasferimento di alcuni Dispositivi

Sistemi di Elaborazione A.A. 2004/2005 8


Controller dei Dispositivi di I/O
Indirizzi
Bus Dati
Controllo

Registro Indirizzo Registro Comando Registro Stato

Buffer
Decodificatore Circuiti di
indirizzi controllo

Controller

Dispositivo

Sistemi di Elaborazione A.A. 2004/2005 9


Controller dei Dispositivi di I/O
Ogni dispositivo e’ collegato al bus di sistema tramite un’interfaccia
dove risiedono alcuni registri (di controllo, per permettere la
sincronizzazione CPU-Dispositivo, buffer per contenere i dati in
ingresso/uscita). Questa interfaccia e’ chiamata controller.

La CPU colloquia con il controller scrivendo/leggendo i suoi registri:

-utilizzando apposite istruzioni (IN / OUT) che avranno come


parametro un “indirizzo” che identifica un particolare controller
-utilizzando normali istruzioni LOAD/STORE a indirizzi associati ai
registri del controller: questa tecnica si chiama Memory Mapped I/O

Sistemi di Elaborazione A.A. 2004/2005 10


Controller dei Dispositivi di I/O
Nelle architetture più semplici si trovano normalmente tre tipi di
schemi per eseguire le azioni di I/O

•I/O programmato con Busy-Waiting

•I/O guidato dalle interruzioni (Interrupt)

•I/O con accesso diretto alla memoria (DMA)

Sistemi di Elaborazione A.A. 2004/2005 11


Driver dei Dispositivi di I/O
Esempio: driver di una tastiera
Assunzioni semplificative
 La periferica è un dispositivo di input di tipo carattere.
 i registri comando e stato si riducono ad un unico registro
flag (flag = 0 equivale a richiesta di operazione e flag = 1
equivale a operazione completata)
 La sola operazione possibile è il trasferimento di un carattere
in ingresso.
 attraverso il registro di interfaccia dati.
 Il driver non esegue controlli su eventuali malfunzionamenti.
 La procedura leggi_linea restituisce in uscita il numero dei
caratteri effettivamente trasferiti.
 L’operazione è considerata conclusa se giunge un carattere di
fine linea o se il buffer è pieno.

(continua …)

Sistemi di Elaborazione A.A. 2004/2005 12


Driver dei Dispositivi di I/O
Esempio: driver di una tastiera

(… continua)

 La lunghezza della linea di caratteri e il carattere da interpretare


come fine linea possono essere selezionati attraverso la
procedura inizializza.
 La mutua esclusione nell’esecuzione delle procedure viene
realizzata attraverso il meccanismo di disabilitazione delle
interruzioni.

Sistemi di Elaborazione A.A. 2004/2005 13


Driver dei Dispositivi di I/O
Esempio: driver di una tastiera
#define BUFFER_SIZE 10

/* Device Control Block */


typedef struct {
/* buffer di memorizzazione dei caratteri */
char buffer[BUFFER_SIZE];
/* numero caratteri trasferiti */
int count;
/* carattere di fine linea */
char eol;
/* lunghezza massima di una linea */
int lungh_linea;
/* coda di attesa per processo richiedente */
PCB *trasf_avvenuto;
/* operazione in corso */
boolean occupato;
} t_DCB;

Sistemi di Elaborazione A.A. 2004/2005 14


Driver dei Dispositivi di I/O
Esempio: driver di una tastiera

/* registri hardware del controller */


typedef struct {
/* registro di lettura e scrittura dati */
char dati;
/* registro di comando e di stato */
boolean flag;
} t_registri;

t_DCB DCB;
t_registri registri;

Sistemi di Elaborazione A.A. 2004/2005 15


Driver dei Dispositivi di I/O
Esempio: driver di una tastiera
/* Procedura di richiesta operazione –
richiamato dalla system call */
int leggi_linea(PCB p; char *local_buffer)
{
if (DCB.occupato)
return –1;
else
{
DCB.occupato = 1; /* inizializzazione */
DCB.count = 0;
registri.flag = 0; /*comando iniz. controller */
/* attesa del completamento operazione */
add p to DCB.trasf_avvenuto;
local_buffer = DCB.buffer /*trasferimento dati*/
DCB.occupato = 0;
return DCB.count;
}
}
Sistemi di Elaborazione A.A. 2004/2005 16
Driver dei Dispositivi di I/O
Esempio: driver di una tastiera
/* Interrupt handler: richiamato dall’interrupt HW */
void risposta_interruzione()
{
/* acquisizione di un carattere */
DCB.count++;
DCB.buffer[DCB.count] = registri.dati;
if (DCB.count == 80) ||
(DCB.buffer[DCB.count] == DCB.eol)
/* fine dell’operazione */
resume p from DCB.traf_avvenuto;
else
/* nuovo comando al controller */
registri.flag = 0;
}

Sistemi di Elaborazione A.A. 2004/2005 17


Driver dei Dispositivi di I/O
Esempio: driver di una tastiera
/* Procedura di inizializzazione */
void inizializza(int lunghezza; char eol)
{
DCB.lungh_linea = lunghezza;
DCB.eol = eol;
DCB.occupato = 0;
}

Sistemi di Elaborazione A.A. 2004/2005 18


Sottosistema per l’I/O del Kernel
 Scheduling - stabilire un ordine d’esecuzione efficace ad un insieme di
richieste di I/O. Si applicano criteri simili a quelli visti per la CPU
 Buffering – memorizzazione transitoria dei dati in memoria mentre essi
sono trasferiti fra due dispositivi o tra una applicazione ed un dispositivo.
• Il produttore ed il consumatore hanno velocità diverse (doppio buffer)
• I dispositivi trasferiscono dati in blocchi di dimensioni diverse
• Per garantire la “semantica delle copie”
 Caching – memoria veloce per tenere una copia dei dati che si stanno
utilizzando
• La cache contiene sempre una copia, il buffer non è detto
 Spooling – è una coda contenente dati per un dispositivo (per es. la
stampante) che non può accettare flussi di dati intercalati
• I dati provenienti da una singola applicazione si registrano in un specifico file
su disco, quando il flusso è terminato, si inserisce il file nello spool
 Prenotazione dei dispositivi - sistema di prenotazione ed accodamento
dei processi che richiedono l’uso di dispositivi non condivisibili
 Gestione degli errori – dovuti a motivi contingenti o permanenti. Gli errori
spesso vengono riportati in un error log
• Errori contingenti: il SO ritenta
• Errori permanenti: viene restituito un codice di errore

Sistemi di Elaborazione A.A. 2004/2005 19


Sottosistema per l’I/O del Kernel
Buffering

Sistemi di Elaborazione A.A. 2004/2005 20


Sottosistema per l’I/O del Kernel
Caching
 Un’area della memoria centrale viene riservata per tenere una copia dei
settori del disco che si stanno utilizzando
 Si ha bisogno di un algoritmo di sostituzione dei blocchi quando la cache
è piena.
 Least Recently Used – viene sostituito il blocco che non viene
utilizzato da più tempo. La cache è una pila (stack) di blocchi.
 Least Frequently Used – viene sostituito il blocco che è stato
utilizzato di meno. Ad ogni blocco viene associato un contatore che
viene incrementato ad ogni accesso.

Sistemi di Elaborazione A.A. 2004/2005 21


Sottosistema per l’I/O del Kernel
Caching

Sistemi di Elaborazione A.A. 2004/2005 22


Sottosistema per l’I/O del Kernel
Caching

Sistemi di Elaborazione A.A. 2004/2005 23


Sottosistema per l’I/O del Kernel
Strutture Dati
 Il kernel mantiene le informazioni relative allo stato dei
dispositivi di I/O, per esempio la tabella dei file aperti, la tabella
delle connessioni di rete, lo stato dei dispositivi a carattere.

 In alcuni SO l’I/O viene realizzato adottando il paradigma ad


oggetti e lo scambio dei messaggi, meno efficiente ma di più
facile progettazione

Sistemi di Elaborazione A.A. 2004/2005 24


Strutture Dati di Unix

Sistemi di Elaborazione A.A. 2004/2005 25


Ciclo di Vita di una Richiesta di I/O

Sistemi di Elaborazione A.A. 2004/2005 26


Gestione dell’I/O
 Gestione dei dispositivi di I/O
 Hardware dei dispositivi di I/O
 Controller dei dispositivi di I/O
 Driver dei dispositivi di I/O
 Sottosistema per l’I/O del Kernel
 Ciclo di vita di una richiesta di I/O
 Gestione dell’Unità a Disco
• Struttura del disco
• Scheduling del disco
• Gestione del disco
• Strutture RAID
 Gestione dell’I/O in Linux
• Struttura
• Tipi di dispositivi
• Scheduling del disco

Sistemi di Elaborazione A.A. 2004/2005 27


Struttura del Disco
 A basso livello, le unità a disco sono suddivise in settori
individuati dalla seguente tripletta
< superfice, cilindro, settore >.

Sistemi di Elaborazione A.A. 2004/2005 28


Struttura del Disco
 Le unità a disco sono indirizzate come un unico grande array
mono-dimensionale di blocchi logici, dove i blocchi logici sono
l’unità di trasferimento più piccola.
 I blocchi logici dell’array mono-dimensionale vengono associati
ai settori del disco in modo sequenziale.
Indirizzo blocchi del disco: I
0 1 2 3 4 5 6 7 ••••• N

s = I mod S
I = (n*C*S) + (c*S) + s c = (I div S) mod C
n = (I div S) div C
= I div C*S
n : superficie
c : cilindro •
s : settore S = settori/cilindro
Indirizzo fisico: <n,c,s> C = cilindri/superficie
Sistemi di Elaborazione A.A. 2004/2005 29
Scheduling del Disco
Garantire un uso efficiente dell’unità a disco significa avere
tempi di accesso contenuti e ampiezza di banda elevata.
 Tempo di accesso è composto principalmente da:
• Tempo di ricerca (seek time): il tempo necessario alle testine per
posizionarsi nel cilindro contenente il settore desiderato.
• Latenza di rotazione: il tempo necessario affinché il disco ruoti
fino a quando il settore desiderato si trova sotto la testina.
Minimizzare il tempo di accesso di fatto significa minimizzare il
tempo di ricerca (è difficile minimizzare il tempo di latenza in
quanto le moderne unità a disco non rivelano la posizione
fisica dei blocchi logici).
Per minimizzare il tempo di ricerca si considera
tempo di ricerca ≈ distanza di ricerca
 L’ampiezza di banda è il numero di byte trasferiti diviso il
tempo intercorso fra la prima richiesta e il completamento
dell’ultimo trasferimento.

Sistemi di Elaborazione A.A. 2004/2005 30


Scheduling del Disco
 I diversi algoritmi di scheduling vengono illustrati prendendo in
considerazione i cilindri che contengono i blocchi richiesti.
Questo è dovuto alla scelta di considerare solo il tempo di
ricerca.

 L’esempio di riferimento è il seguente:


• supponiamo di avere la seguente coda di richieste (espresse dal
numero di cilindro corrispondente)

98, 183, 37, 122, 14, 124, 65, 67

• supponiamo che la testina si trovi inizialmente al cilindro 53

Sistemi di Elaborazione A.A. 2004/2005 31


First Come First Served (FCFS)
Seleziona la richiesta secondo l’ordine di arrivo.
Nell’esempio in figura la testina si muove in totale per 640 cilindri

Sistemi di Elaborazione A.A. 2004/2005 32


Shortest Seek Time First (SSTF)
Seleziona la richiesta con il minimo tempo di ricerca rispetto alla
posizione corrente della testina.
SSTF è una specie di SJF; èuò causare starvation.
Nell’esempio in figura la testina si muove in totale per 236 cilindri

Sistemi di Elaborazione A.A. 2004/2005 33


Scheduling per Scansione (SCAN)
Il braccio del disco parte da un estremo del disco e si muove
verso l’altro estremo per poi tornare indietro, servendo le richieste
mano a mano che le incontra (algoritmo dell’ascensore).
Nell’esempio in figura la testina si muove in totale per 208 cilindri

Sistemi di Elaborazione A.A. 2004/2005 34


Scheduling per Scansione Circolare (C-SCAN)
Come SCAN, solo che arrivato ad un estremo del disco, riparte
verso l’altro senza servire richieste durante il viaggio di ritorno.
Tratta i cilindri come una lista circolare.

Sistemi di Elaborazione A.A. 2004/2005 35


LOOK e C-LOOK
 Varianti di SCAN e C-SCAN. Il braccio si sposta verso una
estremità solo fino a quando ci sono altre richieste da servire in
quella direzione.
 In figura è riportato un esempio di C-LOOK.

Sistemi di Elaborazione A.A. 2004/2005 36


Scheduling del Disco

Sistemi di Elaborazione A.A. 2004/2005 37


Gestione dell’Unità a Disco
 Formattazione a basso livello, o formattazione fisica —
Suddivisione del disco in settori che il controller del disco può
leggere e scrivere.
 Partizioni – Suddivisione del disco in uno o più gruppi di cilindri.
Ogni partizione viene gestita dal SO come una unità disco a se
stante.
 Formattazione logica – Creazione del File System.
 Blocco d’avviamento (boot block) – Contiene il programma di
bootstrap (la ROM contiene il bootstrap loader).
 Area di swap – È l’area del disco utilizzata dal SO per la
memoria virtuale. Può essere collocata:
• all’interno del normale file system
• in una partizione a se stante

Sistemi di Elaborazione A.A. 2004/2005 38


Strutture RAID
(Redundant Array of Inexpensive Disks)
I dischi RAID sono batterie ridondanti di dischi
 Miglioramento delle prestazioni tramite il parallelismo:
• Sezionamento dei dati (data striping) – consiste nel distribuire i bit
di ciascun byte su più dischi.
 Miglioramento dell’affidabilità tramite la ridondanza:
• Copiatura speculare (mirroring o shadowing) - ogni disco logico
consiste di due dischi fisici e ogni scrittura si effettua su entrambi i
dischi. Se uno dei dischi si guasta, si possono utilizzare i dati
dell’altro disco.
• Sezionamento + bit di parità (o + codici di correzione degli errori) –
per diminuire il grado di ridondanza richiesto si può pensare di
combinare il sezionamento con l’uso dei codici di correzione degli
errori (o con l’uso dei bit di parità). Questi codici associano ad ogni
byte uno o più bit il valore dei quali dipende dai valori dei bit
contenuti nel byte stesso.

Sistemi di Elaborazione A.A. 2004/2005 39


Livelli RAID da 0 a 6

Sistemi di Elaborazione A.A. 2004/2005 40


Livelli RAID (0 + 1) e (1 + 0)

Sistemi di Elaborazione A.A. 2004/2005 41


Gestione dell’I/O
 Gestione dei dispositivi di I/O
 Hardware dei dispositivi di I/O
 Controller dei dispositivi di I/O
 Driver dei dispositivi di I/O
 Sottosistema per l’I/O del Kernel
 Ciclo di vita di una richiesta di I/O
 Gestione dell’Unità a Disco
 Struttura del disco
 Scheduling del disco
 Gestione del disco
 Strutture RAID
 Gestione dell’I/O in Linux
• Struttura
• Tipi di dispositivi
• Scheduling del disco

Sistemi di Elaborazione A.A. 2004/2005 42


Gestione dell’I/O in Linux
 Linux classifica tutti i dispoisitivi in tre categorie:
• Dispositivi a blocchi, permettono l’accesso diretto a blocchi di dati
di dimensione fissa.
• Dispositivi a caratteri, comprendono gran parte dei dispositivi, non
sono in grado di fornire le funzionalità dei file ordinari.
• Dispositivi di rete, sono interfacciati con il sottosistema di gestione
delle reti del kernel.

Sistemi di Elaborazione A.A. 2004/2005 43


Gestione dell’I/O in Linux
Struttura

Sistemi di Elaborazione A.A. 2004/2005 44


Gestione dell’I/O in Linux
Dispositivi a Blocchi
 È la principale interfaccia a tutti i dischi del sistema.
 Linux accede ai dischi attraverso due cache:
• I dati sono memorizzati nella page cache, che è unita alla memoria
virtuale del sistema;
• I metadati sono memorizzati nella buffer cache, una cache
separata indicizzata dal blocco fisico del disco.
 Il block buffer cache serve principalmente a due cose:
• come pool di buffer per I/O attivo,
• come cache per l’I/O completato.
 Il request manager gestisce la scrittura e la lettura del buffer con
dati provenienti da/diretti verso un driver di un dispositivo a
blocchi.

Sistemi di Elaborazione A.A. 2004/2005 45


Gestione dell’I/O in Linux
Dispositivi a Caratteri
 Un driver di un dispositivo a caratteri deve avere un insieme di
funzioni che realizzano le varie operazioni sui file.
 Il kernel non esegue quasi nessuna operazione alla richiesta di
leggere o scrivere su un dispositivo a caratteri, semplicemente
passa la richiesta al dispositivo.
 La sola eccezione è rappresentata dai terminali, nei confronti
dei quali il kernel mantiene una interfaccia standard.

Sistemi di Elaborazione A.A. 2004/2005 46


Gestione dell’I/O in Linux
Dispositivi di Rete
 I dispositivi di rete in Linux permettono di gestire:
• Il protocollo standard di Internet (TCP/IP) per la comunicazione tra
macchine Unix,
• Protocolli per macchine con SO non Unix, come Appletalk e IPX.
 È realizzato con tre strati di software:
• L’interfaccia delle socket (permette la gestione della rete come se
fosse un file)
• I driver dei protocolli
• I driver dei dispositivi di rete

Sistemi di Elaborazione A.A. 2004/2005 47


Gestione dell’I/O in Linux
Scheduling del disco
 Elevator scheduler
• Utilizza una coda sola sia per le richieste di lettura che di scrittura.
• Le richieste sono ordinate per numero di blocco.
• Si muove in una sola direzione

Sistemi di Elaborazione A.A. 2004/2005 48


Gestione dell’I/O in Linux
Scheduling del disco
 Deadline scheduler
• Utilizza tre code
> Incoming request – coda dove vengono inserite tutte le
richieste ordinate per numero di blocco.
> Read request – coda gestita FIFO dove vengono inserite tutte
le richieste di lettura presenti nella incoming request.
> Write request – coda gestita FIFO dove vengono inserite tutte
le richieste di scrittura presenti nella incoming request.
• Le richieste sono rimosse dalle code read request e write request
se sono state servite dall’elevetor scheduler.
• Ogni richiesta ha una scadenza (expiration time), alla scadere della
quale se non è stata servita il controllo passa al FIFO scheduler
(evita la starvation).

Sistemi di Elaborazione A.A. 2004/2005 49


Gestione dell’I/O in Linux
Scheduling del disco
 Deadline scheduler

Sistemi di Elaborazione A.A. 2004/2005 50


Gestione dell’I/O in Linux
Scheduling del disco
 Anticipatory I/O scheduler
• I programmi spesso utilizzano settori consecutivi.
• Dopo aver soddisfatto una richiesta aspetta per un breve periodo
(fino a 6ms) per vedere se arriva una richiesta di un settore vicino.

Sistemi di Elaborazione A.A. 2004/2005 51