Sei sulla pagina 1di 14

Processi

Parte II

Processi e Thread

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 1

Processi

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

I processi vengono creati per svolgere precisi compiti


Allatto della creazione il SO li prende in carico e ne fa
avanzare lesecuzione, secondo precise politiche
Processi di sistema e processi utente
Situazioni in cui vengono creati processi
Al bootstrap del SO

Viene avviato un primo processo (iniziatore)


Questo crea altri processi per i servizi del SO
Alcuni processi accettano richieste dellutente

Solo un programma attivo in ogni istante


La multiprogrammazione virtualizza la CPU
come se ogni processo avesse una CPU per se
Il SO mantiene sotto controllo lo stato dei processi

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 2

Creazione di processi

Concetto fondamentale per lo svluppo dei sistemi


operativi, e di applicazioni complesse
Permette di decomporre lapplicazione in un insieme di
processi sequenziali
I processi vengono elaborati a rotazione sulla CPU
Su di un sistema uniprocessore lelaborazione in realt
non parallela ma pseudoparallela
Il programmatore pu concentrarsi sul singolo processo
come se avesse a disposizione lintero sistema
Solo le interazioni esplicite con gli altri processi devono
essere considerate

Per servire una richiesta dellutente


Per avviare lesecuzione di un job batch
II - 3

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 4

Terminazione di processi

Gerarchie di processi

I processi possono terminare per cause diverse e con


modalit diverse
Questo pu avvenire con o senza il loro consenso
Tipiche situazioni di terminazione

Processo genitore (parent process)


Processo figlio (child process)

Uscita normale (volontaria)


Uscita per errore (volontaria)
Fatal error (involontaria)

Ucciso da un altro processo (involontaria)

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 5

Stati fondamentali di un processo

I figli possono creare altri figli: crescete e riproducetevi


Nellambito della gerarchia i padri (e gli avi) conservano
particolari diritti sui figli, per esempio quello di ucciderli
UNIX ha un concetto chiaro e netto di gerarchia, e
organizza i processi in process group
In Windows il concetto pi sfumato: i padri possono in
qualche modo cedere i loro diritti sui figli

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 6

Cambiamenti di stato

Un processo pu creare un altro processo

Un processo si trova a rotazione in uno dei tre stati

Running: in esecuzione sulla CPU


Ready: pronto ad eseguire appena gli viene concessa la CPU

I cambiamenti di stato sono indotti:


Tra ready e running (e vice-versa): dallo scheduler, il
processo del SO che assegna la CPU
Tra running e blocked: dal verificarsi di un evento che
causa il blocco, es. richiesta di I/O, attesa di segnale
Tra blocked e ready: dal verificarsi dellevento di cui il
processo in attesa, es. fine I/O, ricezione di segnale
In tutti i casi il cambiamento viene indotto da una trap o da
una interruzione
Le trap e le interruzioni vengono gestite dal (micro)kernel

Blocked: in attesa di un evento per riprendere lesecuzione


Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 7

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 8

Stati dei processi

Implementazione dei processi

Oltre agli stati fondamentali esistono molti altri stati


Definizioni sofisticate e dipendenti dal SO
Tipicamente lo stato contiene informazioni su
Comportamento del processo in tempi recenti
Risorse possedute dal processo, e.g. memoria
Priorit
Alcuni esempi
Sleeping
Hybernate

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 9

La Process Table

Il sistema operativo mantiene per ciascun processo tutte


le informazioni necessarie a gestirlo
Identificazione e gerarchia
Risorse assegnate
Stato del processo
Stato della CPU etc.
Le informazioni sono riunite in una apposita struttura, la
Process Table
La struttura differisce nei dettagli a seconda del SO

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 10

Thread

In un processo possibile distinguere due componenti


Le risorse allocate al processo: files aperti, processi
figli, etc. (vedi Process Table)

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 11

La sua esecuzione: e tutti i dettagli relativi, stato della


CPU, stack etc.
pensabile e vantaggioso avere pi esecuzioni per lo
stesso processo, che ne condividono le risorse
Ciascuna di queste denominata thread
I moderni sistemi operativi supportano i thread

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 12

Thread e processi (2)

Thread e processi

(a) Tre processi ciascuno con un unico thread


(b) Un unico processo con tre thread

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 13

Gestione dello stack

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

Ogni thread ha il proprio stack


Tutte le variabili locali si mantengono distinte

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 14

Benefici del multithreading

Alcuni item sono condivisi da tutti i thread di uno stesso


processo
Altri sono replicati per ogni thread
Il SO mantiene parte dellinformazione a livello di thread

