LA SINCRONIZZAZIONE TRA PROCESSI



Documenti analoghi
I THREAD O PROCESSI LEGGERI Generalità

SISTEMI OPERATIVI. Deadlock (blocco critico) Domande di verifica. Luca Orrù Centro Multimediale Montiferru 04/06/2007

Il problema del produttore e del consumatore. Cooperazione tra processi

Gestione della memoria centrale

Il costrutto monitor [Hoare 74]

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Deadlock (stallo) Parte III. Deadlock

Sistemi Operativi Esercizi Sincronizzazione

Introduzione ai Metodi Formali

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P P P P P P < P 1, >

Deadlock e Starvation

Il costrutto monitor [Hoare 74]

Coordinazione Distribuita

Pronto Esecuzione Attesa Terminazione

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Corso di Programmazione Concorrente

Monitor. Introduzione. Struttura di un TDA Monitor

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Pag. 1. Gestione delle transazioni. Linguaggio SQL: costrutti avanzati. Esempio applicativo. Gestione delle transazioni. Prelievo. Esempio applicativo

copie di salvaguardia

Informatica 3. Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Lezione 6 - Modulo 1. Errori durante l esecuzione. Il controllo dell esecuzione

DTI / ISIN / Titolo principale della presentazione. La cena dei filosofi. Amos Brocco, Ricercatore, DTI / ISIN. 14 maggio 2012

Olga Scotti. Basi di Informatica. File e cartelle

Java threads (2) Programmazione Concorrente

FPf per Windows 3.1. Guida all uso

ESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file.

Linguaggio SQL: costrutti avanzati

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

S E R V I Z I & S I S T E M I

FONDAMENTI di INFORMATICA L. Mezzalira

Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D

Il descrittore di processo (PCB)

Soluzione dell esercizio del 2 Febbraio 2004

CIRCOLARE RILEVA WEB del 19/05/2009

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

FOXWave Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA

La selezione binaria

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Aggiornamento programma da INTERNET

Gestione Turni. Introduzione

Corso di Linguaggi di Programmazione

Scheduling. Sistemi Operativi e Distribuiti A.A Bellettini - Maggiorini. Concetti di base

Rappresentazione delle informazioni

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Organizzazione degli archivi

Capitolo 7: Sincronizzazione

La Gestione delle risorse Renato Agati

B+Trees. Introduzione

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Java Virtual Machine

Configurazione della ricerca desktop di Nepomuk. Sebastian Trüg Anne-Marie Mahfouf Traduzione della documentazione in italiano: Federico Zenith

Amministrazione gruppi (Comunità)

4 3 4 = 4 x x x 10 0 aaa

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

Calcolatori Elettronici A a.a. 2008/2009

Funzioni in C. Violetta Lonati

Corso di Informatica

Lo scheduling. Tipici schedulatori

Elementi di Architettura e Sistemi Operativi

Il Sistema Operativo

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Manuale Terminal Manager 2.0

LABORATORIO DI SISTEMI

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

Appunti sulla Macchina di Turing. Macchina di Turing

Regolamento In italiano

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Appunti di Sistemi Elettronici

TRANSAZIONI. Una transazione è una successione di operazioni che si può concludere con successo o con insuccesso.

Guida rapida per i docenti all'uso della piattaforma di e-learning dell'istituto Giua

Fasi di creazione di un programma

Il calendario di Windows Vista

DENUNCE EDILCONNECT GUIDA COMPILAZIONE

CPU. Maurizio Palesi

2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso

INFORMATICA 1 L. Mezzalira

Veneto Lavoro via Ca' Marcello 67/b, Venezia-Mestre tel.: 041/

Esercitazione finale per il corso di Sistemi Operativi (A.A. 2004/2005)

CAPITOLO 7 - SCAMBIO DI MESSAGGI

Variabili e tipi di dato

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Sistema operativo: Gestione della memoria

Studio Legale. Guida operativa

Sistemi Operativi. Lezione 7 Comunicazione tra processi

J. Assfalg Appunti di Sistemi Operativi

Amministrazione gruppi (all interno della Scuola)

Modulo gestione antiriciclaggio. Soggetti coinvolti

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

INSTALLAZIONE NUOVO CLIENT TUTTOTEL (04 Novembre 2014)

INFORMATION TECNOLOGY. a cura di Alessandro Padovani padoale@libero.it

SISTEMI OPERATIVI. Sincronizzazione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 30/05/2007

Guida all uso di Java Diagrammi ER

CAPITOLO 24 I MONITOR

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Transcript:

LA SINCRONIZZAZIONE TRA PROCESSI E' più complesso scrivere programmi concorrenti rispetto a programmi sequenziali in quanto non basta essere sicuri della correttezza dei singoli moduli ma è necessario garantire il loro corretto funzionamento per ogni possibile combinazione di interazioni che questi possono avere. Esempio concettuale dove possiamo comprendere gli effetti disastrosi che possono essere generati da errori dipendenti dal tempo o dalla errata sincronizzazione. Quando di usa la programmazione concorrente, per evitare errori dipendenti dal tempo bisogna rispettare 1. 2. 3. 4. condizioni di Bernstein regola di mutua esclusione (proprietà safety) proprietà fairness (correttezza) proprietà liveness (sopravvivenza)

1 condizioni di Bernstein Concetti di dominio e rango intersezione Verificare se le condizioni di Bernstein sono verificate nei 3 esempi sotto riportati

2 regola di mutua esclusione Si ha mutua esclusione quando non più di un processo alla volta può accedere a una risorsa comune. Esempio Si hanno due procedure che operano sulle stesse celle di memoria, quindi due sezioni critiche: Procedura 1: Scrive un nuovo dato nella prima posizione disponibile Procedura 2: Legge l'ultimo dato inserito e lo cancella Procedura 1 (verde) 23 32 12 ultimo = ultimo +1 23 32 12 vet_dati[ultimo] = 87 23 32 12 87 Procedura 2 (rossa) letto = vet_dati[ultimo] 23 32 12 87 vet_dati[ultimo] = 23 32 12 ultimo = ultimo - 1 23 32 12 Se mischio le istruzioni delle due procedure il risultato finale è diverso. I processi non devono interferire tra di loro nell'accesso alle risorse condivise. 23 32 12 ultimo = ultimo +1 23 32 12 letto = vet_dati[ultimo] 23 32 12 vet_dati[ultimo] = 23 32 12 ultimo = ultimo - 1 23 32 12 vet_dati[ultimo] = 87 23 32 87

3 proprietà fairness (correttezza) Garantisce che tutti i processi prima o poi portino a compimento il loro lavoro. Cioè evita la Starvation (blocco individuale). Si verifica quando un processo rimane in attesa di un evento che non accadrà mai. 4 proprietà liveness (sopravvivenza) Garantisce che un processo non aspetti indeterminatamente che una risorsa venga rilasciata. Cioè evita il Deadlock - abbraccio mortale (blocco multiplo). Si verifica a causa di condizioni cicliche. Esempio concettuale Si può verificare se 4 automezzi giungono contemporaneamente da ogni strada all'incrocio e tutti gli autisti si comportano in maniera diligente, cioè danno la precedenza a destra, come previsto dal regolamento della strada, gli automezzi rimangono bloccati senza possibilità di soluzione.

SINCRONIZZAZIONE TRA PROCESSI: SEMAFORI Il programmatore che vuole implementare del codice con esecuzione concorrente ha a disposizione due funzioni P(S) e V(S) che servono per sincronizzare i processi. Semafori di Dijkstra Le due primitive P(S) e V(S) permettono la soluzione di qualsiasi problema di interazione fra processi. P proberen testare (controlla il semaforo e se verde lo diminuisce) V verhogen aumentare (sveglia il processo in attesa e aumenta il semaforo) S semaforo numero intero non negativo S= rosso, S> verde Un processo che vuole accedere a una risorsa condivisa esegue la primitiva P(S) Quando il processo ha terminato di utilizzare la risorsa condivisa esegue la primitiva V(S)

