2-Risorse e Condivisione
2-Risorse e Condivisione
2-Risorse e Condivisione
LEZIONE 2
RISORSE E CONDIVISICENE
• Generalità
I processi sono i programmi i n evoluzione e per poter evolvere hanno bisogno delle risorse del
sistema di elaborazione: possiamo proprio vedere i l sistema di elaborazione come composto da un
insieme di risorse da assegnare ai processi affinché questi possano svolgere i l proprio compito.
RISORSA
O g n i c o m p o n e n t e riusabile o m e n o , sia h a r d w a r e , sia software necessario al p r o c e s s o
o al sistema.
Per accedere alle risorse i processi sono i n competizione i n quanto spesso esse non sono sufficienti
per t u t t i e quindi è necessario "accaparrarsele" per poterle utilizzare; per esempio i processi c o m -
p e t o n o per avere a disposizione la memoria RAM, per utilizzare l'interfaccia di rete, le stampanti
ecc., e soprattutto i l processore che, nelle nostre architetture, è singolo e senza d i esso nessun
processo può evolvere.
Le risorse possono essere suddivise i n classi e le risorse appartenenti alla stessa classe sono equiva-
lenti, per esempio bytes della memoria, stampanti dello stesso tipo ecc.
CLASSE E ISTANZE
Le risorse d i una classe v e n g o n o d e t t e istanze della classe; il n u m e r o d i risorse in una
classe v i e n e d e t t o m o l t e p l i c i t à d e l t i p o di risorsa.
11
Quando u n processo necessità di una risorsa generalmente non può richiedere una particolare ri-
sorsa ma solo una istanza d i una specifica classe: quindi una richiesta di risorse viene fatta per una
classe d i risorse e può essere soddisfatta da parte del SO assegnando al richiedente una qualsiasi
istanza di quel tipo.
In altre parole, la molteplicità di una risorsa ci indica i l numero massimo d i processi che la possono
usare contemporaneamente: se i l numero di processi è maggiore della molteplicità d i una risorsa,
questa deve essere condivisa tra i processi che v i accedono concorrentemente.
ESEMPIO Ti
Abbiamo detto che i n u n PC è presente u n solo processore, quindi la molteplicità della risorsa pro-
cessore è uguale a uno: i l numero massimo di processi che possono evolvere contemporaneamente
è quindi uno e quando abbiamo la necessità d i far evolvere più processi assieme, questi condividono
l'unica istanza della risorsa e competono per ottenerla.
Condivisione e gestione
Cerchiamo d i chiarire meglio i l concetto di condivisione prendendo spunto da una "legge ferrovia-
ria" del secolo scorso:
•4 " W h e n t w o trains approach each other at a crossing, b o t h shall come t o a full stop and
l ther shall start up again until the other has g o n e " Legge del Kansas •
Gli esempi nella vita quotidiana d i condivisione sono molteplici a partire da quelli d i "natura strada-
le o ferroviaria" (incroci, posteggi, ponti ecc.) a quelli di natura sociale ("lo stesso bagno", "lo stesso
tetto", "la stessa bandiera", "la stessa causa", la stessa opinione" ecc.).
Possiamo dire che condividere è sinonimo d i " a v e r e in comune" e quando parliamo di risorse d i
elaborazione intendiamo dispositivi hardware o componenti software che devono essere assegnati
alternativamente ai singoli processi che le richiedono.
È quindi necessaria una g e s t i o n e d e l l e risorse che può essere organizzata i n fasi, alcune delle quali
sono di natura statica e riguardano la loro assegnazione (pianificazione), mentre altre sono di natu-
ra dinamica e sono relative al loro utilizzo (controllo):
• pianificazione della organizzazione:
- allocazione;
- disponibilità;
- costo;
• controllo delle risorse:
- controllo d i accesso (locale o remoto);
- ottimizzazione;
- autenticazione;
- controllo di correttezza operazioni ed eccezioni.
Le attività sopra elencate vengono svolte dal sistema operativo e per le risorse di molteplicità finita
è necessario controllare gli accessi a ciascuna d i esse i n modo che i l loro l'utilizzo risulti costruttivo.
12
Risorse e condivisione Lezione 2
• Classificazioni
Tra processi e risorse esiste u n legame molto stretto:
In merito alla interazione tra risorse e processi possiamo effettuare la classificazione i n base:
I al tipo d i richieste;
• alla modalità di assegnazioni;
I alla tipologia delle risorse.
O s e c o n d o il n u m e r o :
D singola: la richiesta singola è i l caso normale e si riferisce a una singola risorsa di una classe
definita, cioè u n processo richiede una sola risorsa alla volta.
El multipla: si riferisce a una o più classi, e per ogni classe, a una o più risorse e deve essere
soddisfatta integralmente; è i l caso i n cui u n processo richieda contemporaneamente almeno
due risorse per poter evolvere.
0 s e c o n d o ¡I t i p o d i richiesta c h e e f f e t t u a n o :
D richiesta bloccante: è i l caso i n cui i l processo necessità immediatamente d i quella risorsa
e se non gli viene assegnata immediatamente (in quanto occupata e quindi già i n situazione
di utilizzo da parte d i atri processi) si sospende, passa nello stato di attesa e la sua richiesta
viene accodata e riconsiderata dal gestore di quella risorsa ogni volta che viene rilasciata dal
processo che la sta utilizzando.
0 richiesta non bloccante: i n questo caso i l processo può evolvere ugualmente e nel caso d i
mancanza di disponibilità gli viene effettuata una notifica che il processo richiedente esamina
ma continuando la sua evoluzione senza cioè sospendere la propria elaborazione.
Classificazione dell'assegnazione
L'assegnazione delle risorse avviene i n due modalità:
D statica: l'assegnazione statica d i una risorsa a un processo avviene al momento della creazione
del processo stesso e rimane a esso "dedicata" fino alla sua terminazione; l'esempio più signifi-
cativo è i l descrittore di processo oppure l'area di memoria RAM nella quale è caricato (se non
viene effettuato lo swapping);
El dinamica: è i l caso più frequente e generale nella naturale vita d i u n processo che avviene so-
prattutto per le risorse condivise che i processi richiedono durante la loro esistenza, le utilizzano
quando sono a loro assegnate e le rilasciano quando non sono più necessarie oppure alla loro
terminazione (esempio tipico sono le periferiche di I/O).
13
Processi sequenziali e paralleli
Gli esempi più "classici" di risorsa preemptive sono i l processore e le aree d i memoria.
EI risorse non prerilasciabili: una risorsa si dice non prerilasciabile o non-preemptive se una volta
assegnata a u n processo non è possibile "sottrargliela" senza che si provochi u n danno al compi-
to che esso sta eseguendo, con i l pericolo d i dover ripetere completamente la sua esecuzione.
Esempi tipici di risorse non-preemptive sono la stampante e i l masterizzatore: se interrompiamo
il processo che le sta utilizzando, molto probabilmente viene danneggiato, se non del tutto com-
promesso, i l lavoro i n fase di svolgimento.
• Grafo di Holt
Holt nel 1972 ha proposto u n sistema di rappresentazione mediante u n grafo che da lui ha preso i l
nome (grafo di Ilolt anche chiamato grafo d i allocazione risorse o grafo delle attese) che permette
di rappresentare tutte le situazioni i n cui si possono venire a trovare i processi e le richieste d i r i -
sorse, ed è particolarmente utile, come vedremo nelle prossime lezioni, per individuare situazioni
di criticità tra processi e risorse.
Risorse e processi costituiscono due sottoinsiemi e sono rappresentati mediami nodi d i due tipi:
I d i forma q u a d r a t a le risorse (o di forma r e t t a n g o l a r e nel caso d i classi di risorsa e/o con risorsa
multipla);
• d i forma rotonda (cerchi) i processi.
Tra di essi vengono effettuati collegamenti orientati medianti archi:
I l'arco che connette una risorsa a processo indica che la risorsa è assegnata al processo
©
I l'arco che connette un processo a una risorsa indica che i l processo ha richiesto la risorsa e che
non gli viene assegnata dato che al momento della richiesta questa non è disponibile.
I
In q u e s t o m o d o si realizza un g r a f o o r i e n t a t o d i r e t t o {< directed graph • ) , c o n gli archi c h e
h a n n o una sola d i r e z i o n e , e b i p a r t i t , in m o d o c h e n o n esistano archi che c o l l e g a n o n o d i
d e l l o stesso s o t t o i n s i e m e : gli archi p o s s o n o solo c o n n e t t e r e n o d i d i t i p o diver .
Se sono presenti più istanze della medesima classe di risorse, si effettua un partizione della risorsa
stessa indicando la molteplicità con dei punti all'interno del box della risorsa (Grafo di Holt generale).
Directed graphs • . The directed graphs have t w o kinds of nodes: processes, shown as cir-
I cles, and resources, shown as squares. An arc from a resource n o d e (square) t o a process node
(circle) means that the resource has previously been requested by, g r a n t e d t o , and is currently held by
that process. Holt (1972) showed how the Coffman conditions that must hold for there t o be a deadlock
I can be m o d e l e d using directed graphs. •
ESEMPIO 2
Nel primo esempio abbiamo tre processi ( p i , p2 e p3) e tre risorse ( R I , R2 ed R3) con molteplicità 1
che durante la loro evoluzione generano la seguente situazione:
PI r i c h i e d e RI / / g l i viene assegnata
P2 r i c h i e d e R2 / / g l i viene assegnata
P3 r i c h i e d e RI //NON g l i viene assegnata, P3 rimane i n a t t e s a
15
UdA 1 Processi sequenziali e paralleli
Supponiamo ora di avere classi d i risorse con molteplicità diversa, per esempio:
• la classe R I : molteplicità 2
• la classe R2: molteplicità 1
• la classe R3: molteplicità 3
e la situazione è la seguente:
Alcuni autori utilizzano una rappresentazione alternativa per indicare la molteplicità di risorsa
utilizzata/richiesta da u n processo indicando con u n numero sulla freccia i l grado di molteplicità
e all'interno della classe i l numero di risorse non ancora assegnate, cioè quante istanze di quella
classe sono ancora disponibili.
Zoom su..
FORMALISMO DEI GRAFI DI HOLT
La scrittura f o r m a l e d e i d u e s o t t o i n s i e m i d e l g r a f o d i H o l t è la s e g u e n t e :
• Set d i vertici V = P U R d o v e :
- P = { P , P i , . . . , P } (processi)
0 n
16
È i m p o r t a n t e s o t t o l i n e a r e c o m e nei grafi d i H o l t n o n si r a p p r e s e n t i n o le richieste che p o s s o -
no essere s o d d i s f a t t e ma s o l o q u e l l e p e n d e n t i : q u i n d i le frecce uscenti d a i processi verso le
risorse i n d i c a n o le "risorse m a n c a n t i " ai processi p e r e v o l v e r e , c h e s o n o in q u e l m o m e n t o
a s s e g n a t e a d altri processi.
GRAFO RIDUCIBILE
Un g r a f o d i H o l t si d i c e riducibile se esiste a l m e n o un n o d o d i t i p o processo c o n s o l o
archi e n t r a n t i .
17
Processi sequenziali e paralleli
ESEMPIO 4
Nel seguente esempio abbiamo i l processo P I che sta utilizzando tre risorse e, dato che non è i n
attesa d i altre, sta sicuramente evolvendo e, sicuramente, presto rilascerà quanto sta utilizzando:
effettuando la riduzione per PI si ottiene u n nuovo grafo dove si considera terminata l'elaborazione
di P I , si eliminano gli archi entranti e si rilasciano le risorse:
Ora anche i l processo P2 può evolvere, dato che ha tutte le risorse che gli sono necessarie, e quindi
possiamo anche effettuare la riduzione per P2, ottenendo: