Cooperazione tra Processi
|
|
|
- Filiberto Pala
- 9 anni fa
- Visualizzazioni
Transcript
1 Cooperazione tra Processi Principi Il problema della sezione critica: le race condition Supporto hardware Semafori Monitor Scambio di messaggi Barriere Cos è la concorrenza? È un tema centrale nella progettazione dei S.O. e riguarda la gestione di processi multipli Multiprogramming: più processi su un solo processore, parallelismo apparente Multiprocessing: più processi su una macchina con processori multipli, parallelismo reale Distributed processing: più processi su un insieme di computer indipendenti, parallelismo reale Problemi classici di sincronizzazione 1 2 Cos è la concorrenza? Due processi si dicono in esecuzione concorrente se vengono eseguiti in parallelo (con parallelismo reale o apparente) La teoria della concorrenza studia l insieme di notazioni (linguaggi) per descrivere l esecuzione concorrente di programmi l insieme di tecniche per risolvere i problemi associati all esecuzione concorrente, quali comunicazione e sincronizzazione Applicazioni della concorrenza Multiprogrammazione: utilizzo efficiente di un processore Estensione della modularità in programmazione basate sullo sviluppo di applicazioni formate da insiemi di processi concorrenti Sviluppo di parti del sistema operativo (ad es. demoni) 3 4
2 Processi (e Thread) Cooperanti IPC: InterProcess Communication Processi indipendenti non possono modificare o essere modificati dall esecuzione di un altro processo. I processi cooperanti possono modificare o essere modificati dall esecuzione di altri processi. Vantaggi della cooperazione tra processi: Condivisione delle informazioni Aumento della computazione (parallelismo) Modularità Praticità implementativa/di utilizzo Meccanismi di comunicazione e interazione tra processi (e thread) Questioni da considerare: Come può un processo passare informazioni ad un altro? Come evitare accessi inconsistenti a risorse condivise? Come sequenzializzare gli accessi alle risorse secondo la causalità? Mantenere la consistenza dei dati richiede dei meccanismi per assicurare l esecuzione ordinata dei processi cooperanti. 5 6 Notazione per programmi concorrenti Tipologia di comunicazione Scambio di messaggi comunicazione diretta/indiretta (tramite una mailbox) code di messagi con capacità zero/limitata/illimitata comunicazione sincrona/asincrona Notazione implicita cobegin statement S1 statement S2 statement SK coend Memoria condivisa (=canale) Ogni statement S1,..., SK viene eseguito in concorrenza Le istruzioni che seguono il coend verrano eseguite solo quando tutto gli statement sono terminati 7 8
3 Soluzione errata Esercizio Supponiamo di voler definire un programma con cobegin-coend che implementa Mergesort Abbiamo a disposizione le funzioni sort(v,i,j): ordina gli elementi dell array v dall indice i all indice j merge(v,i,j,k): fa il merge dei due segmenti (che supponiamo già ordinati) di v che vanno rispettivamente da i a j e da j+1 a k mergesort(v,l)= { m= l/2 cobegin sort(v,1,m); sort(v,m+1,l); merge(v,1,m,l); coend Le tre procedure operano in parallelo sullo stesso array (e quindi le chiamate a sort e merge non sono indipendenti) 9 10 Notazione per programmi concorrenti mergesort(v,l)= { m= l/2 cobegin sort(v,1,m); sort(v,m+1,l); coend; merge(v,1,m,l); Soluzione corretta Notazione esplicita Risorse condivise dichiarazioni di variabili Processo P1 { istruzioni. Processo PK { istruzioni 11 In questo caso tutti i frammenti di codice P1, P2,... vanno intesi come programmi (sequenziali) eseguiti in parallelo condividendo le variabili dichiarate come risorse condivise 12
4 Esempio 1 Var x=0 Processo P1 { Il codice nei sottoprogrammi P1,,PK può contenere istruzioni quali assegnamenti, if-then-else, while-loop NOTA: l esecuzione in parallelo non implica l esecuzione ripetuta dei sottoprogrammi: se P1 non ha cicli allora verrà eseguito una sola volta in parallelo con gli altri programmi x:=500; Processo P2 { x:=0; Processo P3 { write(x); 13 Esempio 2 Soluzione esempio 1 Var x=0 Nell esempio 2 vi sono due possibili output (valori scritti sul monitor dall istruzione write): 0 o 500. Nota: L esecuzione di tale programma da origine ad un solo valore Esecuzioni diverse possono dare origine a risultati diversi A differenza dei programmi sequenziali la funzione definita dai programmi paralleli associa all input un insieme di possibili output e non un singolo valore Si parla in questo caso di programmi con comportamento non deterministico 14 Processo P1 { while (true) x:=500; Processo P2 { while (true) x:=0; Processo P3 { while (true) write(x); 15
5 Soluzione esempio 2 Nell esempio 2 vi sono un numero infinito di possibili output Ognuno di essi è a sua volta una sequenza infinita v 1 v 2 v 3... con v i {0, 500 per i 1 Ad esempio un possibile output è Problemi e primitive di Sincronizzazione Nota: L esecuzione di tale programma da origine ad una sola sequenza infinita Tuttavia esecuzioni diverse possono dare origine a risultati diversi (sequenze infinite diverse) Esempio: Problema del produttore-consumatore b[1] b[2] b[3] b[4] b[5] b[n] Produttore-consumatore con buffer limitato Tipico paradigma dei processi cooperanti: il processo produttore produce informazione che viene consumata da un processo consumatore Soluzione a memoria condivisa: tra i due processi si pone un buffer di comunicazione di dimensione fissata. b[1] out b[2] in (a) b[3] b[4] b[5] b[n] in out Dati condivisi tra i processi type item = ; var buffer: array [0..n-1] of item; in, out: 0..n-1; counter: 0..n; in, out, counter := 0; (b) 18 19
6 Processo produttore repeat produce un item in nextp while counter = n do no-op; buffer[in] := nextp; in := in + 1 mod n; counter := counter + 1; until false; Processo consumatore repeat while counter = 0 do no-op; nextc := buffer[out]; out := out + 1 mod n; counter := counter 1; consuma l item in nextc until false; Race conditions Race condition: più processi accedono concorrentemente agli stessi dati, e il risultato dipende dall ordine di interleaving dei processi. Frequenti nei sistemi operativi multitasking, sia per dati in user space sia per strutture in kernel. Le istruzioni Estremamente pericolose: portano al malfunzionamento dei processi cooperanti, o anche (nel caso delle strutture in kernel space) dell intero sistema counter := counter + 1; counter := counter 1; devono essere eseguite atomicamente: se eseguite in parallelo non atomicamente, possono portare ad inconsistenze. difficili da individuare e riprodurre: dipendono da informazioni astratte dai processi (decisioni dello scheduler, carico del sistema, utilizzo della memoria, numero di processori,... ) 20 Problema della Sezione Critica n processi che competono per usare dati condivisi A enters critical region A leaves critical region Ogni processo ha un segmento di codice, detto sezione critica in cui si accede ai dati condivisi. Process A Problema: assicurare che quando un processo esegue la sua sezione critica, nessun altro processo possa entrare nella propria sezione critica. Bisogna proteggere la sezione critica con apposito codice di controllo while (TRUE) { entry section sezione critica exit section sezione non critica ; Process B B attempts to enter critical region B enters critical region B blocked T 1 T 2 T 3 T 4 Time B leaves critical region 21 22
7 Criteri per una Soluzione del Problema della Sezione Critica Progresso: Definizioni alternative 1. Mutua esclusione: se il processo P i sta eseguendo la sua sezione critica, allora nessun altro processo può eseguire la propria sezione critica. 2. Progresso: se nessun processo è nella sezione critica e esiste un processo che desidera entrare nella propria sezione critica, allora l esecuzione di tale processo non può essere posposta indefinitamente. 3. Attesa limitata: se un processo P ha richiesto di entrare nella propria sezione critica, allora il numero di volte che si concede agli altri processi di accedere alla propria sezione critica prima del processo P deve essere limitato. Si suppone che ogni processo venga eseguito ad una velocità non nulla. Non si suppone niente sulla velocità relativa dei processi (e quindi sul numero e tipo di CPU) 23 Progresso: varie definizioni 1. Se nessun processo e nella sezione critica ed esiste un processo che desidera entrare nella propria sezione critica, allora l esecuzione di tale processo non puo essere posposta indefinitamente. 2. Se nessun processo e in esecuzione nella sua sezione critica e qualche processo desidera entrare nella propria sezione critica, solo i processi che si trovano fuori dalle rispettive sezioni non critiche possono partecipare alla decisione riguardante la scelta del processo che puo entrare per primo nella propria sezione critica; questa scelta non puo essere rimandata indefinitamente 3. Un processo al di fuori della sua sezione critica non puo prevenire altri processi dall entrare la propria; i processi che cercano simultaneamente di accedere alla sezione critica devono decidere quale processo entra. 24 Bounded waiting Bounded waiting Nota: il deadlock (tutti i processi sono bloccati) rappresenta violazione di progresso 1. Se un processo ha gi richiesto l ingresso nella sua sezione critica, esiste un limite superiore al numero di volte che si consente ad altri processi di entrare nelle rispettive sezioni critiche priam che si accordi la richiesta al primo processo Nota: starvation (un processo non entra mai) rappresenta una violazione di bounded waiting 25
8 Soluzioni software Flag condiviso Variabili condivise Supponiamo che ci siano solo 2 processi, P 0 e P 1 Struttura del processo P i (l altro sia P j ) while (TRUE) { entry section sezione critica exit section sezione non critica Supponiamo che i processi possano condividere alcune variabili (dette di lock) per sincronizzare le proprie azioni var occupato: (0..1); inizialmente occupato = 0 occupato = 0 un processo può entrare nella propria sezione critica Processo P i while (TRUE) { while (occupato 0) no-op; occupato := 1; sezione critica occupato := 0; sezione non critica ; Alternanza stretta Problema: Non funziona Lo scheduler può interrompere il processo subito dopo il ciclo interno e prima dell istruzione occupato:=1. P1 passa il test occupato=0 (esce dal loop) S.O. interrupt P2 passa il test occupato=0 (esce dal loop) P2 occupato:=1 P2 sezione critica S.O. interrupt P1 occupato:=1 P1 sezione critica Variabili condivise var turn: (0..1); inizialmente turn = 0 turn = i P i può entrare nella propria sezione critica Processo P i while (TRUE) { while (turn i) no-op; sezione critica turn := j; sezione non critica ; 28
9 Busy Wait Problemi Soddisfa il requisito di mutua esclusione, ma non di progresso per processi con differenze di velocità P1 entra nella sezione critica P1 esce dalla sezione critica P1 cerca di entrare nella sezione critica P2 e molto lento; fino a quando P2 non entra e poi esce dalla CS, P1 non puo entrare Il precedente algoritmo utilizza la nozione dbusy wait: attesa attiva di un evento da parte di un processo (es: testare il valore di una variabile). Semplice da implementare Porta a consumi inaccettabili di CPU In genere, da evitare, ma a volte è preferibile (es. in caso di attese molto brevi) Un processo che attende attivamente su una variabile esegue uno spin lock. 29 Controesempio 1 Bounded waiting vs Progresso Utilizzando alcune idee viste nei precedenti tentativi cerchiamo di dimostrare che le proprieta di progresso e bounded waiting non sono equivalenti Entry nella sez. critica controllata con una variabile condivisa turn: i processi entrano a turno stretto (P 1, P 2,... P k, P 1,...,P k,p 1,...,P k,... ). Cioè quando P i esce setta turn = i + 1 (modulo k) Se P i e nella sezione NON critica ed esegue un loop infinito allora non vale progresso (tutti gli altri processi sono bloccati per sempre). Tuttavia vale bounded waiting. Infatti i processi aspettano al piu k 1 turni. 30
10 Controesempio 2 Algoritmo di Peterson (cont) Scegliamo in modo casuale il processo che entra nella sezione criticia dall insieme dei processi in attesa di entrare. Vale progresso, Infatti nessun processo al di fuori della sezione critica puo influenzare la scelta di quale processo puo entrare. Basato su una combinazione di richiesta e accesso Soddisfa tutti i requisiti; risolve il problema della sezione critica per 2 processi Si può generalizzare a N processi Non vale bounded waiting (nel caso peggiore P i non entra mai: starvation). È ancora basato su spinlock 31 Algoritmo di Peterson #define FALSE 0 #define TRUE 1 #define N 2 / * number of processes * / int turn; / * whose turn is it? * / int interested[n]; / * all values initially 0 (FALSE) * / void enter_region(int process); { / * process is 0 or 1 * / int other; / * number of the other process * / other = 1 process; / * the opposite of process * / interested[process] = TRUE; / * show that you are interested * / turn = process; / * set flag * / while (turn == process && interested[other] == TRUE) / * null statement * / ; void leave_region(int process) { / * process: who is leaving * / interested[process] = FALSE; / * indicate departure from critical region * / Algoritmo del Fornaio Risolve la sezione critica per n processi, generalizzando l idea vista precedentemente. Prima di entrare nella sezione critica, ogni processo riceve un numero. Chi ha il numero più basso entra nella sezione critica. Se i processi P i and P j ricevono lo stesso numero: se i < j, allora P i è servito per primo; altrimenti P j è servito per primo. Lo schema di numerazione genera numeri in ordine crescente 32 33
11 Algoritmo del Fornaio Process P i var choosing: array[1,...,n] of boolean; var number: array[1,...,n] of integer; while TRUE do choosing[i] = T RUE; number[i] = max{number[1],..., number[n] + 1; choosing[i] = F ALSE; for k : 1 to N do while choosing[k] do no-op; while (number[k] 0 and ( number[k], k number[i], i )) do no-op; Istruzioni per disabilitare interrupt Soluzioni hardware Istruzioni speciali per rendere atomica l esecuzione di un test e di un assegnamento - critical section - number[i] = 0; end. Dove a, b c, d sse a < c oppure a = c e b < d Disabilitazione degli interrupt Istruzioni speciali: Test and Set Il processo può disabilitare TUTTI gli interrupt hw all ingresso della sezione critica, e riabilitarli all uscita Soluzione semplice; garantisce la mutua esclusione Le istruzioni di Test and Set: testano e modificano atomicamente il contenuto di una variabile/cella di memoria ma pericolosa: il processo può non riabilitare più gli interrupt, acquisendosi la macchina può allungare di molto i tempi di latenza non scala a macchine multiprocessore (a meno di non bloccare tutte le altre CPU) TS(x,y) := atomico( y = x ; x = 1 ) TS(x,y) ritorna in y il valore precedente di x Inadatto come meccanismo di mutua esclusione tra processi utente Adatto per brevi(ssimi) segmenti di codice affidabile (es: in kernel, quando si accede a strutture condivise) assegna 1 ad x 36 37
12 Utilizzo di Test&Set (cont.) item Questi due passi devono essere atomici Cioe abbiamo bisogno di una ipotetica istruzione TSL RX,LOCK che copia il contenuto della cella LOCK nel registro RX, e poi imposta la cella LOCK ad un valore 0. Il tutto atomicamente (viene bloccato il bus di memoria). shared lock=0; process Pi { int vp; %valore precedente di lock while (true) { repeat { TS(lock, vp); until (vp=0); critical section lock=0; non-critical section 38 Evitare il busy wait Le soluzioni basate su spinlock portano a busy wait: alto consumo di CPU Assicura mutua esclusione e progresso Tuttavia e basato su spinlock e quindi genera busy wait inversione di priorità: un processo a bassa priorità che blocca una risorsa viene ostacolato nella sua esecuzione da un processo ad alta priorità in busy wait sulla stessa risorsa. Idea migliore: quando un processo deve attendere un evento, che venga posto in wait; quando l evento avviene, che venga posto in ready Servono specifiche syscall o funzioni di kernel. Esempio: sleep(): il processo si autosospende (si mette in wait) wakeup(pid): il processo pid viene posto in ready, se era in wait. Ci sono molte varianti. Molto comune: con evento esplicito. 39
13 Produttore-consumatore con sleep e wakeup #define N 100 / * number of slots in the buffer * / int count = 0; / * number of items in the buffer * / void producer(void) { int item; Produttore-consumatore con sleep e wakeup (cont.) while (TRUE) { / * repeat forever * / item = produce_item( ); / * generate next item * / if (count == N) sleep( ); / * if buffer is full, go to sleep * / insert_item(item); / * put item in buffer * / count = count + 1; / * increment count of items in buffer * / if (count == 1) wakeup(consumer); / * was buffer empty? * / Risolve il problema del busy wait Non risolve la corsa critica sulla variabile count void consumer(void) { int item; I segnali possono andare perduti, con conseguenti deadlock while (TRUE) { / * repeat forever * / if (count == 0) sleep( ); / * if buffer is empty, got to sleep * / item = remove_item( ); / * take item out of buffer * / count = count 1; / * decrement count of items in buffer * / if (count == N 1) wakeup(producer); / * was buffer full? * / consume_item(item); / * print item * / Soluzione: salvare i segnali in attesa in un contatore 40 41
Trasparenze del Corso di Sistemi Operativi
Università di Udine Facoltà di Scienze MM.FF.NN. Laurea in TWM A.A. 2014/15 Trasparenze del Corso di Sistemi Operativi Marina Lenisa Università di Udine Copyright c 2000-04 Marino Miculan ([email protected])
Meccanismi di sincronizzazione: Semafori e Monitor
Meccanismi di sincronizzazione: Semafori e Monitor 1 Introduzione Nelle prossime lezioni vedremo alcuni meccanismi dei sistemi operativi e dei linguaggi di programmazione sviluppati per facilitare la scrittura
Introduzione. Meccanismi di sincronizzazione: Semafori e Monitor. Semafori - Definizione. Semafori - Descrizione informale
Introduzione Meccanismi di sincronizzazione: Nelle prossime lezioni vedremo alcuni meccanismi dei sistemi operativi e dei linguaggi di programmazione sviluppati per facilitare la scrittura di programmi
Sistemi operativi Sincronizzazione fra processi
Sistemi operativi 2003-2004 Sincronizzazione fra processi Introduzione I processi devono poter comunicare tra loro in modo strutturato e preciso Per passarsi informazioni Per non interferire con gli altri
SEMAFORI SEMAFORI. Sul semaforo sono ammesse solo due operazioni (primitive)
SEMAFORI 1 SEMAFORI Variabile intera non negativa con valore iniziale >= 0 Al semaforo è associata una lista di attesa Qs nella quale sono posti i descrittori dei processi che attono l autorizzazione a
Sincronizzazione. Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino
Sincronizzazione Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Soluzioni hardware Le soluzioni hardware al problema della SC possono essere classificate
Capitolo 7: Sincronizzazione
Capitolo 7: Sincronizzazione Il problema della sincronizzazione. Il problema della sezione critica. Hardware per la sincronizzazione. Semafori. Problemi classici di sincronizzazione. Monitor (cenni). 7.1
Soluzioni ai problemi di Mutua Esclusione Primitive di sincronizzazione. Soluzioni ai problemi di Mutua EsclusionePrimitive di sincronizzazione
Soluzioni ai problemi di Mutua Esclusione Primitive di sincronizzazione Soluzioni basate su primitive di sincronizzazione Le primitive di sincronizzazione piú comuni sono: Lock (mutex) - realizzati in
Sistemi Operativi. Lezione 7 Comunicazione tra processi
Lezione 7 Comunicazione tra processi Introduzione La soluzione sw al problema della mutua esclusione è abbastanza complessa Algoritmo di Peterson La soluzione hw mediante disabilitazione degli interrupt
CAPITOLO 22 PROBLEMA DEL PRODUTTORE/CONSUMATORE
CAPITOLO 22 PROBLEMA DEL PRODUTTORE/CONSUMATORE Il problema del produttore/consumatore Il primo approccio alla risoluzione del problema del produttore/consumatore considera un buffer infinito presentato
Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java
programmi sorgente: files.java compilatore Indipendenza di java dalla macchina ospite Programmi java Programmi java Programmi java files.class bytecode linker/loader bytecode bytecode Java API files.class
ESERCIZIO SincrAmbGlob-1
ESERCIZI DI SINCRONIZZAZIONE TRA THREAD CON SEMAFORI ESERCIZIO SincrAmbGlob-1 Si consideri un sistema nel quale è definito il semaforo sem1 e i thread P1, P2 e P3. Al tempo t il semaforo sem1 ha la seguente
Esercizi di utilizzo del semaforo semplice di competizione per l'uso di una risorsa comune
Esercizi di utilizzo del semaforo semplice di competizione per l'uso di una risorsa comune a) Uso di una risorsa condivisa Siano P 1, P 2, P 3,, P k i processi che condividono l uso di una risorsa comune
Sistemi operativi - Concetti ed esempi -Settima edizione
Capitolo 6: Sincronizzazione dei processi Capitolo 6: Sincronizzazione dei processi Introduzione Problema della sezione critica Soluzione di Peterson Hardware per la sincronizzazione Semafori Problemi
PROGRAMMA DISCIPLINARE SVOLTO a. s. 2015 / 2016
PROGRAMMA DISCIPLINARE SVOLTO a. s. 2015 / 2016 DOCENTI: TESTARDO CINZIA, VALERIO FELICI CLASSE 4 a IA DISCIPLINA TPSI MACROARGOMENTI che sono stati trattati nel corso del corrente anno scolastico (in
Le risorse. Alcune definizioni
Le risorse Dicesi risorsa un qualunque oggetto, fisico o logico, di cui un processo necessita per portare a termine la sua evoluzione. Poiché un processo evolve eseguendo istruzioni (procedure), una risorsa
Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
Modello a scambio di messaggi
Modello a scambio di messaggi Aspetti caratterizzanti il modello Canali di comunicazione Primitive di comunicazione 1 Aspetti caratterizzanti il modello modello architetturale di macchina (virtuale) concorrente
Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi
Sistemi Operativi Lez. 13: primitive per la concorrenza monitor e messaggi Osservazioni I semafori sono strumenti particolarmente potenti poiché consentono di risolvere ogni problema di sincronizzazione
Modelli di programmazione parallela
Modelli di programmazione parallela Oggi sono comunemente utilizzati diversi modelli di programmazione parallela: Shared Memory Multi Thread Message Passing Data Parallel Tali modelli non sono specifici
Modelli di interazione tra processi
Modelli di interazione tra processi Modello a memoria comune (ambiente globale, global environment) Modello a scambio di messaggi (ambiente locale, message passing) 1 Modello a memoria comune Il sistema
Componenti e connessioni. Capitolo 3
Componenti e connessioni Capitolo 3 Componenti principali CPU (Unità Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro Architettura di Von Neumann Dati e instruzioni in memoria (lettura
I THREAD O PROCESSI LEGGERI
I THREAD O PROCESSI Processi (pesanti): LEGGERI entità autonome con poche risorse condivise (si prestano poco alla scrittura di applicazioni fortemente cooperanti) Ogni processo può essere visto come Immagine
Concorrenza e sincronizzazione
Concorrenza e sincronizzazione Ingegneria del software Ing. Jody Marca [email protected] Cosa faremo oggi 2 Concorrenza Sincronizzazione Concorrenza 3 Nei programmi Java fino ad ora sviluppati è presente
Semafori. Semafori classici con i thread POSIX 2
Semafori classici Semafori I semafori sono primitive, implementate attraverso dei contatori, fornite dal sistema operativo per permettere la sincronizzazione tra processi e/o thread. Per queste primitive
Introduzione al Multithreading
Introduzione al Multithreading Claudia Calidonna Istituto di di Cibernetica C.N.R. Argomenti principali Parleremo di : Processi & Threads Operazioni sui threads ed eventuali confronti tra operazioni sui
1. Che cos è un sistema multiprogrammato? Si può realizzare la multiprogrammazione
1. Che cos è un sistema multiprogrammato? Si può realizzare la multiprogrammazione su un sistema con una sola CPU? 2. Qual è la differenza tra un interruzione e una trap? Si faccia qualche esempio. 1.
Informatica 3. Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Lezione 6 - Modulo 1. Errori durante l esecuzione. Il controllo dell esecuzione
Informatica 3 Informatica 3 LEZIONE 6: Il controllo dell esecuzione Modulo 1: La gestione delle eccezioni Modulo 2: Programmazione concorrente Lezione 6 - Modulo 1 La gestione delle eccezioni Politecnico
PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE
PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE 1 ALGORITMO, PROGRAMMA, PROCESSO Algoritmo Procedimento logico che deve essere eseguito per risolvere un determinato problema. Programma Descrizione di un
Modelli di interazione tra processi
Modelli di interazione tra processi Modello a memoria comune (ambiente globale, global environment) Modello a scambio di messaggi (ambiente locale, message passing) 1 Modello a memoria comune Il sistema
SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.
SISTEMI OPERATIVI 06.a Il Nucleo Nucleo di un SO Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher 1 Architettura di base dei SO Due le strutture di riferimento: a
Corso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 20 Alberto Ceselli [email protected] Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 20 Maggio 2010 Unità concorrenti in
Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti
Dai sistemi concorrenti ai sistemi distribuiti Problemi nei sistemi concorrenti e distribuiti I sistemi concorrenti e distribuiti hanno in comune l ovvio problema di coordinare le varie attività dei differenti
Sincronizzazione dei processi
Sincronizzazione dei processi Sincronizzazione dei processi Background Il problema della sezione critica Hardware di sincronizzazione Semafori Problemi classici di sincronizzazione Monitor 6.2 Background
Sistemi Operativi A Parte III - Sincronizzazione
Cooperazione e competizione tra processi (1) Sistemi Operativi A Parte III - Sincronizzazione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Due o più processi possono interagire
Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.
Programmi applicativi Un programma applicativo (o applicativo) è un eseguibile che può essere utilizzato dall utente e che ha funzionalità di alto livello (word processor, spreadsheet, DBMS) Univ. Milano-Bicocca
Esercizi Esercizi Università di Salerno
Sistemi Operativi: Prof.ssa A. Rescigno Anno Acc. 2015-2016 Esercizi Esercizi Università di Salerno 1. In un sistema si possono presentare solo due tipi di processi: lettori P l e scrittori P s. Dove i
Sistemi Operativi GESTIONE DEI PROCESSI. D. Talia - UNICAL. Sistemi Operativi 4.1
GESTIONE DEI PROCESSI 4.1 Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in diversi S.O. 4.2 Concetto di
Lab 4: Locks, Condition Variables in Java
Dept. of Computer Science Lab 4: Locks, Condition Variables in Java Matteo Camilli [email protected] Laboratorio di Sistemi Operativi a.a. 2015/16 Università degli Studi di Bergamo 1 Esercizi Lab3
Sistemi Operativi Sincronizzazione tra Processi
Sistemi Operativi Processi Docente: Claudio E. Palazzi [email protected] Crediti per queste slides al Prof. Tullio Vardanega 1 Processi indipendenti possono avanzare concorrentemente senza alcun vincolo
LA GESTIONE DELLA I/O
LA GESTIONE DELLA I/O Il S.O. È l interfaccia tra l hardware e i programmi che effettuano richieste di I/O Sottosistema di I/O strutturato in moduli chiamati DRIVER uno per ogni dispositivo I Driver rendono
Lab 1: Java Multithreading
Dept. of Computer Science Lab 1: Java Multithreading Matteo Camilli [email protected] Laboratorio di Sistemi Operativi a.a. 2015/16 Università degli Studi di Bergamo 1 Outline Programmazione multithreading
Esercitazione sui grafi di precedenza, fork/join, cobegin/coend.
Esercitazione sui grafi di precedenza, fork/join, co/coend. Esercizio 1. Realizzare mediante il costrutto fork/join il seguente grafo di precedenze. Risposta. cont5 := 2; cont6 := 3; cont7 := 2; S1; fork(l1);
Sincronizzazione tra processi
Sincronizzazione tra processi Sommario Introduzione Problema della sezione critica Consistenza dei dati Soluzioni basate su attesa attiva (busy waiting) Metodi software Metodi hardware Semafori Primitive
Il costrutto monitor [Hoare 74]
Il monitor 1 Il costrutto monitor [Hoare 74] Definizione: Costrutto sintattico che associa un insieme di operazioni (entry o public) ad una struttura dati comune a più processi, tale che: Le operazioni
SISTEMI OPERATIVI. Sincronizzazione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 30/05/2007
2007 SISTEMI OPERATIVI Sincronizzazione dei processi Domande di verifica Luca Orrù Centro Multimediale Montiferru 30/05/2007 Sincronizzazione dei processi 1. Si descrivano i tipi di interazione tra processi?
Livelli del sottosistema di I/O
Input/Output 1 Livelli del sottosistema di I/O Software di I/O di livello utente Software di sistema indipendente dal dispositivo Driver dei dispositivi Gestori delle interruzioni Hardware Modo utente
Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A
Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare
Il costrutto monitor [Hoare 74]
Il monitor 1 Il costrutto monitor [Hoare 74] Definizione: Costrutto sintattico che associa un insieme di operazioni (entry, o public) ad una struttura dati comune a più processi, tale che: Le operazioni
I THREAD O PROCESSI LEGGERI Generalità
I THREAD O PROCESSI LEGGERI Generalità Thread: segmento di codice (funzione) Ogni processo ha un proprio SPAZIO DI INDIRIZZAMENTO (area di memoria) Tutti i thread genereti dallo stesso processo condividono
Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata
Esercizio di Sincronizzazione tra Processi: Ponte a Senso Unico Alternato con Capacità Limitata Supponiamo sempre di avere un ponte stretto che permette il passaggio delle auto solo in un verso per volta,
Sistemi Operativi. Lezione 5 Threads e Concorrenza. Corso: Sistemi Operativi Danilo Bruschi A.A. 2014/2015
Sistemi Operativi Lezione 5 Threads e Concorrenza 1 I Thread 2 Processi Con il termine processo si denota l esecuzione di un programma (sequenza di istruzioni) nell ambito di un determinato ambiente esecutivo
Sistemi Operativi. Lez. 6: Problemi classici della programmazione concorrente
Sistemi Operativi Lez. 6: Problemi classici della programmazione concorrente Produttore e consumatore Uno dei problemi classici della programmazione concorrente è il problema del produttore consumatore.
CLASSIFICAZIONE DEI SISTEMI OPERATIVI (in ordine cronologico)
CLASSIFICAZIONE DEI SISTEMI OPERATIVI (in ordine cronologico) - Dedicati Quelli dei primi sistemi operativi. La macchina viene utilizzata da un utente per volta che può eseguire un solo programma per volta.
CAPITOLO 24 I MONITOR
EFFETTO DELLE PRIMITIVE - signal E wait SUI SEMAFORI CAPITOLO 24 I MONITOR I semafori sono un mezzo efficace per la gestione della mutua esclusione in ambienti con processi concorrenti, ma spesso è difficile
Analisi e specifica dei requisiti
Analisi e specifica dei requisiti Processo che stabilisce i servizi che il committente richiede al sistema da sviluppare ed i vincoli con cui lo si utilizzera` e sviluppera` Requisiti funzionali o non
Decima Esercitazione. Accesso a risorse condivise tramite Monitor Java
Decima Esercitazione Accesso a risorse condivise tramite Monitor Java 1 Agenda Esempio 1 La banca: gestione di una risorsa condivisa da più thread, con politica prioritaria Esercizio 2 da svolgere Accesso
1.6: Processi Concorrenti
1.6: Processi Concorrenti Programmi concorrenti Chiamate di sistema Unix per il controllo di processi Creazione, terminazione di processi Sincronizzazione sulla terminazione, segnalazione di eventi Comunicazione
Corso di Laboratorio di Sistemi Operativi
Corso di Laboratorio di Sistemi Operativi Lezione 7 Alessandro Dal Palù email: [email protected] web: www.unipr.it/~dalpalu Threads Un thread è l unità di base per l utilizzo della CPU. Composto
Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software
Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell
LA METAFORA DELL UFFICIO
LA METAFORA DELL UFFICIO Lavagna di lavoro Lavagna di programma Sportello utenti Impiegato Capo Ufficio LAVAGNA DI LAVORO Chiamiamo variabili le posizioni sulla lavagna, identificate ognuna da un nome
in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico
Click to edit Algoritmo Master title style algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito
Pronto Esecuzione Attesa Terminazione
Definizione Con il termine processo si indica una sequenza di azioni che il processore esegue Il programma invece, è una sequenza di azioni che il processore dovrà eseguire Il processo è quindi un programma
Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento
Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento
TEORIA DEI SISTEMI OPERATIVI. Sistemi monoprogrammatie multiprogrammati
TEORIA DEI SISTEMI OPERATIVI Sistemi monoprogrammatie multiprogrammati 1 STRUTTURA DEL SISTEMA OPERATIVO UTENTE La struttura di un sistema operativo è di tipo gerarchico: i programmi che lo compongono
Sistemi Operativi. 6 LEZIONE SINCRONIZZAZIONE DEI PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08
Sistemi Operativi Docente: Ugo Erra [email protected] 6 LEZIONE SINCRONIZZAZIONE DEI PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA UNIVERSITA DEGLI STUDI DELLA BASILICATA Sommario della lezione
PROGRAMMAZIONE: Le strutture di controllo
PROGRAMMAZIONE: Le strutture di controllo Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l
Rappresentazione con i diagrammi di flusso (Flow - chart)
Rappresentazione con i diagrammi di flusso (Flow - chart) Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni 50, utilizza una serie di simboli grafici dal contenuto evocativo
Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione
MODELLO AD AMBIENTE GLOBALE
MODELLI DI INTERAZIONE TRA PROCESSI Modello ad ambiente globale ( global environment ) Modello a scambio di messaggi ( message passing ) MODELLO AD AMBIENTE GLOBALE Il sistema è visto come un insieme di
CAPITOLO 27 SCAMBIO DI MESSAGGI
CAPITOLO 27 SCAMBIO DI MESSAGGI SCAMBIO DI MESSAGGI Sia che si guardi al microkernel, sia a SMP, sia ai sistemi distribuiti, Quando i processi interagiscono fra loro, devono soddisfare due requisiti fondamentali:
