Il problema del produttore e del consumatore. Cooperazione tra processi



Documenti analoghi
Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

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

Il costrutto monitor [Hoare 74]

Coordinazione Distribuita

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

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

Pronto Esecuzione Attesa Terminazione

Monitor. Introduzione. Struttura di un TDA Monitor

CAPITOLO 24 I MONITOR

Esempio produttori consumatori. Primitive asincrone

Sistemi Operativi Esercizi Sincronizzazione

Il costrutto monitor [Hoare 74]

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

STRUTTURE DEI SISTEMI DI CALCOLO

Java Virtual Machine

CAPITOLO 7 - SCAMBIO DI MESSAGGI

CPU. Maurizio Palesi

LA SINCRONIZZAZIONE TRA PROCESSI

Corso di Linguaggi di Programmazione

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

Organizzazione degli archivi

La Gestione delle risorse Renato Agati

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:

ARCHITETTURA DI RETE FOLEGNANI ANDREA

DMA Accesso Diretto alla Memoria

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Il Sistema Operativo

Lezione 8. La macchina universale

Gestione della memoria centrale

Fatturazione elettronica con WebCare

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

Sostituto abilitato Entratel con più sedi: ricezione diretta e incarico ad intermediario abilitato

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

corso di Access MICROSOFT ACCESS Docente: Andrea Mereu Università degli studi di Cagliari 16 aprile 9 maggio 2012

I THREAD O PROCESSI LEGGERI Generalità

Cosa è un foglio elettronico

Leggere un messaggio. Copyright 2009 Apogeo

Sistemi operativi. Esempi di sistemi operativi

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

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

LABORATORIO DI SISTEMI

Funzioni in C. Violetta Lonati

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

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

GENERAZIONE ARCHIVIO F24 AGENZIA ENTRATE

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

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Che differenza c è tra una richiesta XML ed una domanda XML? (pag. 4)

ACCESSO AL SISTEMA HELIOS...

Nuova procedura di Cassa Contanti Wingesfar: istruzioni per le farmacie Novembre 2009

Appunti sulla Macchina di Turing. Macchina di Turing

CAPITOLO 27 SCAMBIO DI MESSAGGI

Mutua esclusione distribuita

G S M C O M M A N D E R Duo S

Fasi di creazione di un programma

AI DIRETTORI REGIONALI AI DIRETTORI PROVINCIALI e SUBPROVINCIALI AI DIRETTORI DELLE AGENZIE

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Introduzione alla programmazione in C

Word processor funzione Stampa Unione

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

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

GESTIONE INFORMATICA DEI DATI AZIENDALI

START Affidamenti diretti e Procedure concorrenziali semplificate. Istruzioni per i concorrenti Ver. 1.0

PartnerWeb. 1 Sommario. 1.1 Che cos'è PartnerWeb? 1.2 I Suoi vantaggi. 1.3 Requisiti tecnici. 1.4 A proposito della sicurezza

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

La memoria centrale (RAM)

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

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

Testi di Esercizi e Quesiti 1

CONTROLLO DI GESTIONE DELLO STUDIO

PRODUZIONE PAGELLE IN FORMATO PDF

Richiesta pagina PHP (es: index.php)

Gecom Paghe. Comunicazione per ricezione telematica dati ( Rif. News Tecnica del 14/03/2014 )

Il memory manager. Gestione della memoria centrale

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

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

Il descrittore di processo (PCB)

Manuale d'uso. Manuale d'uso Primo utilizzo Generale Gestione conti Indici di fatturazione Aliquote...

Esercizio data base "Biblioteca"

FPf per Windows 3.1. Guida all uso

FOGLIO INFORMATIVO ANALITICO

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

Sage Start Archivio file Guida. Dalla versione

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Introduzione al data base

Gestione Risorse Umane Web

Modello a scambio di messaggi

GESTIONE DELLA MEMORIA CENTRALE

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Titolare del trattamento dei dati innanzi descritto è tsnpalombara.it

COME CONFIGURARE UN CLIENT DI POSTA

Protocollo Informatico (D.p.r. 445/2000)

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

L apposizione di firme e informazioni su documenti firmati

SIRTEL. Sistema Informativo per la Rendicontazione Telematica degli Enti Locali. Schema di funzionamento del processo per l Ente Locale

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

Esempio 1: CarMatch. Direzione centrale Sedi centrali per ogni paese Concessionarie locali di franchising UML 2

Transcript:

Il problema del produttore e del consumatore Cooperazione tra processi