II - 15

Creazione e terminazione di un thread molto pi leggere


Modularit e flessibilit delle applicazioni
Implementazione di server concorrenti:
creazione dinamica di un thread per ogni nuova
richiesta di servizio
gestione implicita della concorrenza
Parallelismo di esecuzione: uno stesso processo pu essere
elaborato in parallelo da pi processori
Aumento del livello di multiprogrammazione: migliore
utilizzazione della/e CPU

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 16

Esempio: Web server

Web server: schema del codice

(a) Schema del codice del dispatcher


(b) Schema del codice dello worker

Il dispatcher riceve le richieste e le alloca


Ogni richiesta viene assegnata ad uno worker
Gli worker se non occupati dormono
Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 17

Web server con thread: vantaggi

Aumenta il parallelismo allapplicazione

Quando alcuni thread sono bloccate, altri possono


essere ready ed andare in esecuzione sulla CPU
Semplifica lo sviluppo dellapplicazione
Tutti i dettagli dellelaborazione concorrente di pi
richieste sono gestite implicitamente
Il programmatore non deve tener conto di questi dettagli

Rende lesecuzione complessiva pi leggera


Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 18

Esempio: word processor

Possibile servire pi richieste contemporaneamente

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 19

Possibile avere un thread per ciascun documento aperto


contemporaneamente
Fanno tutti la stessa cosa su documenti diversi
Possibile avere anche pi thread per gestire un solo
documento
Gestione interfaccia
Gestione dei backup periodici
Riformattazione del documento

ES
Con tre documenti aperti su Power Point, posso
controllare sul Task Manager, e vedo che ho 8 thread
Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 20

Esempio: Power Point

Dati processo

Erano aperti tre documenti


Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 21

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

Comunicazione tra processi

Dati thread

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 22

II - 23

Processi e thread sono spesso cooperanti nellambito di


una stessa applicazione o di uno stesso sistema
Per cooperare necessitano di

Scambiarsi informazioni (dati, messaggi)


Sincronizzarsi, per garantire la correttezza
della esecuzione
Lassenza di sincronizzazione pu condurre ad una
esecuzione i cui risultati dipendono da circostanze
esterne (es. ordine di scheduling)
Sincronizzazione necessarie in presenza di condizioni di
corsa (race conditions)

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 24

Condizioni di corsa: esempio

Sezione critica

Per evitare le condizioni di corsa occorre individuare una


sezione critica nel codice di ciascuno dei due processi
La sezione critica racchiude un insieme di operazioni
la cui esecuzione non pu essere interrotta

Due processi cercano di accedere contemporaneamente


alla stessa slot nella directory di spool
Se lo scheduler ci mette lo zampino, possono finire per
assegnarsi la stessa slot

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 25

Condizioni per la mutua esclusione

Le condizioni di corsa si possono verificare se entrambi i


processi si trovano nella sezione critica
Occorre imporre la mutua esclusione nellaccesso alla
sezione critica
Se un processo entra, laltro deve aspettare che esca

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 26

Sezione critica e mutua esclusione

Per assicurare una soluzione corretta ed efficiente alla


mutua esclusione occorre garantire le seguenti condizioni
Mai due processi devono poter essere nella loro sezione
critica contemporaneamente
Deve funzionare indipendentemente dal numero e dalla
velocit delle CPU
Nessun processo al di fuori della sua sezione critica deve
poter bloccare un altro processo
Nessun processo deve poter aspettare indefinitamente
per entrare nella sua sezione critica
Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 27

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 28

Corse critiche e stallo

Atomicit delle operazioni

La mutua esclusione pu solo essere garantita tramite


meccanismi e primitive offerte dal SO
Le soluzioni proposte devono aggirare due problemi tra loro
contrastanti
I processi devono poter essere bloccati per evitare che
entrino in pi di uno nella sezione critica
Lesistenza di situazioni di blocco anche temporaneo
pu causare situazioni di stallo e di attesa indefinita
Purtroppo tutte le soluzioni proposte sono relativamente
complesse, ed implicano un dispendio di risorse

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 30

Soluzione ingenua

I due Processi A e B condividono una sezione critica e si alternano


sulla sezione critica

Proteggere la sezione critica con un flag LOCK


LOCK=0: sezione critica libera

A controlla se la sezione critica libera


La sezione critica libera e A memorizza linformazione
Lelaborazione di A viene interrotta
Viene ripresa lelaborazione di B
B controlla se la sezione critica libera
La sezione critica libera e B memorizza linformazione
B entra nella sezione critica
B continua a lavorare nella sezione critica
Lelaborazione di B viene interrotta
Viene ripresa lelaborazione di A
A entra nella sezione critica (aveva gi controllato)

