Il 0% ha trovato utile questo documento (0 voti)
74 visualizzazioni2 pagine

Comunicazione e Sincronizzaazione Tra Processi

Il documento tratta di concetti relativi alla comunicazione e sincronizzazione tra processi concorrenti. Descrive modelli di comunicazione a memoria condivisa e a scambio di messaggi, nonché tecniche di sincronizzazione tramite semafori di Dijkstra.

Caricato da

papiw26575
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
74 visualizzazioni2 pagine

Comunicazione e Sincronizzaazione Tra Processi

Il documento tratta di concetti relativi alla comunicazione e sincronizzazione tra processi concorrenti. Descrive modelli di comunicazione a memoria condivisa e a scambio di messaggi, nonché tecniche di sincronizzazione tramite semafori di Dijkstra.

Caricato da

papiw26575
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd

 LA COMUNICAZIONE TRA PROCESSI: Processi concorrenti

Processo concorrente: l’insieme di processi la cui esecuzione si sovrappone nel tempo. Più in generale: in
un sistema monoprocessore due processi si dicono concorrenti se la prima operazione di uno comincia
prima dell'ultima dell'altro.

Modello a memoria comune (ambiente globale): il modello a memoria comune rappresenta la naturale
astrazione del funzionamento di un sistema in multiprogrammazione costituito da uno o più processori che
hanno accesso ad una memoria comune.

Le risorse allocate staticamente vengono definite prima che il programma inizi la propria esecuzione quindi
il loro gestore è il programmatore.

Risorse dedicate Risorse condivise


(visibili da un solo processo) (visibili da più processi
contemporaneamente)
Risorse allocate staticamente Risorse private Risorse comuni
Risorse allocate dinamicamente Risorse comuni Risorse comuni

La competizione è un’interazione tra processi prevedibile e NON desiderata.

La cooperazione è un’interazione tra processi prevedibile e desiderata dato che è all’interno nella logica del
programma.

L’interferenza è un’interazione tra processi NON prevedibile e NON desiderata.

Modello a scambio di messaggi (ambiente locale): nel modello ad ambiente locale ogni processo può
accedere esclusivamente alle risorse allocate nella propria memori locale che non può essere modificata
direttamente da altri processi. Il modello a scambio di messaggi rappresenta la naturale astrazione di un
sistema privo di memoria comune.

Il modello a scambio di messaggi si può classificare in:


 nella comunicazione asincrona la comunicazione da parte del processo mittente avviene senza che
questo rimanga in attesa di una risposta da parte del processo destinatario;
 nella comunicazione sincrona lo scambio di informazioni può avvenire solo se il mittente e il
destinatario sono pronti a parlarsi.

La seconda classificazione di modelli a scambio di messaggi:


 nella comunicazione asimmetrica il mittente nomina esplicitamente il destinatario ma questo non
nomina esplicitamente il mittente;
 nella comunicazione simmetrica entrambi si nominano in modo esplicito.

 LA SINCRONIZZAZIONE TRA PROCESSI


L’interleaving e la situazione di alternanza casuale che possono avere i processi.

L’overlapping è la sovrapposizione temporale dei processi.

Domini: si ottengono da più aree di memoria -> domain(K) (dominio di K).

Rango: modifica il contenuto di una o più aree di memoria -> range(K) (rango di K).
Condizioni di Bernstein: due istruzioni possono essere eseguite concorrentemente se valgono le seguenti
condizioni:
 range(istruzione A) Λ range(istruzione B) = Ø
 range(istruzione A) Λ domain(istruzione B) = Ø
 domain(istruzione A) Λ range(istruzione B) = Ø

Un errata sincronizzazione dei processi può portare ad un fallimento delle elaborazioni che può portare ad
un blocco dei processi:
 Starvation (o blocco individuale): si verifica quando un processo rimane in attesa di un evento che però
non accadrà mai, quindi non può portare a termine il proprio lavoro.
 Deadlock (stallo o blocco multiplo): si verifica quando due o più processi rimangono in attesa di un
evento che però non accadrà mai a causa di condizioni cicliche nel possesso e nella richiesta di risorse.

 I SEMAFORI: sincronizzazione con semafori


La primitiva (o funzione) che permette di allocare una risorsa prende il nome di lock().

La primitiva (o funzione) che permette di rilasciare una risorsa prende il nome di unlock().

Semafori di Dijkstra:
 La primitiva P(S), riceve in ingresso un numero intero non negativo, che viene utilizzato per accedere alla
risorsa.
 La primitiva V(S), riceve sempre in ingresso un intero non negativo, che viene utilizzato per rilasciare la
risorsa.

Potrebbero piacerti anche