Risorsa consumabile I processi disgiunti possono interferire tra loro a causa dell'uso di risorse permanenti, ma ognuno di essi ignora la presenza e lo scopo degli altri processi. I processi che invece interagiscono richiedendo servizi ad altri e sfruttando i risultati ricevuti, cooperanoper il completamento di un lavoro. I processi cooperanti devono essere in grado di scambiarsi informazioni. Nello scambio di informazioni tra processi, un processo P, detto produttore, produce e invia il messaggio, mentre un processo C, detto consumatore, lo riceve e lo usa. Un messaggio è cioè una risorsa consumabile, perché una volta acquisito non esiste più. Consumatore Produttore Messaggio Variabile comune

Il problema del produttore e del consumatore Il produttore deposita il messaggio in un area di memoria e il consumatore lo preleva dalla stessa area. Per determinare le regole di sincronizzazione si deve considerare che: il produttore può inserire un nuovo messaggio se il buffer non è pieno, il consumatore preleva un messaggio se il buffer non è vuoto.

Semafori Un caso particolare del problema del produttore e del consumatore si verifica quando un processo deve essere solo avvertito che si è verificato un evento, ma non ha bisogno di alcun dato. I messaggi cioè sono vuoti, vengono solo contati. Il buffer è sostituito da un intero v che, in ogni istante, con il suo valore, rappresenta il numero dei messaggi inviati ma non ancora ricevuti. É una variabile di tipo semaforo. L operazione deposita messaggio svolta dal produttore è indicata con signal(v), L operazione preleva messaggio svolta dal ricevitore, è indicata con wait(v).

Waitsu un semaforo La primitiva waitviene usata per ricevere le segnalazioni su un dato semaforo. Se il segnale non è stato inviato il processo che ha eseguito waitpassa in stato di attesa. Se il segnale è stato inviato il processo consumail semaforo e continua la sua elaborazione.

Regole di sincronizzazione 1. Sia R un intero che conta i messaggi ricevuti e S un intero che conta i messaggi spediti. Il semaforo v è la differenza tra i due contatori: v=r-s. 2. La condizione R<S si verifica quando il numero di segnali spediti è maggiore del numero di segnali ricevuti. In questa condizione, se un processo esegue wait(v), allora R viene incrementata di 1 e il processo continua; 3. La condizione R=Ssi verifica quando tutti i segnali inviati sono stati ricevuti, in questo caso il ricevitore che esegue wait(v) viene messo in attesa, in una coda associata al semaforo v. 4. se un processo esegue signal(v)la variabile S viene incrementata di 1, poi, se nella coda di attesa associata al semaforo vvi sono processi in attesa, il sistema operativo ne seleziona uno di essi per metterlo nello stato di pronto e incrementa di 1 la variabile R.

Esempio di mutua esclusione Le variabili di tipo semaforo consentono di realizzare l accesso in mutua esclusione a risorse richieste da processi concorrenti. inizialmente il semaforo v è posto a 1, le variabili S e R a 0; Processo 1 Processo 2... Processo n wait(v)) wait(v)) wait(v)) calcoli calcoli calcoli signal(v) signal(v) signal(v) Il primo processo che esegue wait(v) troverà vera la condizione R<S, e incrementerà la variabile R prima di passare alle istruzioni successive. Fino a quando questo processo non eseguirà l operazione signal(v) ogni altro processo che tenterà di eseguire wait(v) troverà vera la condizione R=S, e verrà messo in attesa. Quindi al massimo un solo processo eseguirà la sezione calcoli.

Il problema del produttore e del consumatore I requisiti della soluzione al problema del produttore e del consumatore, utilizzando le primitive di sincronizzazione waite signal, sono: P e Q sono due processi in esecuzione su due CPU differenti, essi si scambiano informazioni tramite la memoria principale; Vi è un unico registro di scambio r, P deve aspettare che rsia vuoto prima di depositarvi un nuovo messaggio; Q deve aspettare che rsia pieno prima di prelevare un nuovo messaggio; Partendo da uno stato iniziale prefissato, la soluzione deve essere valida qualunque siano i tempi di esecuzione di P e di Q.

Problema del produttore e del consumatore La soluzione impiega due semafori: FineP e FineQ. Il semaforo FinePviene posto a vero dopo che P ha depositato un messaggio in r. Analogamente il semaforo FineQè posto a vero dopo che Q termina di prelevare un messaggio da r. Il semaforo FinePè consumato dal processo Q prima del prelievo di un nuovo messaggio, il semaforo FineQè consumato dal processo P prima del deposito di un nuovo messaggio.