Esempio Si consideri un array da 2 celle, ciascuna di esse destinata a contenere una variabile da condividere, trattasi quindi di una risorsa condivisibile con molteplicità pari a 2. Inizialmente tutte le celle sono vuote, quindi S=2. Se un processo P1 vuole utilizzare una cella, esegue la funzione P: controlla che S = poiché S=2 accede alla risorsa pone S=1 Se un processo P2 vuole utilizzare una cella, esegue la funzione P: controlla che S = poiché S=1 accede alla risorsa pone S= Se un processo P3 vuole utilizzare una cella, esegue la funzione P: controlla che S = poiché S= non accede alla risorsa viene posto nella coda di attesa Se nel frattempo P1 ha terminato di utilizzare la risorsa, esegue la funzione V: controlla se è presente un processo in attesa poiché trova P3 nella coda pone P3 nello stato di pronto pone S=1 A sua volta P3 esegue la funzione P controlla che S = poiché S=1 accede alla risorsa pone S= e così via

Semafori come vincoli di precedenza p.15 I semafori binari (S= rosso e S=1 verde) possono anche essere utilizzati per stabilire vincoli di precedenza sull esecuzione di gruppi di operazioni in processi paralleli.

Problema del rendez-vous p.151

Problemi classici della programmazione concorrente: 1. Produttori e consumatori (p.156) 2. Lettori e scrittori (p.162) 3. Deadlock (p.168) Produttori e consumatori p. 156 Sono presenti due processi il primo, produttore, che scrive un dato in un'area di memoria condivisa il secondo, consumatore, che preleva il dato prodotto dal primo e lo consuma. Vincoli gestiti da semafori: Il produttore deve depositare un dato alla volta non deve scrivere un nuovo dato se il consumatore non ha prelevato il dato precedente. Il consumatore deve prelevare un dato alla volta e solo dopo che sia stato depositato dal produttore non deve prelevare due volte lo stesso dato Lettori e scrittori p. 162 In questo caso più lettori possono contemporaneamente utilizzare un dato senza danneggiarlo. Quindi un lettore può accedere a un dato anche se è già presente un altro lettore, mentre lo scrittore deve accedere in modo esclusivo, cioè quando nessun altro lettore o scrittore sta leggendo o scrivendo un dato.

Deadlock (stallo multiplo) p.168 Il deadlock si verifica quando due processi si ostacolano a vicenda impedendosi reciprocamente di portare a termine il proprio lavoro. Affichè si verifichi un deadlock devono verificarsi contemporaneamente le seguenti 4 condizioni: 1. mutua esclusione: ogni risorsa o è assegnata a un solo processo o è libera 2. assenza di prerilascio: le risorse devono essere rilasciate volontariamente dai processi 3. richieste bloccanti: se il processo non può evolvere senza quella risorsa 4. attesa circolare: ci sono due processi ognuno in attesa di una risorsa occupata dall'altro. Come affrontare il deadlock (p.173) 1. Detection e recovery (rivelarlo e guarirlo) (p.173) 2. Avoidance (evitarlo) (p.174) 3. Prevention (prevenirlo) (p.175) 4. Ignorarlo (p.176) Detection e ricovery (rivelarlo e guarirlo) p.173 Possibili soluzioni: 1. Terminazione dei processi: Si forza la terminazione di un processo alla volta finché non si elimina lo stallo. 2. Prerilascio di una risorsa: Si forza il rilascio di una risorsa 3. Checkpoint/Rollback (salvataggio/ripristino): Si salva periodicamente lo stato dei processi sul disco e in caso di deadlock si ripristina uno o più processi a uno stato precedente. Avoidance (evitarlo) Algoritmo del banchiere (p.174) Ogni processo deve dichiarare il massimo numero di risorse che gli sono necessarie e a ogni nuova richiesta di una risorsa l'algoritmo deve calcolare la quantità di risorse rimanenti, se queste possono soddisfare la massima richiesta di almeno un processo che ancora deve essere servito l'allocazione viene accordata, altrimenti viene negata.

Esempio: Si ha un computer con 3 stampanti su cui vanno in esecuzione 3 processi (P1, P2 3 P3) contemporaneamene. P1 ha bisogno al massimo di una stampante. P2 ha bisogno al massimo di 2 stampanti. P3 ha bisogno al massimo di una stampante. processi in esecuzione contemporaneamente numero massimo di risorse richieste contemporaneamente stato del processo richiesta risorse se accolta richiesta risorsa allocata stato del processo risorse in uso richiesta risorse se accolta richiesta risorsa allocata stato del processo risorse in uso richiesta risorse se accolta richiesta risorsa allocata stato del processo risorse in uso richiesta risorse se accolta richiesta risorsa allocata stato del processo risorse in uso richiesta risorse se accolta richiesta risorsa allocata stato del processo risorse in uso P1 1 in esecuzione 1 sì in esecuzione 1 sì in esecuzione 1 in esecuzione 1 libera risorsa in esecuzione in esecuzione P2 2 in esecuzione no in esecuzione 2 no in attesa in attesa 2 sì in esecuzione 2 in esecuzione 2 libera risorse P3 1 in esecuzione no in esecuzione no in esecuzione 1 no in attesa in attesa 1 sì in esecuzione 1 libera risorsa 3 3-1=2 2 2-2= 2 2-1=1 2 3 3-2=1 1 1-1= 3

Prevention (prevenirlo) (p.175) Si elimina una delle condizioni che provocano un deadlock 1. Mutua esclusione: ogni risorsa o è assegnata a un solo processo o è libera Si elimina permettendo la condivisione di risorse. 2. Assenza di prerilascio: le risorse devono essere rilasciate volontariamente dai processi. Si elimina obbligando un processo a rilasciare le risorse che possiede quando ne richiede un'altra che in quel momento non è disponibile e il processo sarà fatto ripartire solo quando può riguadagnare tutte le risorse che gli servono per evolvere. 3. Richieste bloccanti: se il processo non può evolvere senza quella risorsa Si elimina imponendo che un processo prima di impossessarsi di una risorsa, verifica se sono disponibili tutte le risorse di cui ha bisogno per evolvere, solo in caso positivo se ne impossessa, altrimenti aspetta. (Allocazione totale, hold and wait, filosofi a cena) 4. Attesa circolare: ci sono due processi ognuno in attesa di una risorsa occupata dall'altro. Si elimina attribuendo alle risorse dei valori di priorità e imponendo che a ogni processo possono essere allocate solo risorse di priorità superiore a quelle che già possiede, se invece ha bisogno di una risorsa a priorità inferiore, deve prima rilasciare tutte le risorse con priorità uguale o superiore a quella desiderata. Ignorare lo stallo (p.176) Algoritmo dello struzzo (nascondere la testa sotto la sabbia pensando così di essersi nascosto)). E' troppo costoso mettere in atto le precauzioni sopra descritte, quindi conviene ignorare il problema e affrontarlo solo se si verifica effettuando il reset del sistema. I Monitor p.181 I semafori sono un meccanismo molto potente, ma molto rischioso e difficoltoso per realizzare la sincronizzazione tra processi. Nei linguaggi evoluti di alto livello, come il java, è il compilatore che introduce il codice necessario alla sincronizzazione tra processi, questo meccanismo si chiama monitor. Monitor: Costrutto sintattico utilizzato per effetturae il controllo degli accessi a una risorsa condivisa tra processi concorrenti, che associa un insieme di procedure/funzioni (chiamte entry) a una struttura dati comune a più processi. Le entry sono le sole operazioni permesse su quella struttura. Le entry sono mutuamente esclusive, cioè eseguite da un solo processo alla volta. Per ogni risorsa si crea un monitor che definisce lo stato della risorsa, i processi possono aggiornare lo stato della risorsa mediante le entry.