Appunti Classe Quarta Parte Due
Appunti Classe Quarta Parte Due
Appunti Classe Quarta Parte Due
I processi sono i programmi in evoluzione. Per poter evolvere hanno bisogno delle risorse del sistema di elaborazione: si pu immaginare il sistema di elaborazione come composto da un insieme di risorse da assegnare ai processi affinch questi possano svolgere il proprio compito
Si pu definire risorsa: ogni componente, riusabile o no, sia hardware che software, necessario al processo o al sistema
Per accedere alle risorse i processi sono in competizione in quanto spesso esse non sono sufficienti per tutti e pertanto risulta necessaria una forma di condivisione affinch tutti possano utilizzarle; per esempio, i processi competono per avere a disposizione la RAM e per utilizzare linterfaccia di rete e soprattutto il processore Le risorse disponibili possono essere suddivise in classi e le risorse appartenenti alla stessa classe sono equivalenti, come per esempio i bytes della memoria o stampanti dello stesso tipo
Risorse
Suddivisione in classi Classe
Classe Classe
Classe
Classe e istanze
Le risorse di una classe vengono dette istanze della classe Il numero di risorse in una classe viene detto molteplicit di una risorsa Quando un processo necessita di una risorsa generalmente non pu chiedere una particolare risorsa ma soltanto una istanza di una specifica classe: quindi una richiesta di risorse viene fatta per una classe di risorse e pu essere soddisfatta da parte del SO assegnando al richiedente una qualsiasi istanza di quel tipo
Risorse
Classe Suddivisione in classi
Istanze
In altre parole, la molteplicit di una risorsa indica il numero massimo di processi che la possono utilizzare contemporaneamente: se il numero dei processi maggiore di quello della molteplicit allora essa deve essere condivisa tra i processi che vi accedono concorrentemente
Esempio
In un pc presente un solo microprocessore e di conseguenza la molteplicit della sua risorsa uguale ad uno: il numero massimo di processi che possono evolvere contemporaneamente pertanto uno e quando si ha la necessit di far evolvere pi processi assieme questi condividono lunica istanza della risorsa e competono per ottenerla
Per risorse di elaborazione condivise si intendono dispositivi assegnati alternativamente ai singoli processi che le richiedono
Risulta quindi necessaria una gestione delle risorse che pu essere organizzata in fasi, alcune delle quali sono di natura statica e riguardano la loro assegnazione (pianificazione) mentre altre sono di natura dinamica e sono relative al loro utilizzo (controllo) Le attivit elencate sopra vengono svolte dal SO e per le risorse di molteplicit finita necessario controllare gli accessi a ciascuna di esse in modo che il loro utilizzo sia costruttivo Per ogni risorsa il SO mette a disposizione
multipla: si riferisce a una o pi classi e per ogni classe a una o pi risorse e deve essere soddisfatta integralmente; esso il caso in cui il processo richiede contemporaneamente almeno due risorse per evolvere
Almeno due risorse
Classificazione dellassegnazione
Lassegnazione delle richieste avviene in due modalit Statica: essa avviene nel momento della creazione di un processo stesso e rimane ad esso dedicata fino alla sua terminazione Dinamica: caso in cui i processi utilizzano le risorse che vengono loro assegnate e le rilasciano quando non sono pi necessarie (avviene soprattutto quando le risorse sono condivise)
Grafo di Holt
Il grafo di Holt (1972), detto anche grafo di allocazione risorse o grafo delle attese, permette di rappresentare tutte le situazioni in cui si possono venire a trovare i processi e le richieste di risorse. Esso particolarmente utile al fine di individuare situazioni di criticit tra processi e risorse
Nel grafo di Holt risorse e processi costituiscono due sottoinsiemi e sono rappresentati mediante nodi di due tipi:
di forma quadrata le risorse (o di forma rettangolare nel caso di classi di risorsa e/o con risorsa multipla);
di forma rotonda i processi
Risorse e processi del grafo di Holt vengono collegati mediante frecce la freccia che connette una risorsa al processo indica che la risorsa assegnata al processo
R R
P
la freccia che connette un processo ad una risorsa indica che il processo ha richiesto la risorsa e che non gli viene assegnata poich al momento della richiesta non disponibile
P R
Il grafo di Holt cos ottenuto orientato diretto (directed graph), con le frecce che hanno una sola direzione, e bipartito, in modo che non esistano frecce che collegano nodi dello stesso sottoinsieme: esse possono solo connettere nodi di diverso tipo Se sono presenti pi istanze della medesima classe di risorse si effettua una ripartizione della risorsa indicando la molteplicit con dei punti allinterno del box della risorsa (Grafo di Holt generale)
Esempio
P1 richiede R1 P2 richiede R2 // gli viene assegnata // gli viene assegnata R1 R2 R3
P3 richiede R1
P2 richiede R2
P2 richiede R3 P2 richiede R3 P3 richiede R1 P1 richiede R2
R1
R2
P1
P2
P3
R3
Si nota come nei grafi di Holt le frecce uscenti dai processi non rappresentano le richieste che possono essere soddisfatte ma soltanto quelle pendenti: esse infatti indicano quelle mancanti ai processi per evolvere, poich assegnate ad altri
P2 richiede R1
P2 richiede R2
P1
P2
R2
Effettuando una riduzione per P1 si ottiene un nuovo grafo di Holt, nel quale si considera terminata lelaborazione di P1: vengono eliminate le frecce entranti in 1 e di conseguenza si rilasciano le corrispondenti risorse utilizzate
R1
P1
P2
R2
Adesso anche il processo P2 in grado di evolvere, dal momento che ha tutte le risorse che gli sono necessarie, e quindi possibile continuare riducendo per P2
R1
P1
P2
R2
La successiva applicazione delle riduzioni ha portato ad un grafo di Holt ridotto nella quale non si individuano situazioni critiche per il sistema (nessuno stallo)
Come detto in precedenza, il grafo di Holt di partenza era riducibile e questo poich aveva almeno un nodo di tipo processo con solo frecce entranti
R1
R2
Gruppo 1
P1
P2
P3
R3
R1
R2
Gruppo 2
P1
P2
P3
R3
R1
R2
Gruppo 3
P1
P2
P3
R3
R1
R2
Gruppo 4
P1
P2
P3
R3
R1
R2
P1
P2
P3
R3
Una elaborazione sequenziale tale quando svolge una sola azione alla volta sulla base di un programma, detto anchesso sequenziale Con il termine elaborazione sequenziale si intende lesecuzione di un programma sequenziale che genera un processo sequenziale con ordinamento totale alle azioni che vengono eseguite
Lelaborazione sequenziale pertanto un concetto fondamentale nellinformatica in quanto gli algoritmi computati sono composti da una sequenza finita di istruzioni in corrispondenza delle quali, durante la loro esecuzione, lelaboratore passa attraverso una sequenza di stati (traccia dellesecuzione)
Non tutti gli elaboratori hanno una singola CPU e inoltre alcune attivit del processore possono essere parallelizzate, come per esempio le lunghe fasi di input che provocano enorme spreco di tempo macchina nei processi ad alta interattivit con lutente, applicazioni che per loro natura necessitano di attivit parallele come i server, i games multiplayer, e per essi la codifica sequenziale delle attivit propria della programmazione sequenziale non in grado di adempiere opportunamente alle presenti situazioni.
Esse necessitano di un diverso modello in grado di effettuare la programmazione di un esecutore concorrente, ovvero un elaboratore in grado di eseguire pi istruzioni in contemporanea
Per programmazione concorrente si indicano le tecniche e gli strumenti impiegati per descrivere il comportamento di pi attivit o processi che si intende far eseguire contemporaneamente in un sistema di calcolo (processi paralleli)
In realt si nella situazione di elaborazione contemporanea reale soltanto nel caso in cui lesecutore sia dotato di una architettura multiprocessore, cio con pi processori che possono eseguire ciascuno un singolo programma: nei sistemi monoprocessore il parallelismo avviene solo virtualmente, grazie alla multiprogrammazione, e pi processi evolvono in parallelo solo attraverso il tempo che viene loro assegnato dallo scheduling del SO
Il SO per eccellenza lesempio di programmazione concorrente: esso infatti assegna le risorse hardware dellelaboratore ai processi utente che ne fanno richiesta e uso cercando di massimizzarne lefficienza nella loro utilizzo. Le attivit del SO devono essere eseguite concorrentemente in modo da consentire lesecuzione contemporanea di pi programmi utente: ogni attivit interagisce con le altre sia in modo indiretto, occupando le risorse comuni, sia in modo diretto, scambiando informazioni in merito allo stato delle risorse e dei programmi utente per realizzare la multiprogrammazione In un sistema multiprogrammato i programmi dutente e le singole funzioni svolte dal SO possono essere considerati come un insieme di processi che competono per le stesse risorse
Quindi per sistema concorrente si intende un sistema software implementato su vari tipi di hardware che evolve in contemporanea una molteplicit di attivit diverse, tra loro correlate, che possono cooperare ad un obiettivo comune oppure possono competere per utilizzare risorse diverse due processi si dicono concorrenti se la prima operazione di uno di essi ha inizio prima del completamento dellultima operazione da parte dellaltro
P1 Software
Hardware Hardware Hardware Hardware
P2
P3
Sistema concorrente
Nei processi sequenziali la sequenza degli eventi che costituisce il processo totalmente ordinata: se viene rappresentata attraverso un grafo orientato si ottiene che essa risulter sempre la stessa Un grafo che descrive lordine con cui le azioni (o gli eventi) si eseguono nel tempo viene detto grafo delle precedenze Nei processi paralleli, invece, lordinamento non completo poich per alcune istruzioni lesecutore libero di scegliere quali iniziare prima e quali dopo senza che il risultato sia compromesso: nella elaborazione parallela lesecuzione delle istruzioni segue un ordinamento parziale
In un processo sequenziale il grafo delle precedenze degenera in una lista ordinata mentre nel processo parallelo diventa una grafo orientato aciclico e i percorsi alternativi indicano la possibilit di esecuzione contemporanea di pi istruzioni Per la descrizione del grafo delle precedenze si usano i simboli:
A Attivit (istruzione o sequenza di istruzioni) Vincolo di precedenza A B Attivit seriale (B inizia dopo il termine di A)
B A C B A C
Inizio
Fine
Riportando le istruzioni del grafo per lesecuzione si osserva che: leggi x e leggi y non devono essere eseguite per forza in questo ordine ma potrebbero anche essere eseguite in parallelo; anche la lettura di z, inoltre, pu essere eseguita dopo listruzione 4 oppure in parallelo con essa. Le istruzioni 5 e 6 chiudono sempre la sequenza
Leggi x
Leggi y
K = max (x,y)
Leggi z
K = max (k,z)
Scrivi k
Fine
Leggi x
Leggi y
Leggi z
K = max (x,y)
Infatti la lettura di z potrebbe essere eseguita dal ramo che effettua quella di x e il calcolo del max tra x ed y al suo posto,
K = max (k,z)
Scrivi k
Fine
Leggi y
Leggi x Leggi z
Leggi y
K = max (x,y)
Leggi z
K = max (k,z)
Scrivi k
Fine