Inizialmente: rè vuoto; FineP=Falso FineQ=vero. P Semafori Il semaforo FineP= Falso impedisce al consumatore di avanzare. Il semaforo FineQ= Vero consente al produttore di depositare un nuovo messaggio. I valori complementari dei semafori assicurano che in ogni istante un solo processo accede a r Q wait(fineq) wait(finep) Deposita il messaggio in r Crea un nuovo messaggio Elabora il messaggio Preleva il messaggio da r signal(finep) signal(fineq)

Coda dei messaggi Per consentire al produttore di produrre messaggi anche se il consumatore non ha ancora terminato di elaborare quello precedente, i messaggi vengono memorizzati in un array. L arrayviene dimensionato per contenere N record, numerati da 0 a N-1, e deve essere gestito come una coda circolare. La variabile R è il contatore dei messaggi ricevuti, il consumatore preleva un messaggio dalla posizione: p = R % N La variabile S è il contatore dei messaggi spediti, il produttore deposita il nuovo messaggio nella posizione d = S % N Consumatore p 0 1 2 3 4 5 d Produttore Esempio: N=6 S=22 R=20 p = 20%6=2 d = 22%6=4

Regole di sincronizzazione Durante la comunicazione, il numero dei messaggi ricevuti è sempre inferiore al numero dei messaggi spediti: 0 R S. Il numero dei messaggi depositati e non ancora prelevati non può superare la capacità dell array. 0 S-R N, che corrisponde alla condizione S R+N. Questa diseguaglianza, combinata con la precedente, stabilisce che, in ogni istante: 0 R S R + N, Le uguaglianze valgono nelle condizioni particolari di buffer vuoto (R=S) di buffer pieno (S=R+N).

Buffer di scambio dei messaggi Il buffer è un arraydi N locazioni usato come una coda circolare. Vi sono m processi produttori P 1,, P m ed n processi consumatori Q 1,, Q n. La cooperazione tra i P i e i Q j deve soddisfare i seguenti requisiti: i processi P i e Q j sono in esecuzione su m+ncpu distinte e si scambiano messaggi tramite la memoria principale. Un processo P i non può depositare in run nuovo messaggio se non vi è almeno una posizione vuota; Un processo Q j non può prelevare un messaggio da rse tutte le celle sono vuote; In ogni istante vi possono essere più processi P i e Q j che depositano e prelevano messaggi, La soluzione deve essere valida per qualsiasi tempo di esecuzione dei processi.

Coda circolare Durante l avanzamento dei processi P i e Q j gli indirizzi d e p si spostano in senso circolare senza mai oltrepassarsi. Si indichi con N v (0 N v N) il numero di celle vuote nel buffer: N v = N -(d -p) se d p Oppure N v = p -d se d < p Per impedire ai processi P i e Q j di operare in situazioni anomale (arrayvuoto o arraypieno) si usano le due primitive di sincronizzazione su un semaforo intero

Semafori di tipo intero Tralasciando il conteggio dei messaggi spediti e dei messaggi ricevuti, il semaforo può essere usato per contare i messaggi spediti e non ancora ricevuti. Quando un processo P i esegue wait(semaforo): se semaforo>0 il processo P continua la sua esecuzione e il semaforo è decrementato di uno; altrimenti il processo P viene posto in stato di attesa fino a quando un processo eseguirà signal(semaforo). Quando un processo Q j esegue la primitiva di sincronizzazione signal(semaforo): se esiste un processo in attesa dell evento semaforo>0 il semaforo viene lasciato a zero ma il processo viene sbloccato e passerà in esecuzione quando si rende disponibile una CPU. Altrimenti il semaforo viene incrementato di uno. In entrambi i casi il processo che ha eseguito signal(semaforo) continua l esecuzione.

Scambio di messaggi I processi produttori e i processi consumatori si scambiano messaggi attraverso un array gestito come coda. Per la soluzione, Si impiegano i semafori nvuote(intero il cui valore indica il numero di celle vuote) e npiene(intero il cui valore indica il numero di celle piene nel buffer). La variabile d è una risorsa protetta dal semaforo dliberoper evitare che più processi produttori depositino simultaneamente messaggi nella stessa cella del buffer. La variabile p è protetta dal semaforo pliberoper evitare che più processi consumatori prelevino messaggi dalla stessa cella del buffer. Inizialmente tutte le celle della coda sono vuote, cioè: p=1, d=1, nvuote=n, npiene=0 plibero=vero, dlibero=vero.

Produttori e Consumatori P i Q j wait nvuote wait npiene wait dlibero x d d (d+1) % N signal dlibero Crea un nuovo messaggio Elabora il messaggio wait plibero y p p (p+1) % N signal plibero Deposita il messaggio in r(x) Preleva il messaggio da r(y) Signal npiene Signal nvuote