Meccanismi di IPC Problemi classici di IPC

Slides:



Advertisements
Presentazioni simili
Scheduling (Schedulazione) Susanna Pelagatti – Università di Pisa
Advertisements

Process synchronization
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
/ fax
1 Introduzione ai calcolatori Parte II Software di base.
Capitolo 3 Risorse e Stallo 3.1. Risorse 3.2. Introduzione
Java: programmazione concorrente con condivisione di memoria
Gestione del processore
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
1 Processi e Thread Meccanismi di IPC (1). 2 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per.
1 System Call per Comunicazione tra Processi Pipe.
Programmazione Concorrente
Sincronizzazione fra processi
Sincronizzazione di processi
Deadlock Modello del sistema Caratterizzazione dei deadlock
Processi Concetto di processo Scheduling dei processi
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Dipartimento di Ricerca Sociale - Università del Piemonte Orientale 1 Castelli Aperti giugno 2005 Castello di Camino (AL) IL PUBBLICO DI CASTELLI.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
8. Reti di Code Nella maggior parte dei processi produttivi risulta troppo restrittivo considerare una sola risorsa. Esempio: linea tandem arrivi 1 v.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Corso di Informatica (Programmazione)
1 INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA. 2 PROCESSO INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA INIZIO FINE.
eliana minicozzi linguaggi1a.a lezione2
Risorse e Stallo.
Gestione dei processi Un sistema operativo multitasking è in grado di gestire più processi Un processo corrisponde ad un programma in esecuzione. Un programma.
Struttura dei sistemi operativi (panoramica)
I Thread.
Sincronizzazione dei Processi
Sincronizzazione fra thread
Sistemi Operativi GESTIONE DEI PROCESSI.
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
Strutture di controllo in C -- Flow Chart --
19 Lezione 21/5/04 Composizione dell'immagine 1 COMPOSIZIONE DELLIMMAGINE.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Interazione e sincronizzazione
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
1 Questionario di soddisfazione ATA - a. sc. 2008/09 Il questionario è stato somministrato nel mese di aprile Sono stati restituiti 29 questionari.
1 Scheduling in Windows 2000 Un thread entra in modalità kernel e chiama lo scheduler quando: Si blocca su un oggetto di sincronizzazione (semaforo, mutex,
1101 = x 10 x 10 x x 10 x = CORRISPONDENZE
Corso di “Programmazione a oggetti” Programmazione concorrente
File system distribuito transazionale con replicazione
Bando di Residenza Cap Scheda ENTE 3ROL - Richieste On Line.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
Sincronizzazione dei processi
Threads.
Costruzione di una semplice Agenda telefonica Elettronica Esercizio sull'uso delle principali system call Unix.
1 Il Buffer Cache Unix (Bach: the Design of the Unix Operating System (cap: 3)
lun mar mer gio ven SAB DOM FEBBRAIO.
I processi.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 21 Agosto.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Programmazione Concorrente e Distribuita
Architettura dei Sistemi Operativi
1 Processi e Thread Meccanismi di IPC (2) Problemi classici di IPC.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
Processi e Thread Processi Thread
1 Processi e Thread Processi e thread in Windows 2000.
1 Processi e Thread Meccanismi di IPC (2) Problemi classici di IPC.
1 Scambio Messaggi (1) Primitive base –send(destination,&msg) –receive(source, &msg) Decine di varianti, nel nostro caso : –la receive blocca automaticamente.
Informatica Generale Marzia Buscemi
1 Competizione e cooperazione pag. 88 Cap.3 - Esecuzione concorrente di processi 1.
Processi e Thread Meccanismi di IPC (1).
Transcript della presentazione:

Meccanismi di IPC Problemi classici di IPC Processi e Thread Meccanismi di IPC Problemi classici di IPC

Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per comunicare e sincronizzarsi : scambiare dati utilizzare correttamente strutture dati condivise eseguire azioni nella sequenza corretta Molti meccanismi proposti Per semplicità ci riferiremo principalmente ai processi maccanismi simili sono disponibili per i thread

Comunicazioni fra processi Race Condition (Interferenza) Due processi accedono alla memoria condivisa contemporaneamente l’esito dipende dall’ordine in cui vengono eseguiti gli accessi

Sezioni/Regioni Critiche (1) Regione Critica : porzione di un processo che accede a strutture dati condivise punti potenziali di interferenza Obiettivo : fare in modo che le regioni critiche di due processi non vengano mai eseguite contemporaneamente (mutua esclusione)

Sezioni/Regioni Critiche (2) 4 condizioni per assicurare la mutua esclusione un solo processo per volta esegue la sezione critica non viene fatta nessuna assunzione sulla velocità relativa dei processi nessun processo che sta eseguendo codice esterno alla sezione critica può bloccare un altro processo nessun processo attende indefinitamente di entrare nella sezione critica

Sezioni/Regioni Critiche (3) Mutua esclusione con sezioni critiche

Mutua Esclusione con attesa attiva (busy waiting) (1) Disabilitare le interruzioni impedisce che un altro processo vada in esecuzione non utilizzabile in modo utente utilizzabile per poche istruzioni in modo kernel non risolve il problema se il sistema ha più di una CPU

Mutua Esclusione con attesa attiva (busy waiting) (2) Soluzioni software alternanza stretta soluzione di Peterson Soluzioni hardware-software l’istruzione TSL

Mutua Esclusione con attesa attiva (3) Alternanza stretta Processo 1 Processo 0 Una soluzione non soddisfacente per il problema della ME 0 può bloccare 1 quando si trova fuori dalla SC

Mutua Esclusione con attesa attiva (4) Soluzione di Peterson (semplificata)

Mutua Esclusione con attesa attiva (5) Ingresso ed uscita dalla sezione critica utilizzando l’istruzione TSL

Soluzioni senza attesa attiva Le primitive Sleep e Wakeup (1) Idea di base : un processo viene bloccato finché non è in grado di entrare nella sezione critica (in modo da non sprecare cicli di CPU) Due primitive realizzate come system call sleep() :: blocca il processo che la invoca wakeup(P) :: sveglia il processo P

Sol. Errata al problema del produttore–consumatore (con race condition)

Semafori (1) Problema con sleep e wakeup : una wakeup non utilizzata immediatamente viene persa Semafori : variabili intere contano il numero di wakeup pendenti il valore è 0 se non ci sono wakeup pendenti e > 0 altrimenti Due operazioni atomiche standard Up e Down (P e V) down(S) se S > 0 allora S= S - 1 ed il processo continua l’esecuzione se S==0 ed il processo si blocca senza completare la primitiva up(S) se ci sono processi in attesa di completare la down su quel semaforo (e quindi necessariamente S == 0) uno di questi viene svegliato e S rimane a 0, altrimenti S viene incrementato; in caso contrario (S > 0), allora S=S + 1

Soluzione del Produttore/Consumatore con semafori

Mutex (1) Semaforo con solo due stati aperto (unlocked) o chiuso (locked) Popolare nei thread user-level Due primitive : mutex_lock(), corrisponde alla down() mutex_unlock(), corrisponde alla up() Utilizzato per realizzare sezioni critiche su dati condivisi Puo essere implementato efficientemente senza passare in stato kernel (se è disponibile la TSL)

Implementazione delle primitive di mutex_lock e mutex_unlock

Monitor (1) Oggetti (Strutture dati + procedure per accedervi) Mutua esclusione nell’esecuzione delle procedure Variabili di Condizione + wait() e signal() wait(X) sospende sempre il processo che la invoca in attesa di una signal(X) signal(X) sveglia uno dei processi in coda su X se nessun processo è in attesa va persa deve essere eseguita solo come ultima istruzione prima di uscire dal monitor (il processo svegliato ha l’uso esclusivo del monitor)

Monitor (2) Un esempio di monitor

Monitor (3) Schema di soluzione Produttore/Consumatore ad ogni istante solo una procedura del monitor è in esecuzione il buffer ha N posizioni

Monitor (4) Caratteristiche principali dei monitor Java ME nell’esecuzione dei metodi synchronized non ci sono variabili di condizione wait(), notify() simili a sleep() , wakeup() è possibile svegliare tutti i processi in attesa

Soluzione per Produttore/Consumatore in Java (parte 1) Monitor (5) Soluzione per Produttore/Consumatore in Java (parte 1)

Soluzione per Produttore/Consumatore in Java (parte 2) Monitor (6) Soluzione per Produttore/Consumatore in Java (parte 2)

Scambio Messaggi (1) Non richedono accesso a supporti di memorizzazione comune primitive base send(destination,&msg) receive(source, &msg) decine di varianti, nel nostro caso : la receive blocca automaticamente se non ci sono messaggi i messaggi spediti ma non ancora ricevuti sono bufferizzati dal SO

Sol. Produttore/Consumatore con N messaggi Scambio Messaggi (2) Sol. Produttore/Consumatore con N messaggi

I filosofi a cena (1) I filosofi mangiano e pensano Per mangiare servono due forchette Ogni filosofo prende una forchetta per volta Come si può prevenire il deadlock

Una falsa soluzione al problema dei filosofi I filosofi a cena (2) Una falsa soluzione al problema dei filosofi

Una soluzione corretta al problema (parte 1) I filosofi a cena (3) Una soluzione corretta al problema (parte 1)

Una soluzione corretta al problema (parte 2) I filosofi a cena (4) Una soluzione corretta al problema (parte 2)

Il problema dei lettori e scrittori (1) Un database molto esteso (db) es. prenotazioni aeree … Un insieme di processi che devono leggere o scrivere in db Più lettori possono accedere contemporaneamente a db Gli scrittori devono avere accesso esclusivo a db I lettori hanno precedenza sugli scrittori se uno scrittore chiede di accedere mentre uno o più lettori stanno accedendo a db, lo scrittore deve attendere che i lettori abbiano finito

Il problema dei lettori e scrittori (2) Una soluzione al problema dei lettori e scrittori

Il barbiere sonnolento (1)

Il barbiere sonnolento (2) Soluzione al problema del barbiere.