Sistemi Operativi Sincronizzazione tra Processi
|
|
|
- Rosalinda Pepe
- 10 anni fa
- Visualizzazioni
Transcript
1 Sistemi Operativi Processi Docente: Claudio E. Palazzi Crediti per queste slides al Prof. Tullio Vardanega
2 1 Processi indipendenti possono avanzare concorrentemente senza alcun vincolo di ordinamento reciproco In realtà molti condividono risorse e informazioni funzionali Per gestire la loro condivisione servono meccanismi di sincronizzazione di accesso Sistemi Operativi - C. Palazzi 37
3 2 Siano A e B due che condividono la variabile X inizializzata al valore 10 Il processo A deve incrementare X di 2 unità Il processo B deve decrementare X di 4 unità A e B leggono concorrentemente il valore di X Il processo A scrive in X A il proprio risultato (12) Il processo B scrive in X B il proprio risultato (6) Il valore finale in X è l ultimo tra X A e X B a essere scritto! Il valore atteso in X invece era 8 Ottenibile solo con sequenze (A;B) o (B;A) indivise di lettura e scrittura race condition Sistemi Operativi - C. Palazzi 38
4 3 La modalità di accesso indivisa a una variabile condivisa viene detta in mutua esclusione L accesso consentito a un processo inibisce quello simultaneo di qualunque altro processo utente fino al rilascio della risorsa Si utilizza una variabile logica lucchetto (lock) che indica se la variabile condivisa è al momento in uso a un altro processo Detta anche struttura mutex (mutual exclusion) Sistemi Operativi - C. Palazzi 39
5 4 A /* i A e B devono accedere ** a X ma prima devono verificarne */ lo stato di libero if (lock == 0) { // variabile lucchetto /* X è già in uso: */ occorre ritentare con while do } else { // X è libera, allora va bloccata lock = 0; // uso della risorsa // e nuovamente liberata dopo l uso lock = 1; } B Questa soluzione non funziona! Perché? Sistemi Operativi - C. Palazzi 40
6 5 La soluzione appena vista è inadeguata Ciascuno dei due può essere prerilasciato dopo aver letto la variabile lock ma prima di esser riuscito a modificarla Questa situazione è detta race condition e può generare pesanti inconsistenze Inoltre l algoritmo mostrato richiede attesa attiva che causa spreco di tempo di CPU a scapito di altre attività a maggior valore aggiunto La tecnica di sincronizzazione tramite attesa attiva viene detta busy wait Attesa con verifica continua che una variabile cambi valore Sistemi Operativi - C. Palazzi 41
7 Sincronizzazione ammissibile Una soluzione al problema della sincronizzazione di è ammissibile se soddisfa le seguenti 4 condizioni 1. Garantire accesso esclusivo 2. Garantire attesa finita 3. Non fare assunzioni sull ambiente di esecuzione 4. Non subire condizionamenti dai esterni alla sezione critica Sistemi Operativi - C. Palazzi 42
8 Soluzioni esotiche 1 Mutua esclusione con variabili condivise tramite alternanza stretta tra coppie di Non ha bisogno di supporto dalla sua macchina virtuale Processo 0 :: while (TRUE) while (turn!= 0) /* busy wait */ ; critical_region(); turn = 1; ; Comando di alternanza (fuori dalla sezione critica) Processo 1 :: while (TRUE) while (turn!= 1) /* busy wait */ ; critical_region(); turn = 0; ; Tre gravi difetti soluzione non ammissibile! Uso di attesa attiva (busy wait) Condizionamento esterno alla sezione critica Rischio di race condition sulla variabile di controllo Sistemi Operativi - C. Palazzi 43
9 Soluzioni esotiche 2 Proposta da G. L. Peterson Migliore (!) della precedente ma ingenua rispetto al funzionamento dei processori di oggi Applica solo a coppie di IN(int i) :: int j = (1 - i); // l altro flag[i] = TRUE; turn = i; while (flag[j] && turn == i) { // attesa attiva ; OUT(int i) :: flag[i] = FALSE; Processo (int i) :: while (TRUE) IN(i); // sezione critica OUT(i); // altre attività Sistemi Operativi - C. Palazzi 44
10 Soluzioni esotiche 3 La condizione di uscita in IN() impone che il processo i resti in attesa attiva fin quando il processo j non abbia invocato OUT() Per cui flag[j] = FALSE Si ha attesa attiva quando non vi sia coerenza tra la richiesta di turn e lo stato dell altro processo Su flag[] non vi può essere scrittura simultanea che si ha invece su turn La condizione di uscita è però espressa in modo da evitare il rischio di race condition Non viene decisa solo dal valore assunto da turn! Sistemi Operativi - C. Palazzi 45
11 4 Tecniche complementari e/o alternative Disabilitazione delle interruzioni Previene il prerilascio dovuto all esaurimento del quanto di tempo e/o la promozione di a più elevata priorità Può essere inaccettabile per sistemi soggetti a interruzioni frequenti Sconsigliabile lasciare controllo interrupt a utenti (e se non li riattivano?) Inutile con due processori Sistemi Operativi - C. Palazzi 46
12 5 Tecniche complementari e/o alternative Supporto hardware diretto: Test-and-Set-Lock Cambiare atomicamente valore alla variabile di lock se questa segnala libero Evita situazioni di race condition ma comporta sempre attesa attiva Sistemi Operativi - C. Palazzi 47
13 6!! Chiamiamo regione critica la zona di programma!! che delimita l accesso e l uso di una variabile!! condivisa enter_region: TSL R1, LOCK CMP R1, 0 JNE enter_region RET leave_region: MOV LOCK, 0 RET!! Copia il valore di LOCK in R1!! e pone LOCK = 1 (bloccato)!! inoltre, blocca memory bus!! verifica se LOCK era 0 tramite R1!! attesa attiva se R1==0!! altrimenti ritorna al chiamante!! con possesso della regione critica!! scrive 0 in LOCK (accesso libero)!! ritorno al chiamante Sistemi Operativi - C. Palazzi 48
14 7 Sia la soluzione di Peterson che quella TSL sono corrette ma hanno il difetto di eseguire busy wait Inversion priority Consideriamo due : H (ad alta priorità) e L (a bassa priorità) Supponiamo che H prerilasci il processore per eseguire I/O Supponiamo che H concluda le operazioni di I/O mentre L si trova nella sua sezione critica H rimarrà bloccato in busy wating perché L non avrà più modo di concludere la sezione critica Sistemi Operativi - C. Palazzi 49
15 Il problema produttore- consumatore Sistemi Operativi - C. Palazzi 50
16 8 Soluzione sleep & wakeup Wake up non vengono memorizzate Se non c è una sleep in attesa, le wakeup vengono perse Rischio race condition su variabile count Il buffer è vuoto e il consumer ha appena letto che count = 0 Prima che il consumer istanzi la sleep, lo scheduler decide di fermare il consumer e di eseguire il producer Il producer produce un elemento e imposta count = 1 Siccome count = 1 il producer emette wakeup (che nessuno ascolta) A un certo punto lo scheduler deciderà di eseguire di nuovo il consumer il quale istanzia finalmente la sleep, ma siccome count è già stato riportato a 1 e la corrispondente wakeup è già stata emessa, il consumer non verrà più risvegliato Sistemi Operativi - C. Palazzi 51
17 9 Soluzione mediante semaforo Dovuta a E. W. Dijkstra (1965) Richiede accesso indiviso (atomico) alla variabile di controllo detta semaforo Per questo la struttura semaforo si appoggia sopra una macchina virtuale meno potente che fornisce una modalità di accesso indiviso più primitiva Semaforo binario (contatore Booleano che vale 0 o 1) Semaforo contatore (consente tanti accessi simultanei quanto il valore iniziale del contatore) La richiesta di accesso P (down) decrementa il contatore se questo non è già 0, altrimenti accoda il chiamante L avviso di rilascio V (up) incrementa di 1 il contatore e chiede al dispatcher di porre in stato di pronto il primo processo in coda sul semaforo Sistemi Operativi - C. Palazzi 52
18 10 L uso di una risorsa condivisa R è racchiuso entro le chiamate di P e V sul semaforo associato a R Processo P i :: { // avanzamento P(sem); /* uso di risorsa condivisa R */ V(sem); // avanzamento } P(sem) viene invocata per richiedere accesso a una risorsa condivisa R Quale R tra tutte? V(sem) viene invocata per rilasciare la risorsa Sistemi Operativi - C. Palazzi 53
19 11 Mediante uso intelligente di semafori binari più possono anche coordinare l esecuzione di attività collaborative Esempio con semaforo inizialmente bloccato processo A :: {// esecuzione indipendente P(sem); // attesa di B // 2a parte del lavoro } processo B :: {// 1a parte del lavoro V(sem); // rilascio di A // esecuzione indipendente } Sistemi Operativi - C. Palazzi 54
20 12 Il semaforo binario (mutex) è una struttura composta da un campo valore intero e da un campo coda che accoda tutti i PCB dei in attesa sul semaforo PCB = Process Control Block L accesso al campo valore deve essere atomico! void P(struct sem){ if (sem.valore = 1) sem.valore = 0; // busy else { suspend(self, sem.coda); schedule();} } void V(struct sem){ sem.valore = 1 ; // free if not_empty(sem.coda){ ready(get(sem.coda)); schedule();} } Sistemi Operativi - C. Palazzi 55
21 13 Il semaforo contatore ha la stessa struttura del mutex ma usa una logica diversa per il campo valore (Valore > 0) denota disponibilità non esaurita (Valore < 0) denota richieste pendenti Il valore iniziale denota la capacità massima della risorsa void P(struct sem){ sem.valore -- ; if (sem.valore < 0){ suspend(self, sem.coda); schedule();} } void V(struct sem){ sem.valore ++ ; if (sem.valore <= 0){ ready(get(sem.coda)); schedule();} } Sistemi Operativi - C. Palazzi 56
22 Monitor 1 L uso di semafori a livello di programma è ostico e rischioso Il posizionamento improprio delle P può causare situazioni di blocco infinito (deadlock) o anche esecuzioni erronee di difficile verifica (race condition) È indesiderabile lasciare all utente il pieno controllo di strutture così delicate Sistemi Operativi - C. Palazzi 57
23 #define N /* posizioni del contenitore */ typedef int semaforo; /* P decrementa, V incrementa, il valore 0 blocca la P */ semaforo mutex = 1; semaforo non-pieno = N; semaforo non-vuoto = 0; void produttore(){ void consumatore(){ int prod; int prod; while(1){ while(1){ prod = produci(); P(&non-vuoto); P(&non-pieno); P(&mutex); P(&mutex); prod = preleva(); inserisci(prod); V(&mutex); V(&mutex); V(&non-pieno); V(&non-vuoto); consuma(prod); } } } } Esempio 1 Il corretto ordinamento di P e V è critico! Sistemi Operativi - C. Palazzi 58
24 Monitor 2 Un diverso ordinamento delle P nel codice utente di Esempio 1 potrebbe causare situazioni di blocco infinito (deadlock) Codice del produttore P(&mutex); // accesso esclusivo al contenitore P(&non-pieno); // attesa spazi nel contenitore In questo modo il consumatore non può più accedere al contenitore per prelevarne prodotti, facendo spazio per l inserzione di nuovi stallo = deadlock Sistemi Operativi - C. Palazzi 59
25 Monitor 3 Linguaggi evoluti di alto livello (e.g.: Concurrent Pascal, Ada, Java) offrono strutture esplicite di controllo delle regioni critiche, originariamente dette monitor (Hoare, 74; Brinch-Hansen, 75) Il monitor definisce la regione critica Il compilatore (non il programmatore!) inserisce il codice necessario al controllo degli accessi Sistemi Operativi - C. Palazzi 60
26 Monitor 4 Un monitor è un aggregato di sottoprogrammi, variabili e strutture dati Solo i sottoprogrammi del monitor possono accederne le variabili interne Solo un processo alla volta può essere attivo entro il monitor Proprietà garantita dai meccanismi del supporto a tempo di esecuzione del linguaggio di programmazione concorrente Funzionalmente molto simile al kernel del sistema operativo Il codice necessario è inserito dal compilatore direttamente nel programma eseguibile Sistemi Operativi - C. Palazzi 61
27 Monitor 5 La garanzia di mutua esclusione da sola può non bastare per consentire sincronizzazione intelligente Due procedure operanti su variabili speciali (non contatori!) dette condition variables, consentono di modellare condizioni logiche specifiche del problema Wait(<cond>) // forza l attesa del chiamante Signal(<cond>) // risveglia il processo in attesa Il segnale di risveglio non ha memoria Va perso se nessuno lo attende Sistemi Operativi - C. Palazzi 62
28 Esempio 2 monitor PC condition non-vuoto, non-pieno; integer contenuto := 0; procedure inserisci(prod : integer); begin if contenuto = N then wait(non-pieno); <inserisci nel contenitore>; contenuto := contenuto + 1; if contenuto = 1 then signal(non-vuoto); end; function preleva : integer; begin if contenuto = 0 then wait(non-vuoto); preleva := <preleva dal contenitore>; contenuto := contenuto 1; if contenuto = N-1 then signal(non-pieno); end; end monitor; procedure Produttore; begin while true do begin prod := produci; PC.inserisci(prod); end; end; procedure Consumatore; begin while true do begin prod := PC.preleva; consuma(prod); end; end; Sistemi Operativi - C. Palazzi 63
29 Monitor 6 La primitiva Wait permette di bloccare il chiamante qualora le condizioni logiche della risorsa non consentano l esecuzione del servizio Contenitore pieno per il produttore Contenitore vuoto per il consumatore La primitiva Signal notifica il verificarsi della condizione attesa al (primo) processo bloccato, risvegliandolo Il processo risvegliato compete con il chiamante della Signal per il possesso della CPU Wait e Signal sono invocate in mutua esclusione Non si può verificare race condition Diverso dunque da sleep e wakeup visti in precedenza Sistemi Operativi - C. Palazzi 64
30 Monitor 7 Java offre un costrutto simile al monitor tramite classi con metodi synchronized Ma senza condition variable Le primitive wait() e notify() invocate all interno di metodi synchronized evitano il verificarsi di race condition In realtà il metodo wait() può venire interrotto, e l interruzione va trattata come eccezione! Sistemi Operativi - C. Palazzi 65
31 Esempio 3 class monitor{ private int contenuto = 0; public synchronized void inserisci(int prod){ if (contenuto == N) blocca(); <inserisci nel contenitore>; contenuto = contenuto + 1; if (contenuto == 1) notify(); } public synchronized int preleva(){ int prod; if (contenuto == 0) blocca(); prod = <preleva dal contenitore>; contenuto = contenuto - 1; if (contenuto == N-1) notify(); return prod; } private void blocca(){ try{wait(); } catch(interruptedexception exc) {};} } static final int N = < >; static monitor PC = new monitor(); // produttore PC.inserisci(prod); // consumatore prod = PC.preleva(); Attesa e notifica sono responsabilità del programmatore! Sistemi Operativi - C. Palazzi 66
32 Monitor 8 In ambiente locale si hanno 3 possibilità per supportare sincronizzazione tra 1. Linguaggi concorrenti con supporto esplicito per strutture monitor (alto livello) Linguaggi sequenziali senza supporto per monitor o semafori 2. Uso di semafori tramite strutture primitive del sistema operativo e chiamate di sistema (basso livello) 3. Realizzazione di semafori primitivi, in linguaggio assembler, senza supporto dal sistema operativo (bassissimo livello) Monitor e semafori non sono utilizzabili per realizzare scambio di informazione tra elaboratori Perché? Sistemi Operativi - C. Palazzi 67
33 Message Passing Sistemi Operativi - C. Palazzi 68
34 Barriere Per sincronizzare gruppi di Attività cooperative suddivise in fasi ordinate La barriera blocca tutti i che la raggiungono fino all arrivo dell ultimo Si applica indistintamente ad ambiente locale e distribuito Non comporta scambio di messaggi esplicito L avvenuta sincronizzazione dice implicitamente ai del gruppo che tutti hanno raggiunto un dato punto della loro esecuzione Sistemi Operativi - C. Palazzi 69
35 Problemi classici di sincronizzazione Metodo per valutare l efficacia e l eleganza di modelli e meccanismi per la sincronizzazione tra Filosofi a cena : accesso esclusivo a risorse limitate Lettori e scrittori : accessi concorrenti a basi di dati Barbiere che dorme : prevenzione di race condition (Produttore e Consumatore) Problemi pensati per rappresentare tipiche situazioni di rischio Stallo con blocco (deadlock) Stallo senza blocco (starvation) Esecuzioni non predicibili (race condition) Sistemi Operativi - C. Palazzi 70
36 Filosofi a cena 1 N filosofi sono seduti a un tavolo circolare Ciascuno ha davanti a se 1 piatto e 1 posata alla propria destra Ciascun filosofo necessita di 2 posate per mangiare L'attività di ciascun filosofo alterna pasti a momenti di riflessione Sistemi Operativi - C. Palazzi 71
37 Filosofi a cena 2 Soluzione A con stallo (deadlock) L accesso alla prima forchetta non garantisce l accesso alla seconda! void filosofo (int i){ 5 while (TRUE) { medita(); P(f[i]); 1 1 P(f[(i+1)%N]); mangia(); 2 3 V(f[(i+1)%N]); V(f[i]); }; } 2 Ogni forchetta modellata come un semaforo binario Sistemi Operativi - C. Palazzi 72
38 Filosofi a cena 3 Soluzione B con stallo (starvation) Errato: f contiene semafori che sono strutture dati void filosofo (int i){ while (TRUE) { OK = FALSE; medita(); while (!OK) { P(f[i]); if (!f[(i+1)%n]) { V(f[i]); sleep(t);} else { P(f[(i+1)%N]); OK = TRUE; }; mangia(); V(f[(i+1)%N]); V(f[i]); } Un attesa a durata costante difficilmente genera una situazione differente Sistemi Operativi - C. Palazzi 73
39 Filosofi a cena 4 Il problema ammette diverse soluzioni 1.Utilizzare in soluzione A un semaforo a mutua esclusione per incapsulare gli accessi a entrambe le forchette Funzionamento garantito 2.In soluzione B, ciascun processo potrebbe attendere un tempo casuale invece che fisso Funzionamento non garantito 3.Algoritmi sofisticati, con maggiore informazione sullo stato di progresso del vicino e maggior coordinamento delle attività Funzionamento garantito Sistemi Operativi - C. Palazzi 74
40 Stallo Condizioni necessarie e sufficienti Accesso esclusivo a risorsa condivisa Accumulo di risorse I possono accumulare nuove risorse senza doverne rilasciare altre Inibizione di prerilascio Il possesso di una risorsa deve essere rilasciato volontariamente Condizione di attesa circolare Un processo attende una risorsa in possesso del successivo processo in catena Sistemi Operativi - C. Palazzi 75
41 Stallo: prevenzione 1 Almeno tre strategie per affrontare lo stallo Prevenzione Impedire almeno una delle condizioni precedenti Riconoscimento e recupero Ammettere che lo stallo si possa verificare Essere in grado di riconoscerlo Possedere una procedura di recupero (sblocco) Indifferenza Considerare trascurabile la probabilità di stallo e non prendere alcuna precauzione contro di esso Che succede se esso si verifica? Sistemi Operativi - C. Palazzi 76
42 Stallo: prevenzione 2 Bisogna impedire il verificarsi di almeno una delle condizioni necessarie e sufficienti Si può fare staticamente (prima di eseguire) oppure a tempo d esecuzione 1. Accesso esclusivo alla risorsa Però alcune risorse non consentono alternative 2. Accumulo di risorse Però molti problemi richiedono l uso simultaneo di più risorse 3. Inibizione del prerilascio Però alcune risorse non consentono di farlo 4. Attesa circolare Difficile da rilevare e complessa da evitare o sciogliere Sistemi Operativi - C. Palazzi 77
43 Stallo: prevenzione 3 Prevenzione sulle richieste di accesso A tempo d esecuzione 1. A ogni richiesta di accesso si verifica se questa possa portare allo stallo In caso affermativo non è però chiaro cosa convenga fare La verifica a ogni richiesta è un onere molto pesante Prima dell esecuzione 2. All avvio di ogni processo si verifica quali risorse essi dovranno utilizzare così da ordinarne l attività in maniera conveniente Sistemi Operativi - C. Palazzi 78
44 Stallo: riconoscimento A tempo d esecuzione Assai oneroso Occorre bloccare periodicamente l avanzamento del sistema per analizzare lo stato di tutti i e verificare se quelli in attesa costituiscono una lista circolare chiusa Lo sblocco di uno stallo comporta la terminazione forzata di uno dei in attesa Il rilascio delle risorse liberate sblocca la catena di dipendenza circolare Staticamente Può essere un problema non risolvibile! Sistemi Operativi - C. Palazzi 79
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
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. 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
Sistemi Operativi Esercizi Sincronizzazione
Sistemi Operativi Esercizi Sincronizzazione Docente: Claudio E. Palazzi [email protected] Esercizi Sincronizzazione Sistemi Operativi - Claudio Palazzi 14 Semafori (1) Semafori: variabili intere contano
Monitor. Introduzione. Struttura di un TDA Monitor
Monitor Domenico Cotroneo Dipartimento di Informatica e Sistemistica Introduzione E stato introdotto per facilitare la programmazione strutturata di problemi in cui è necessario controllare l assegnazione
Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati
Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad
Java Virtual Machine
Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina
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
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
Il problema del produttore e del consumatore. Cooperazione tra processi
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 SINCRONIZZAZIONE TRA PROCESSI
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
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
Java threads (2) Programmazione Concorrente
Java threads (2) emanuele lattanzi isti information science and technology institute 1/28 Programmazione Concorrente Utilizzo corretto dei thread in Java emanuele lattanzi isti information science and
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
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:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
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
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?
1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?
1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi? 1. La nozione di multiprogrammazione prevede la possibilità di
Il Sistema Operativo
Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al meglio le risorse del Sistema
Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo
Sistema Operativo Fondamenti di Informatica 1 Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al
Introduzione ai Metodi Formali
Intruzione ai Meti Formali Sistemi software anche molto complessi regolano la vita quotidiana, anche in situazioni life-critical (e.g. avionica) e business-critical (e.g. operazioni bancarie). Esempi di
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
FONDAMENTI di INFORMATICA L. Mezzalira
FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software
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
Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta
Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa Raccolta prove scritte Realizzare una classe thread Processo che deve effettuare un numero fissato di letture da una memoria
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Lezione 15 Martedì 24-11-2015 Struttura logica del sottosistema di I/O Processi
Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.
Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell
Esempio produttori consumatori. Primitive asincrone
Primitive asincrone Send non bloccante: il processo mittente, non appena inviato il messaggio, prosegue la sua esecuzione. Il supporto a tempo di esecuzione deve fornire un meccanismo di accodamento dei
Multithreading in Java. Fondamenti di Sistemi Informativi 2014-2015
Multithreading in Java Fondamenti di Sistemi Informativi 2014-2015 Multithreading La programmazione concorrente consente di eseguire più processi o thread nello stesso momento. Nel secondo caso si parla
Corso di Programmazione Concorrente
Corso di Programmazione Concorrente Stallo Valter Crescenzi [email protected] http://www.dia.uniroma3.it/~crescenz Assunzione di Progresso Finito Tutti i processori virtuali hanno una velocità finita
SISTEMI OPERATIVI. Deadlock (blocco critico) Domande di verifica. Luca Orrù Centro Multimediale Montiferru 04/06/2007
2007 SISTEMI OPERATIVI Deadlock (blocco critico) Domande di verifica Luca Orrù Centro Multimediale Montiferru 04/06/2007 Deadlock (blocco critico) 1. Si descriva il deadlock e le condizioni sotto cui si
Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino
Il Sistema Operativo Il Sistema Operativo è uno strato software che: opera direttamente sull hardware; isola dai dettagli dell architettura hardware; fornisce un insieme di funzionalità di alto livello.
GESTIONE DEI PROCESSI
Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto
Il descrittore di processo (PCB)
Il descrittore di processo (PC) Il S.O. gestisce i processi associando a ciascuno di essi un struttura dati di tipo record detta descrittore di processo o Process Control lock (PC) Il PC contiene tutte
Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D. - 2012 1
+ Programmazione concorrente in Java 1 + Introduzione al multithreading 2 La scomposizione in oggetti consente di separare un programma in sottosezioni indipendenti. Oggetto = metodi + attributi finalizzati
Approccio stratificato
Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia
Corso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 19 Alberto Ceselli [email protected] Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 18 Maggio 2010 idea: sfruttare i
Funzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux
Scheduling della CPU Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Sistemi multiprocessori Fin qui si sono trattati i problemi di scheduling su singola
Sistema operativo: Gestione della memoria
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e
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
La Gestione delle risorse Renato Agati
Renato Agati delle risorse La Gestione Schedulazione dei processi Gestione delle periferiche File system Schedulazione dei processi Mono programmazione Multi programmazione Gestione delle periferiche File
Algoritmi di scheduling
Capitolo 3 Algoritmi di scheduling Come caso particolare di studio, di seguito è discussa in dettaglio la politica di scheduling del sistema operativo LINUX (kernel precedente alla versione 2.6). Sono
Deadlock (stallo) Parte III. Deadlock
Parte III Deadlock Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009 III - 1 Deadlock (stallo) Su di un tavolo ci sono un piatto ed una forchetta A e B sono seduti al tavolo, per mangiare ciascuno
Java: Compilatore e Interprete
Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT
Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P 1 2 0 0 P 1 1 2 2 3 3 2 P 2 3 0 2 P 2 6 0 0 P 3 2 1 1 P 3 0 1 1 < P 1, >
Algoritmo del banchiere Permette di gestire istanze multiple di una risorsa (a differenza dell algoritmo con grafo di allocazione risorse). Ciascun processo deve dichiarare a priori il massimo impiego
INFORMATICA 1 L. Mezzalira
INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello
Sistemi operativi. Esempi di sistemi operativi
Sistemi operativi Un sistema operativo è un programma che facilita la gestione di un computer Si occupa della gestione di tutto il sistema permettendo l interazione con l utente In particolare un sistema
Gestione della memoria centrale
Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti
Esecuzione concorrente di transazioni
Esecuzione concorrente di transazioni A L B E R T O B E L U S S I P A R T E I I A N N O A C C A D E M I C O 2 0 1 1-2 0 1 2 Tecniche applicate nei DBMS Le tecniche per il controllo della concorrenza che
CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU
Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi
Un sistema operativo è un insieme di programmi che consentono ad un utente di
INTRODUZIONE AI SISTEMI OPERATIVI 1 Alcune definizioni 1 Sistema dedicato: 1 Sistema batch o a lotti: 2 Sistemi time sharing: 2 Sistema multiprogrammato: 3 Processo e programma 3 Risorse: 3 Spazio degli
DMA Accesso Diretto alla Memoria
Testo di rif.to: [Congiu] - 8.1-8.3 (pg. 241 250) 08.a DMA Accesso Diretto alla Memoria Motivazioni Organizzazione dei trasferimenti DMA Arbitraggio del bus di memoria Trasferimento di un blocco di dati
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,
Un esercizio d esame. Flavio De Paoli
Un esercizio d esame e note sulla gestione dei dati Flavio De Paoli Il testo (Appello 22 ottobre 2001) Una stazione di servizio dispone di n distributori di benzina. I clienti si presentano a uno dei distributori
Lezione 8. La macchina universale
Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione
J. Assfalg Appunti di Sistemi Operativi
Lo scheduler di Linux (kernel 2.4) La politica di scheduling di Linux si propone il raggiungimento dei seguenti obiettivi (molti dei quali sono in contrasto): timesharing gestione di priorità dinamiche
CAPITOLO 7 - SCAMBIO DI MESSAGGI
CAPITOLO 7 - SCAMBIO DI MESSAGGI Lo scambio di messaggi è una forma di comunicazione nel quale un processo richiede al sistema operativo di mandare dei dati direttamente ad un altro processo. In alcuni
Corso di Sistemi di Elaborazione delle informazioni
Corso di Sistemi di Elaborazione delle informazioni Sistemi Operativi Francesco Fontanella Complessità del Software Software applicativo Software di sistema Sistema Operativo Hardware 2 La struttura del
SCHEDULATORI DI PROCESSO
Indice 5 SCHEDULATORI DI PROCESSO...1 5.1 Schedulatore Round Robin...1 5.2 Schedulatore a priorità...2 5.2.1 Schedulatore a code multiple...3 5.3 Schedulatore Shortest Job First...3 i 5 SCHEDULATORI DI
10 - Programmare con gli Array
10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
GESTIONE INFORMATICA DEI DATI AZIENDALI
GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy [email protected] Rudimenti di programmazione Programming
Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.
Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito
Appunti sulla Macchina di Turing. Macchina di Turing
Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso
SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE
SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software
Esempi di algoritmi. Lezione III
Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni
Architettura di un calcolatore
2009-2010 Ingegneria Aerospaziale Prof. A. Palomba - Elementi di Informatica (E-Z) 7 Architettura di un calcolatore Lez. 7 1 Modello di Von Neumann Il termine modello di Von Neumann (o macchina di Von
Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati
Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari
Corso di Informatica
Corso di Informatica Modulo T3 3-Schedulazione 1 Prerequisiti Concetto di media Concetto di varianza 2 1 Introduzione Come sappiamo, l assegnazione della CPU ai processi viene gestita dal nucleo, attraverso
Descrizione di un algoritmo
Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica
Il tipo di dato astratto Pila
Il tipo di dato astratto Pila Il tipo di dato Pila Una pila è una sequenza di elementi (tutti dello stesso tipo) in cui l inserimento e l eliminazione di elementi avvengono secondo la regola seguente:
Variabili e tipi di dato
Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per
Thread: sincronizzazione Esercitazioni del 09 Ottobre 2009
Thread: sincronizzazione Esercitazioni del 09 Ottobre 2009 Luca Fossati, Fabrizio Castro, Vittorio Zaccaria October 10, 2009 Sincronizzazione - 1 1 Esercizio 1: Sincronizzazione - 1 Qual è il problema
Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza
Il problema di flusso di costo minimo (MCF) Dati : grafo orientato G = ( N, A ) i N, deficit del nodo i : b i (i, j) A u ij, capacità superiore (max quantità di flusso che può transitare) c ij, costo di
Sistemi Operativi (modulo di Informatica II) I processi
Sistemi Operativi (modulo di Informatica II) I processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario Il concetto di processo Schedulazione dei processi e cambio di contesto
Soluzione dell esercizio del 2 Febbraio 2004
Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo
Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.
Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell
ESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file.
ESERCIZIO 1 Si consideri un hard disk formattato la cui memoria è suddivisa in 16 blocchi (numerati da 0 a 15). Si supponga che sull hard disk sia memorizzato un unico file, contenuto, nell ordine, nei
Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012
Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012 Concetti importanti da (ri)vedere Programmazione imperativa Strutture di
IL SISTEMA OPERATIVO
IL SISTEMA OPERATIVO... è l insieme dei programmi che rende agevole l uso dell hardware, mascherando le caratteristiche delle risorse fisiche (interfaccia) gestisce le risorse fisiche ottimizzandone l
Esercizi sul Monitor in Java
Esercizi sul Monitor in Java 1 I filosofi a cena (E. Dijkstra, 1965) 5 filosofi sono seduti attorno a un tavolo circolare; ogni filosofo ha un piatto di spaghetti tanto scivolosi che necessitano di 2 forchette
Soluzione 1. Filosofo i
Filosofi a cena Il problema N filosofi si ritrovano a cena in un ristorante cinese, occupando un tavolo circolare, apparecchiato con un piatto per ogni filosofo e un bastoncino interposto fra ogni coppia
Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro
Introduzione alle tecnologie informatiche Strumenti mentali per il futuro Panoramica Affronteremo i seguenti argomenti. I vari tipi di computer e il loro uso Il funzionamento dei computer Il futuro delle
Pag. 1. Gestione delle transazioni. Linguaggio SQL: costrutti avanzati. Esempio applicativo. Gestione delle transazioni. Prelievo. Esempio applicativo
Gestione delle transazioni Introduzione Transazioni in SQL Linguaggio SQL: costrutti avanzati 2 applicativo Operazioni bancarie operazione di prelievo dal proprio conto corrente mediante bancomat Gestione