Sia A che B si trovano nella sezione critica

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 29

Corsa critica: esempio

Un processo prima di entrare nella sezione critica deve


effettuare due operazioni:
1. Controllare se la sezione libera
2. Entrare nella sezione, se essa libera
Alle due operazioni corrispondono almeno due istruzioni
macchina, in genere molte di pi
Lelaborazione di un processo pu essere interrotta dopo
qualsiasi istruzione macchina
Lintera azione non atomica cio indivisibile, e questo
pu provocare situazioni scorrette

II - 31

LOCK=1: sezione critica occupata


Un processo prima di entrare
1. Controlla LOCK
2. Se LOCK=0 pone LOCK=1
3. Entra
Siccome i passi 1. e 2. richiedono istruzioni distinte,
corsa critica si riproduce nellaccesso a LOCK
La soluzione non funziona
Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

la

II - 32

Alternanza stretta (busy waiting)

TSL (Test Set an Lock)

Corretta ma estremamente inefficiente


Un processo pu attendere anche se laltro non nella
sezione critica
Viola una delle condizioni

II - 33

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

Esempio: produttore - consumatore

Lavora se trova
uno slot libero

Lavora se trova
uno slot pieno

I due processi condividono il buffer


Il produttore scrive nel buffer se trova almeno una slot libera;
se no attende
Il consumatore legge dal buffer se trova almeno una slot
piena; se no attende
Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 34

Una soluzione al problema deve garantire che


Consumatore

N slot

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

Produttore - consumatore: problemi

Buffer
Produttore

Soluzione che richiede laggiunta di una istruzione macchina


In una sola azione ininterrompibile la TSL op1,op2
Copia il valore delloperando op2 in op1
Forza il valore di op2 ad 1

II - 35

1. I due processi non manipolino contemporaneamente il


buffer (sezione critica)
2. Il produttore vada in condizione di blocco quando il
buffer pieno
3. Il consumatore vada in condizione di blocco quando il
buffer vuoto
4. Il produttore venga risvegliato se in blocco e si libera
una slot
5. Il consumatore venga risvegliato se in blocco e viene
riempita una slot
Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 36

Semafori

Semafori binari

Variabili intere di sistema non negative modificabili solo


tramite due primitive atomiche (ininterrompibili):

DOWN(S)

S>0:

SS-1

il processo attende su S

S=0:

S>0: SS+1

S = 0 : S S + 1; risveglia i processi in attesa su S

Per entrare un processo fa DOWN(S), quindi S diventa 0


Se un processo trova S=0 si mette in attesa
Quando il processo esce dalla sezione critica, fa UP(S) e
sveglia un eventuale processo in attesa

Lesecuzione delle primitive UP e DOWN garantita dal SO


Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 37

Produttore-Consumatore con semafori

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 39

II - 38

Scheduling

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

Vengono usati per controllare laccesso ad una sezione


critica:
Quando la sezione critica libera: S=1

UP(S)

Sono un caso particolare: S {0,1}

Lassegnazione della CPU ai processi (thread) che sono


nello stato ready fatta dal processo scheduler
Vengono utilizzati particolari discipline di scheduling, basati
su criteri diversi, e spesso contrastanti
massimizzare lutilizzazione della CPU
minimizzare il tempo di esecuzione di un
processo/thread
minimizzare il tempo di risposta, attesa prima che un
processo produca un output

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 40

Richieste di CPU (burst)

Obiettivi dello scheduling

Molto variabili e dipendono dalla natura del processo


(a) CPU bound
(b) I/O bound

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 41

Lassegnazione della CPU ai processi (thread) che sono


nello stato ready fatta dal processo scheduler
Vengono utilizzati particolari discipline di scheduling, basati
su criteri diversi, e spesso contrastanti
massimizzare lutilizzazione della CPU
minimizzare il tempo di esecuzione di un
processo/thread
minimizzare il tempo di risposta, attesa prima che un
processo produca un output

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 42

Priorit e prelazione

Obiettivi e tipologie di sistemi

Ai processi e ai thread possono essere associate priorit


per avvantaggiarli o per penalizzarli:
Priorit statiche: sono una caratteristica intrinseca
dei processi

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 43

Priorit dinamiche: dipendono dai livelli di servizio


conseguiti finora dal processo/thread
Lo schema di assegnazione delle priorit pu essere
modificato dallo amministratore del sistema
La prelazione un caso estremo di priorit: consente di
sottrarre la CPU ad un processo in stato running

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 44

Scheduling nei sistemi batch

Scheduling nei sistemi interattivi

Obiettivi
Massimizzare lutilizzazione della CPU
Massimizzare il throughput (job/ora)

Minimizzare il tempo di turnaround (media del tempo tra


la sottomissione e la fine del job)
Non interessa il tempo di risposta perch gli utenti non sono
interattivi
Molti grandi sistemi centralizzati hanno una parte del carico
costituita da job batch
Il carico batch viene elaborato a sistema scarico (a notte)

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 45

Lobiettivo prioritario di minimizzare i tempi di risposta

Non ha senso lo scheduling a tre livelli

Si tende a favorire i processi con comportamento I/O


bound, a scapito dei CPU bound
Ha senso uno scheduling a due livelli
Memory scheduling
CPU scheduling

Di seguito si discute il CPU scheduling

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

Scheduling FCFS

Scheduling SSTF

FCFS: First Come First Served


I processi vengono mandati in esecuzione nello stesso
ordine in cui sono entrati nella ready list
Non vi prelazione: ogni processo rimane sulla CPU fino
al suo completamento, o fino a quando esso non la rilascia
spontaneamente
Penalizza i processi I/O bound che chiedono poca CPU
Favorisce i processi CPU bound
Causa un sottoutilizzo dei dispositivi di I/O

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 47

II - 46

SSTF: Shortest Service Time First


Viene scelto sempre il processo che richiede il tempo di
servizio pi corto
I tempi di servizio richiesti non sono noti: vengono previsti in
base alle esperienze recenti
Disciplina interessante perch garantisce minimizzazione
del tempo medio di risposta
Per causa un peggioramento della varianza del tempo di
risposta
Interessante soprattutto in contesti interattivi

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 48

Scheduling SSTF: esempio

Scheduling Round-Robin
tempo scaduto

CPU
richiesta di I/O
fine processo

(a) FCFS (8,4,4,4)

Tempo totale
Tempo medio
Tempo minimo
Tempo massimo

(b) SSTF (4,4,4,8)


20
13.5
8
20

Tempo totale
Tempo medio
Tempo minimo
Tempo massimo

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

20
11
4
20
II - 49

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

Classi di priorit servite nellordine, solo se le classi


superiori sono esaurite
Priorit dinamiche usate per riparare alle ingiustizie

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

Round-Robin : la giostra
Ciascun processo/thread resta sulla CPU al massimo per
un tempo , detto quantum
Trascorso questo viene reinserito alla fine della coda
Processi I/O-bound: fanno prevalentemente I/O e non
sfruttano quasi mai il tempo di CPU concesso
Processi CPU-bound: utilizzano tutto il tempo di CPU
concesso, e devono fare molti giri
II - 50

Shortest process next

Round-Robin a code multiple

processi ready

II - 51

Viene scelto il processo con la minore richiesta di CPU


Problema: stimare a priori la durata dei burst di CPU
richiesti dai vari processi
Ci si basa sulla storia passata per aggiornare la stima
Sia n la stima accumulata al passo n e Tn il tempo
effettivamente sperimentato
La nuova stima sar n+1 = n+ (1- ) Tn
La costante permette di stabilire quanto pesa la storia
passata e quanto quella recente
La tecnica di previsione si chiama aging

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 52

Guaranteed scheduling

Scheduling nei sistemi real-time

Lidea quella che ciascun processo abbia la fetta di CPU


che gli spetta da una divisione equa
Se i processi sono n la sua share dovrebbe essere 1/n
Si accumula per ciascuno il tempo totale di CPU goduto
Ad ogni passo si calcola per ogni processo il rapporto fra il
tempo goduto e quello spettante
Rapporti bassi significano ingiustizie subite
Lo scheduler sceglie sempre il processo con il rapporto pi
basso

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 53

Scheduling nei sistemi real-time (2)

In genere ci sono diverse serie di eventi periodici


Il requisito minimo e che il sistema possa sostenere il carico
(schedulable system)
Se ci sono m serie di eventi con richeste di CPU pari a Ci e
periodo Pi , la condizione
m

Ci

P
i =1

Scheduling di tipo statico o dinamico


Caso di particolare interesse i sistemi multimedia

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 55

Elaborazione basata su eventi al cui servizio sono


associate scadenze (deadline)
Creato un processo per ogni evento, con vita breve e
comportamento prevedibile
Obiettivo dello scheduler: fare in modo che le deadline dei
processi siano rispettate (in modo hard o soft)
Due tipi di eventi
Periodici: si presentano ad intervalli regolari
Aperiodici: non prevedibili

Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009

II - 54