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

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

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

2 Sincronizzazione dei processi 1. Si descrivano i tipi di interazione tra processi? Due processi possono essere indipendenti oppure interagenti. Nel caso interagiscono, l esecuzione di un processo influenza l esecuzione dell altro processo. Esistono due tipi di interazione tra i processi: cooperazione (comunicazione) e competizione. La cooperazione tra processi avviene tramite scambio di informazioni. E necessario rispettare dei vincoli per quanto riguarda l ordine con la quale i processi si scambiano le informazioni. I processi devono essere sincronizzati in modo che i messaggi vengano scambiati rispettando un determinato ordine. Come esempio di comunicazione si può considerare il caso di due processi, un processo produttore e un processo consumatore. Il processo produttore produce un messaggio da stampare, mettendolo in un buffer (buffer che può contenere un solo messaggio). Il processo consumatore preleva il messaggio dal buffer e lo stampa. In questo caso il vincolo da rispettare è che il processo consumatore non possa prelevare il messaggio dal buffer finché il produttore non ha prodotto e posto nel buffer il messaggio. L ordine delle operazioni deve essere sempre: inserimento-prelievo-inserimento-prelievo. Qualunque altra sequenza di operazioni non va bene. Due processi sono invece in competizione quando hanno delle risorse comuni e non possono usare queste risorse contemporaneamente. Consideriamo due processi A e B che durante la loro esecuzione richiedono di stampare un file. I nomi dei file da stampare vengono posti in una coda di stampa e il processo demone della stampante si occuperà di prelevare i file dalla coda di stampa per stamparli. Supponiamo poi che ci siano due variabili condivise: la prima variabile che chiamiamo successivo punta al prossimo file da stampare e la seconda variabile che chiamiamo libero punta alla prima posizione libera della coda di stampa. Ad un certo istante la situazione della coda di stampa è la seguente: sono presenti file nelle posizioni 3, 4, 5, 6; i file da 0 a 2 sono appena stati stampati e quindi sono stati tolti dalla coda; la prima posizione libera è la posizione 7. La variabile successivo contiene il valore 3 e libero contiene 7. Ora A e B decidono contemporaneamente di accodare un file per la stampa.

3 Il processo A legge libero e memorizza 7 in una variabile locale primo slot libero. Dopo che ha letto libero arriva un interruzione perché il suo quanto di tempo è scaduto (perde la CPU). Il sistema operativo manda in esecuzione il processo B. Il processo B legge libero e memorizza 7 in una sua variabile locale primo slot libero. Ora entrambe i processi pensano che la prima posizione libera sia 7. Il processo B continua l esecuzione e carica in posizione 7 della coda il nome del suo file e aggiorna la variabile condivisa libero al valore 8. Il processo B perde la CPU e ad un certo istante il processo A viene schedulato nuovamente e riprende l esecuzione dal punto d interruzione. Aveva memorizzato come primo slot libero il valore 7 e quindi carica in posizione 7 il nome del suo file che dunque va a cancellare il file del processo B. Aggiorna il valore di libero che diventa 8. Il demone della stampante stamperà quindi il file del processo A ma non stamperà mai il file del processo B. Si può notare da questo esempio che il risultato finale, in questo caso la stampa, dipende dall ordine di esecuzione dei processi. Situazioni come queste prendono il nome di corse critiche (race condition). E necessario sincronizzare i processi in modo tale che l accesso alle risorse condivise avvenga in modo mutuamente esclusivo. Un solo processo alla volta può accedere alla risorsa condivisa. successivo=3 Processo A File 3 File 4 File 5 libero=7 Processo B File 6

4 2. Si descriva il concetto di sezione critica (esame del ) Una sezione critica è la parte di programma in cui un processo accede alla risorsa condivisa (file, tabella etc). L accesso alla regione critica può portare a delle corse critiche, ovvero il risultato finale dell operazione svolta sulla risorsa condivisa dipende dall ordine di esecuzione dei processi. Si potrebbero evitare le corse critiche facendo in modo che due processi non possano mai essere nelle proprie sezioni critiche nello stesso istante. L esecuzione delle sezioni critiche deve essere mutuamente esclusiva mentre non esistono vincoli sull ordine di accesso alle sezioni critiche. Questo evita le corse critiche ma non è sufficiente per avere un uso efficiente delle risorse condivise. Per fare in modo che le risorse condivise siano usate in maniera efficiente è necessario soddisfare le seguenti condizioni: a. Due processi non devono mai trovarsi contemporaneamente nella propria sezione critica b. Nessun processo in esecuzione che è fuori dalla propria sezione critica può bloccare un processo che è nella propria sezione critica c. Nessun processo deve aspettare indefinitamente prima di poter accedere alla propria sezione critica d. Non si devono fare ipotesi sul numero delle CPU Esistono vari metodi per garantire la mutua esclusione, uno di questi è la disabilitazione delle interruzioni. Ad ogni processo che entra nella propria sezione critica deve essere permesso di disabilitare le interruzioni (istruzione CLI: clear interrupt) e di riabilitarle (istruzione STI: set interrupt) in seguito quando esce dalla sua sezione critica. In questo modo, la CPU non può essere assegnata ad un altro processo perché il processo in esecuzione non può essere interrotto avendo la CPU il bit d interruzione settato a 0 (interruzione disabilitata). Il processo che è dentro la propria sezione critica può quindi modificare la risorsa condivisa senza pericolo che venga interrotto. Ci sono due problemi però:

5 1. se il processo che ha disabilitato le interruzioni non le riabilita? 2. Se il sistema fosse multiprocessore e non monoprocessore? La disabilitazione avrebbe effetto solo sulla CPU che ha il processo in esecuzione ma non sulle altre CPU che quindi potrebbero eseguire altri processi, che a loro volta potrebbero accedere alla risorsa condivisa. Questa soluzione non va bene e spiega la necessita di attuare una politica che tenga conto anche del numero dei processori (punto d). 3. Si descrivano i due modelli di interazione tra processi Esistono due forme di interazione tra processi: cooperazione e competizione. Entrambe le forme di interazione richiedono degli strumenti di sincronizzazione. Nel caso di cooperazione la sincronizzazione è necessaria per garantire l ordine di esecuzione delle operazioni su una data risorsa (esempio di produttore consumatore), mentre nel caso di competizione la sincronizzazione è necessaria per far rispettare il vincolo della mutua esclusione sulla risorsa condivisa. Gli strumenti di sincronizzazione variano a seconda del tipo di modello d interazione tra processi: modello ad ambiente globale e modello ad ambiente locale. In un modello ad ambiente globale entrambe le forme d interazione avvengono tramite la memoria condivisa. I processi comunicano usando la memoria comune e competono per l uso delle risorse condivise. I processi cooperanti quindi comunicano scrivendo e leggendo da tale zona di memoria condivisa. In questo modello i processi hanno anche il vincolo di non scrivere simultaneamente in una locazione di memoria condivisa (rispetto del vincolo della mutua esclusione). Il problema del produttore consumatore richiede l uso della memoria condivisa. Il processo produttore produce dei messaggi, che vengono posti in una area di memoria comune, dalla quale il consumatore preleva i messaggi. Il processo produttore potrebbe essere un server web, che fornisce le pagine HTML, e il processo consumatore è il client, ovvero il browser web che le richiede.

6 In un modello ad ambiente locale, detto anche modello a scambio di messaggi, i processi comunicano attraverso scambio di messaggi non usando aree di memoria condivisa. Non esistono in questo modello risorse condivise. Ogni processo opera solo sulle risorse private che non sono accessibili da altri processi. I processi comunicano attraverso dei canali di comunicazione. E il tipico modello di un sistema distribuito (reti di calcolatori) in cui abbiamo più processi che girano su processori diversi e usano la propria memoria locale (non esiste memoria condivisa). I processi comunicano usando la rete di comunicazione. In un modello a memoria condivisa la comunicazione è più veloce rispetto al caso di modello ad ambiente locale. Infatti il modello a scambio di messaggi richiede l uso di opportune system call che richiedono l intervento del kernel del Sistema Operativo. Nel caso di modello ad ambiente globale (memoria condivisa) invece il sistema operativo interviene solo per allocare l area di memoria condivisa che verrà usata per la comunicazione, poi tutti gli accessi alla memoria avvengono senza l intervento del kernel. Nel caso di modello a memoria condivisa gli strumenti di sincronizzazione sono i semafori e le primitive wait e signal, mentre nel caso di modello ad ambiente locale gli strumenti di sincronizzazione sono le primitive send e receive. Processo A Processo B 2 1 Modello ad ambiente locale kernel

7 Processo A 1 Memoria condivisa Modello ad ambiente globale Processo B 2 kernel 4. Si illustrino i principali metodi di sincronizzazione dei processi mediante segnali (esame del ) La sincronizzazione tra processi può essere eseguita nei seguenti modi: a. attraverso l utilizzo di strutture dati come i semafori e le relative primitive wait e signal (modello ad ambiente globale o a memoria condivisa): vedi risposta alla domanda 5. b. mediante l uso delle primitive sleep() e wakeup (P): quando un processo esegue una sleep () esso si sospende in attesa di essere risvegliato. Quando un processo esegue la wakup (P) risveglia il processo P. Se il processo P non è sospeso il risveglio viene perduto. Per maggiori dettagli vedere la risposta alla domanda 9. c. mediante l uso delle primitive send e receive (modello a scambio di messaggi): vedi risposta alla domanda 10 d. Altri strumenti di sincronizzazione di più alto livello sono i monitor.

8 5. Si descriva il funzionamento di un semaforo per la sincronizzazione dei processi (esame del ) In un ambiente a memoria comune è possibile realizzare la sincronizzazione dei processi attraverso i semafori e le primitive WAIT e SIGNAL. I semafori consentono di risolvere sia il problema della mutua esclusione sia il problema della comunicazione (processo produttore consumatore). Un semaforo S è una variabile intera non negativa che indichiamo con S.VALUE con valore iniziale (S.iniziale >=0). Ad ogni semaforo è associata una coda di processi bloccati S.CODA. Inoltre su un semaforo possono essere eseguite due sole operazioni, che sono le operazioni di WAIT (S) e di SIGNAL (S). Queste operazioni sono indivisibili cioè se un processo fa una WAIT(S) nessun altro processo può fare contemporaneamente la WAIT(S) e cosi pure per la SIGNAL. Quando un processo fa la WAIT (S) se trova il semaforo S con valore maggiore di 0, il valore del semaforo viene decrementato di una unità ed il processo prosegue la sua esecuzione (semaforo verde), altrimenti se trova il semaforo S con S=0 (semaforo rosso) il processo viene sospeso e il suo descrittore viene inserito nella coda dei processi bloccati associata a quel semaforo. La CPU viene assegnata ad un altro processo. L operazione di SIGNAL(S) risveglia un processo sospeso ma non è sospensiva per chi la esegue. Quando un processo che è in esecuzione fa la SIGNAL, se nessun processo è presente nella coda dei processi bloccati su quel semaforo, allora il valore del semaforo S viene incrementato di 1 altrimenti viene risvegliato il primo processo presente in coda che andrà nella coda dei processi pronti e il processo che ha fatto la SIGNAL prosegue la sua esecuzione a meno che non sia un sistema a priorità e il processo risvegliato abbia priorità più alta del processo in esecuzione. In tal caso va in esecuzione il processo risvegliato a scapito del processo che ha fatto la SIGNAL che verrà inserito nella coda dei processi pronti. Le operazioni di WAIT e SIGNAL sono descritte di seguito:

9 void WAIT (S) { if (s.value==0) /il processo viene sospeso e il suo descrittore inserito in S.CODA/ else S.VALUE=S.VALUE-1; } void SIGNAL (S) { if (esiste almeno un processo nella coda S.CODA dei processi sospesi ) /il suo descrittore viene estratto e inserito nella coda dei processi pronti/; else S.VALUE=S.VALUE+1; } 6. Descrivere il meccanismo di mutua esclusione mediante semafori (esame del ) Il problema della mutua esclusione può essere risolto attraverso l uso di un semaforo binario a cui si da il nome di MUTEX. Un semaforo binario può assumere solo due valori: 0 e 1. Il semaforo MUTEX è inizializzato al valore 1. Per ogni processo, dell insieme dei processi che competono per l uso della risorsa condivisa, è valido il seguente schema: Processo P prologo wait (MUTEX); /*chiede di entrare nella regione critica*/ <sezione critica>; epilogo: signal (MUTEX); /*informa che ha rilasciato la regione critica */

10 Il prologo è l insieme delle istruzioni che devono essere eseguite per richiedere l accesso alla sezione critica. L epilogo è l insieme delle istruzioni che vengono eseguite per dichiarare libera la regione critica. Quando il processo P fa l istruzione wait (MUTEX), se trova MUTEX=1 (semaforo verde) allora decrementa il valore di MUTEX al valore 0 (semaforo rosso) ed esegue la propria sezione critica. Avendo messo a 0 il MUTEX qualunque altro processo che vuole accedere alla propria sezione critica farà la wait ma verrà sospeso in coda al semaforo MUTEX. Quando il processo termina la sezione critica, fa signal (MUTEX) e risveglia il primo processo presenta nella coda dei processi sospesi. Il processo che ha fatto la signal potrebbe continuare la sua esecuzione oppure no, dipende dalla priorità del processo risvegliato. N.B: se c è almeno un processo in coda, il semaforo MUTEX rimane a 0 quando viene fatta la signal. Si consideri il seguente esempio: Siano P1 P2 e P3 tre processi che competono per l uso di una risorsa comune. Indichiamo con A B e C le regioni critiche associate ai tre processi. Usiamo un semaforo MUTEX inizializzato a 1. I tre processi seguono il seguente schema: Processo P1 prologo wait (MUTEX); <sezione critica A>; epilogo: signal (MUTEX); Processo P2 prologo wait (MUTEX); <sezione critica B>; epilogo: signal (MUTEX); Processo P3 prologo wait (MUTEX); <sezione critica C>; epilogo: signal (MUTEX);

11 Supponiamo che il primo processo ad andare in esecuzione sia il processo P2. Il processo P2 trova MUTEX=1 e quindi eseguendo la wait (MUTEX) decrementa MUTEX a 0 e accede alla propria sezione critica (sezione critica B). Ora ad un certo istante il processo P2 subisce la revoca della CPU (es.quanto di tempo scaduto) e viene schedulato il processo P1. Il processo P1 fa la wait(mutex) ma trova MUTEX=0 (semaforo rosso) e di conseguenza non può entrare nella propria sezione critica e viene sospeso andando nella coda dei processi bloccati. Se ora viene schedulato P3 accadrà la stessa cosa. Anche P3 viene sospeso. P2 si trova in stato di pronto e P1 e P3 si trovano in stato di bloccato. Ora viene schedulato il processo P2 che completerà la sua sezione critica. Al termine esegue la signal (MUTEX) e risveglia il primo processo in coda al semaforo, che passa in stato di pronto. Se P1 ha priorità più alta rispetto a P2 allora P2 viene sospeso e viene eseguito P1 altrimenti continua l esecuzione di P2. In questo caso, quando P2 termina o viene sospeso, perché è scaduto il suo quanto di tempo, viene eseguito il processo P1 che può accedere alla propria sezione critica (N.B la MUTEX non viene fatta perché il PC contiene l indirizzo dell istruzione successiva alla WAIT(MUTEX) e cioè punta alla prima istruzione della regione critica). Al termine della propria sezione critica esegue la signal (MUTEX) che risveglia P3 che andrà nella coda dei processi pronti. Al termine dell esecuzione di P1 viene schedulato P3 che potrà accedere alla propria sezione critica. Ora quando il processo P3 termina la propria sezione critica e fa la SIGNAL (MUTEX), nessun processo è più presente nella coda dei processi bloccati e quindi il semaforo MUTEX viene incrementato e ritorna a 1. In definitiva qualunque sia l ordine di esecuzione dei processi, con il semaforo MUTEX inizializzato a 1, è garantita la mutua esclusione delle sezioni critiche A B e C. Un vantaggio di questa tecnica è quello di evitare un attesa attiva dei processi che non possono entrare nella propria sezione critica. Infatti, un processo che non può entrare nella propria sezione critica viene sospeso, al contrario della soluzione con lock x e unlock x nella quale un processo rimane in attesa attiva, tenendo occupato il processore eseguendo ciclicamente delle istruzioni per richiedere l accesso alla regione critica.

12 7. Si descrivano nel dettaglio le primitive semaforiche e si mostri come queste possano essere usate per risolvere il problema produttoriconsumatori (esame del ) Le primitive semaforiche sono le primitive wait (S) e signal (S) dove S è la variabile semaforica. Il semaforo S è una variabile intera non negativa. Le operazioni di WAIT e SIGNAL sono descritte di seguito: void WAIT (S) { if (s.value==0) /il processo viene sospeso e il suo descrittore inserito in S.CODA/ else S.VALUE=S.VALUE-1; } void SIGNAL (S) { if (esiste almeno un processo nella coda S.CODA dei processi sospesi ) /il suo descrittore viene estratto e inserito nella coda dei processi pronti/; else S.VALUE=S.VALUE+1; } Il problema del produttore consumatore può essere risolto utilizzando le primitive semaforiche nel modo seguente. Ipotesi: buffer di dimensione 1 e inizialmente vuoto. Utilizziamo due semafori: il semaforo spazio-disponibile inizializzato a 1 e il semaforo messaggio-disponibile inizializzato a 0.

13 Processo produttore { do { <produzione del nuovo messaggio>; wait (spazio-disponibile); <deposito del messaggio nel buffer>; signal (messaggio-disponibile); } while (!fine); } Processo consumatore { do { wait (messaggio-disponibile); <prelievo del messaggio dal buffer >; signal (spazio-disponibile); <consumo del messaggio> } while (!fine); } Il produttore produce un nuovo messaggio e fa una wait sul semaforo spazio-disponibile. Se spazio-disponibile=0 allora semaforo rosso e il processo produttore viene sospeso fintanto che il consumatore non consuma il messaggio e lo risveglia. Se invece il semaforo spaziodisponibile=1 (semaforo verde) allora il produttore inserisce il messaggio nel buffer. Ora fa la signal sul semaforo messaggio-disponibile che incrementa messaggio-disponibile al valore 1 se il consumatore non era sospeso, oppure risveglia il consumatore se quest ultimo era sospeso. Il consumatore fa la wait sul semaforo messaggio-disponibile. Se messaggio-disponibile=0 allora il consumatore si sospende in attesa che venga risvegliato dalla signal del produttore. Se messaggiodisponibile=1 il consumatore preleva il messaggio dal buffer e risveglia, con la signal sul semaforo spazio-disponibile, il processo produttore se questo era sospeso, oppure se non era sospeso incrementa spazio disponibile e continua la sua esecuzione consumando il messaggio prelevato dal buffer.

14 8. Si descriva il meccanismo di sincronizzazione mediante semafori nel caso di più produttori e più consumatori. E richiesto lo psudo-codice sia per il produttore sia per il consumatore. (esame del ) La soluzione è analoga al caso di buffer di dimensione 1. Ci saranno ancora due semafori: spazio-disponibile che ora verrà inizializzato al valore N con N dimensione del buffer e messaggio-disponibile che è ancora inizializzato al valore 0. Il produttore verifica che ci sia spazio nel buffer tramite la primitiva wait (spazio-disponibile). Se spazio-disponibile = 0 allora il buffer è pieno e il produttore viene sospeso. Quando il consumatore preleva un messaggio dal buffer, il buffer non è più pieno e il produttore viene risvegliato dal consumatore che esegue la primitiva signal (spazio-disponibile). Il consumatore verifica che ci sia un messaggio nel buffer attraverso la primitiva wait (messaggio-disponibile). Se messaggio-disponibile=0 (buffer vuoto) allora il consumatore viene sospeso in attesa che venga risvegliato dal produttore mediante la signal (messaggio-disponibile). #define spazio-disponibile N #define messaggio-disponibile 0 Processo produttore { do { <produzione del nuovo messaggio>; wait (spazio-disponibile); <deposito del messaggio nel buffer>; signal (messaggio-disponibile); } while (!fine); } Processo consumatore { do { wait (messaggio-disponibile); <prelievo del messaggio dal buffer >; signal (spazio-disponibile); <consumo del messaggio> } while (!fine); }

15 9. Descrivere il meccanismo di sincronizzazione dei processi basato su sleep e wakeup. (esame del ) Esistono diversi meccanismi per sincronizzare i processi. La sincronizzazione è necessaria nel caso di processi interagenti, ossia processi che si influenzano a vicenda durante l esecuzione. Due processi interagenti possono essere in competizione per l uso della stessa risorsa (risorsa condivisa) e allora devono rispettare la proprietà di mutua esclusione. Un solo processo alla volta può accedere alla risorsa condivisa (esempio una variabile) altrimenti si verificano delle corse critiche. Affinché la proprietà di mutua esclusione sia rispettata occorre che i processi siano sincronizzati. Processi interagenti possono anche cooperare ovvero possono scambiarsi informazioni per eseguire un attività comune. In questo caso è necessario che i processi rispettino un determinato ordine di esecuzione (es. produttore consumatore). L ordine da rispettare nel caso di buffer con una sola locazione disponibile è: inserimento-estrazioneinserimento-estrazione. Solo dopo che il produttore ha inserito il messaggio nel buffer il consumatore lo può prelevare. Qualunque altra sequenza non va bene. Le possibili tecniche di sincronizzazione sono: uso delle primitive sleep e wakeup, uso dei semafori con le primitive wait e signal e uso delle primitive send e receive (scambio di messaggi). Il funzionamento della sincronizzazione tramite sleep e wakeup è il seguente: la primitiva sleep() provoca la sospensione del processo che la esegue. La sleep non ha parametri e quindi quando un processo P che è in esecuzione la esegue, esso viene sospeso e il suo descrittore viene inserito nella coda dei processi bloccati in attesa che venga risvegliato. La primitiva che consente di risvegliare un processo P sospeso è la primitiva wakeup (P). La wakeup ha come parametro il processo da risvegliare. Come esempio di utilizzo delle primitive sleep e wakeup consideriamo il problema del produttore-consumatore con buffer di dimensione limitata. Di seguito sono rappresentati i codici del produttore e del consumatore

16 #define TRUE 1 /*costante 1*/!sleep (); /*se il buffer è pieno il produttore si sospende*/ "# #wakeup $ $ %sleep(); /*se il buffer è vuoto il consumatore si sospende*/ #!#wakeup $ $ La descrizione dei due codici è la seguente: Il buffer ha dimensione N. Il produttore produce il messaggio è successivamente controlla che il buffer non sia pieno. Se non è pieno, ovvero contatore<n, allora inserisce nuovo messaggio nel buffer e incrementa il contatore. Se invece contatore=n allora il buffer è pieno e il produttore si sospende con una sleep, in attesa che il consumatore prelevi

17 un messaggio in modo da liberare un posto nel buffer. Se, dopo che ha inserito un messaggio e ha incrementato il contatore, il contatore assume valore 1, allora significa che precedentemente il buffer era vuoto e quindi il consumatore era sospeso. Il produttore risveglia il consumatore con una wakeup(consumatore) che gli dice: guarda che c è un messaggio nel buffer. Il consumatore esegue il seguente algoritmo: Se il contatore=0 significa che il buffer è vuoto (il consumatore non può prelevare messaggi) e quindi si sospende con una sleep in attesa di essere risvegliato dal produttore. Se il buffer non è vuoto, ovvero contatore>0, allora il consumatore preleva il messaggio e decrementa contatore (numero messaggi nel buffer). Se, dopo che ha decrementato il contatore, il consumatore trova che contatore=n-1, allora significa che prima il buffer era pieno e quindi il produttore era sospeso. Il consumatore in questo caso risveglia il produttore con una wakeup(produttore). L uso di sleep e wakeup non elimina però il problema delle corse critiche. La varibile contatore è infatti condivisa da produttore e consumatore. Può allora succedere questo: il buffer è vuoto e viene schedulato il consumatore che legge contatore=0. Prima che il consumatore si sospenda con la sleep, lo scheduler blocca il consumatore che passa nella coda dei processi pronti e manda in esecuzione il produttore. Il produttore legge contatore=0 (il buffer è vuoto) e quindi inserisce il nuovo messaggio nel buffer e incrementa contatore al valore 1. Ora il produttore controlla la variabile contatore e legge contatore=1 e quindi pensa che il consumatore sia sospeso perché il buffer prima era vuoto (contatore=0). Il produttore allora risveglia il consumatore con una wakeup (consumatore). Poiché il consumatore non è sospeso perché non ha fatto alcuna sleep(), il risveglio viene perso. Il consumatore ad un certo punto viene nuovamente schedulato e ritorna in esecuzione. Poiché era stato sospeso subito dopo aver letto contatore=0 allora ora esegue la sleep() e si sospende. Il produttore va nuovamente in esecuzione, fa il controllo sul numero elementi nel buffer, trova che il buffer non è pieno (c è un solo messaggio) e quindi inserisce un nuovo messaggio e incrementa contatore al valore 2. Ora fa il controllo su contatore. Contatore non è uguale a 1 e quindi non risveglia il consumatore che si era sospeso.

18 Continua allora ad inserire altri messaggi finché il buffer non è pieno (N messaggi). Quando contatore=n (buffer pieno) il produttore fa la sleep e si sospende. Ora sia il produttore e sia il consumatore sono sospesi per sempre. 10. Si descrivano i meccanismi di sincronizzazione dei processi mediante scambio di messaggi (esame del ) In un modello d interazione tra processi a scambio di messaggi, detto anche modello ad ambiente locale, la sincronizzazione dei processi avviene attraverso le primitive send e receive. In questo modello non esistono risorse comuni ( gli spazi d indirizzamento dei singoli processi sono separati) e la comunicazione avviene mediante canali di comunicazione. E il tipico modello di una rete di elaboratori dove ogni processo è in esecuzione su una cpu diversa e ciascun processo ha a disposizione una memoria locale (risorsa) il cui gestore è lui stesso. Non esistono variabili condivise. Lo scambio di messaggi può avvenire anche in un modello ad ambiente globale (memoria condivisa). I processi operano in questo caso sulla stessa macchina. Come fanno a comunicare? In questo caso i processi comunicano mediante un canale di comunicazione logico che è rappresentato da una specifica area di memoria allocata appositamente per lo scambio dei messaggi e gestita direttamente dal sistema operativo. Questa area di memoria non è accessibile dai singoli processi. I processi possono solo usarla per inserire messaggi e prelevare messaggi. Il canale funziona come una MAILBOX. In Unix questo è possibile attraverso l utilizzo dello strumento PIPE. La PIPE è un canale unidirezionale. Si inserisce il messaggio da un lato e si preleva dall altro lato. La PIPE inoltre ha capacità limitata. La PIPE è un canale di tipo molti a molti, cioè più processi possono inserire messaggi e più processi possono ricevere messaggi. L accesso ad una PIPE avviene tramite le primitive di lettura (READ) e scrittura (WRITE) di file. Vediamo ora il funzionamento delle due primitive send e receive. Lo schema generale delle due primitive è il seguente:

19 send (destinazione, messaggio) receive (origine, messaggio) La primitiva send spedisce un messaggio alla destinazione specificata, mentre la primitiva receive consente di ricevere un messaggio da un determinato processo origine. la comunicazione tra i processi può avvenire direttamente o indirettamente: la comunicazione diretta può essere simmetrica o asimmetrica. Nel caso di comunicazione diretta i processi si conoscono e si nominano a vicenda. Nella primitiva send deve essere specificato esplicitamente il nome del processo a cui si vuole inviare il messaggio e nella receive deve essere specificato esplicitamente il nome del processo da cui si vuole ricevere il messaggio. Esempio: due processi P1 e P2 che devono comunicare usano il seguente schema: send (P2, messaggio) /* P1 spedisce il messaggio al processo P2*/ receive(p1, messaggio)/* P2 riceve messaggio dal processo P1*/ Se il canale è associato in modo univoco ai due processi allora la comunicazione è simmetrica. Nel caso di comunicazione diretta e asimmetrica solo il processo mittente conosce il destinatario e lo nomina esplicitamente. Il processo destinatario invece non nomina il processo da cui vuole ricevere il messaggio in quanto questo può essere ricevuto da più mittenti. In generale il mittente verrà indicato con un generico id (identificatore di processo) che di volta in volta assumerà il nome del processo con cui è avvenuta la comunicazione. Lo schema è il seguente:

20 send (P2, messaggio) /* P1 spedisce il messaggio al processo P2*/ receive(id, messaggio)/* P2 riceve messaggio dal processo id generico*/ Nel caso di comunicazione indiretta i messaggi non sono spediti direttamente ai processi ma si usa una porta (MAILBOX) per depositare i messaggi e prelevare i messaggi. La MAILBOX è gestita direttamente dal sistema operativo ed è accessibile dai processi attraverso delle opportune system call. send (A, messaggio) /* P1 spedisce il messaggio alla mailbox A*/ receive(a, messaggio) /* P2 preleva il messaggio dalla mailbox A*/ Di seguito è rappresentato il caso di comunicazione client-server: ogni processo che vuole accedere al server effettua la richiesta attraverso la mailbox. Client 1 Client 2 mailbox A Forza Roma server Client N

21 Per quanto riguarda la sincronizzazione mediante send e receive esistono varie possibilità che dipendono dalle proprietà della send e della receive. la send può essere sincrona o asincrona e la receive può essere bloccante o non bloccante. Nel caso di send asincrona il processo mittente continua la sua esecuzione dopo che ha spedito il messaggio senza attendere conferma dal ricevente. Non c è alcuna garanzia che il messaggio sia stato ricevuto. Nel caso di send sincrona il processo mittente rimane bloccato fino alla ricezione del messaggio da parte del destinatario (rendez -vouz semplice) oppure rimane bloccato fino a che il destinatario non elabora il messaggio (termina di svolgere l azione richiesta dal mittente) e risponde (rendez-vous esteso). Nel caso di receive bloccante il destinatario si blocca se non c è nessun messaggio da elaborare. Quando arriva il primo messaggio il processo destinatario viene risvegliato. Nel caso di receive non bloccante il destinatario continua l esecuzione anche se non c è alcun messaggio. Nel modello client-server la send è di tipo sincrono e la receive è bloccante. Il server si blocca se non c è alcun messaggio da elaborare e il client rimane in attesa della risposta dal server. 11. Si illustri (a livello di pseudo-codice) la soluzione del problema dei produttori e dei consumatori risolta mediante semafori (esame del ) Vedi risposta alla domanda 7.

Il costrutto monitor [Hoare 74]

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

Dettagli

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

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

Dettagli

CAPITOLO 27 SCAMBIO DI MESSAGGI

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:

Dettagli

Pronto Esecuzione Attesa Terminazione

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

Dettagli

Il costrutto monitor [Hoare 74]

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

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

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

Dettagli

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

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

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

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. 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

Dettagli

CAPITOLO 7 - SCAMBIO DI MESSAGGI

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

Dettagli

Sistemi Operativi. Lezione 7 Comunicazione tra processi

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

Dettagli

Sistemi Operativi (modulo di Informatica II)

Sistemi Operativi (modulo di Informatica II) Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Processi cooperanti La comunicazione tra processi Necessità

Dettagli

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. 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

Dettagli

MODELLO AD AMBIENTE GLOBALE

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

Dettagli

Il problema del produttore e del consumatore. Cooperazione tra processi

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

Dettagli

Esempio produttori consumatori. Primitive asincrone

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

Dettagli

CAPITOLO 24 I MONITOR

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

Dettagli

Capitolo 7: Sincronizzazione

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

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Pietro Frasca Lezione 5 Martedì 21-10-2014 Thread Come abbiamo detto, un processo è composto

Dettagli

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. 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

Dettagli

Modello a scambio di messaggi

Modello a scambio di messaggi PRIMITIVE PER LO SCAMBIO DI MESSAGGI Un messaggio si può considerare costituito da: origine, destinazione e contenuto Modello a scambio di messaggi type messaggio = record origine: ; destinazione: ; contenuto:

Dettagli

Sommario. G. Piscitelli

Sommario. G. Piscitelli Sommario Interprocess Communication Processi (e thread) cooperanti Il paradigma produttore-consumatore Shared Memory e Inter Process Communication (IPC) facility Proprietà caratteristiche della comunicazione

Dettagli

Sistemi Operativi Esercizi Sincronizzazione

Sistemi Operativi Esercizi Sincronizzazione Sistemi Operativi Esercizi Sincronizzazione Docente: Claudio E. Palazzi cpalazzi@math.unipd.it Esercizi Sincronizzazione Sistemi Operativi - Claudio Palazzi 14 Semafori (1) Semafori: variabili intere contano

Dettagli

I THREAD O PROCESSI LEGGERI Generalità

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

Dettagli

Reti e problematiche di Rete

Reti e problematiche di Rete Reti e problematiche di Rete I Processi Concorrenti Enrico Cavalli Anno Accademico 2008-2009 I problemi con i processi concorrenti 1 I processi concorrenti La concorrenza tra processi avviene secon diverse

Dettagli

Tecnologia di un Database Server (centralizzato) Gestione del buffer

Tecnologia di un Database Server (centralizzato) Gestione del buffer Buffer Basi di Dati / Complementi di Basi di Dati 1 Tecnologia di un Database Server (centralizzato) Gestione del buffer Angelo Montanari Dipartimento di Matematica e Informatica Università di Udine Buffer

Dettagli

Il Sistema Operativo

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

Dettagli

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

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

Dettagli

Monitor. Introduzione. Struttura di un TDA Monitor

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

Dettagli

Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O

Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario L hardware di I/O Struttura Interazione tra computer e controllori

Dettagli

CAP. 6: Nucleo del sistema operativo (La gestione dei processi)

CAP. 6: Nucleo del sistema operativo (La gestione dei processi) Struttura interna del sistema operativo Linux CAP. 6: Nucleo del sistema operativo (La gestione dei processi) Architettura del sistema operativo shell Programmi utente Modo utente Interfaccia delle chiamate

Dettagli

LA SINCRONIZZAZIONE TRA PROCESSI

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

Dettagli

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

SISTEMI OPERATIVI. Gestione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 13/05/2007 2007 SISTEMI OPERATIVI Gestione dei processi Domande di verifica Luca Orrù Centro Multimediale Montiferru 13/05/2007 Gestione dei processi 1. Qual è la differenza tra un programma e un processo? Un programma

Dettagli

Ordinamento degli eventi. Lezione 11. Osservazioni. Relazione verificato prima. Cenni ai sistemi operativi distribuiti 3. Coordinazione distribuita

Ordinamento degli eventi. Lezione 11. Osservazioni. Relazione verificato prima. Cenni ai sistemi operativi distribuiti 3. Coordinazione distribuita Lezione 11 Cenni ai sistemi operativi distribuiti 3. Coordinazione distribuita Ordinamento degli eventi Un sistema monoprocessore Unico clock Unica memoria Ordinamento degli eventi Mutua esclusione Deadlock

Dettagli

Dove die( stringa ) è una funzione di utilità del php che stampa la stringa e fa terminare lo script.

Dove die( stringa ) è una funzione di utilità del php che stampa la stringa e fa terminare lo script. I file in PHP Un file è un archivio elettronico contenente informazioni (dati) memorizzate su memoria di massa. Il file ha la caratteristica di consentire la lettura, la scrittura e la modifica dei dati

Dettagli

Java Virtual Machine

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

Dettagli

Implementazione dei monitor tramite semafori Attesa condizionale Sincronizzazione nei sistemi operativi reali Transazioni atomiche

Implementazione dei monitor tramite semafori Attesa condizionale Sincronizzazione nei sistemi operativi reali Transazioni atomiche Implementazione dei monitor tramite semafori Attesa condizionale Sincronizzazione nei sistemi operativi reali Transazioni atomiche 5.1 Implementazione dei monitor con i semafori Un monitor è un tipo di

Dettagli

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. 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

Dettagli

ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX

ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX Introduzione In questa dispensa sono stati raccolti alcuni esercizi di programmazione C in ambiente Unix, tratti dagli esami di Sistemi Operativi svoltisi

Dettagli

Sistemi Operativi. ugoerr+so@dia.unisa.it 3 LEZIONE PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

Sistemi Operativi. ugoerr+so@dia.unisa.it 3 LEZIONE PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08 Sistemi Operativi Docente: Ugo Erra ugoerr+so@dia.unisa.it 3 LEZIONE PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA UNIVERSITA DEGLI STUDI DELLA BASILICATA Sommario della lezione Concetto di processo

Dettagli

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. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 22 Martedì 7-1-2014 1 System Call per l'uso dei segnali Un processo che

Dettagli

Meccanismi di sincronizzazione: Semafori e Monitor

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

Dettagli

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

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.

Dettagli

Thread: sincronizzazione Esercitazioni del 09 Ottobre 2009

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

Dettagli

Organizzazione Monolitica

Organizzazione Monolitica Principali componenti di un sistema Applicazioni utente Interprete di comandi (shell) Interfaccia grafica (desktop) Gestore del processore / Scheduler(s) Gestore della memoria Gestore delle periferiche/

Dettagli

Sincronizzazione e coordinamento nel distribuito

Sincronizzazione e coordinamento nel distribuito Sincronizzazione e coordinamento nel distribuito Sincronizzazione in sistemi centralizzati uso di primitive basate implicitamente sull esistenza della memoria condivisa Sincronizzazione in sistemi distribuiti

Dettagli

IL SISTEMA OPERATIVO

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

Dettagli

Introduzione. Meccanismi di sincronizzazione: Semafori e Monitor. Semafori - Definizione. Semafori - Descrizione informale

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

Dettagli

STRUTTURE DEI SISTEMI DI CALCOLO

STRUTTURE DEI SISTEMI DI CALCOLO STRUTTURE DEI SISTEMI DI CALCOLO 2.1 Strutture dei sistemi di calcolo Funzionamento Struttura dell I/O Struttura della memoria Gerarchia delle memorie Protezione Hardware Architettura di un generico sistema

Dettagli

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore.

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore. I processi Cos è un processo? Un processo è una attività, controllata da un programma, che si svolge su un processore. Il programma è una entità statica che descrive la sequenza di istruzioni che devono

Dettagli

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Appunti di Sistemi Operativi Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Indice 1 Cenni su alcuni algoritmi del Kernel di Unix 1 1.1 Elementi di Unix Internals.................................

Dettagli

I thread nel sistema operativo LINUX: Linuxthreads

I thread nel sistema operativo LINUX: Linuxthreads I thread nel sistema operativo LINUX: Linuxthreads LinuxThreads: Caratteristiche Processi leggeri realizzati a livello kernel System call clone: int clone(int (*fn) (void *arg), void *child_stack, int

Dettagli

Architettura di un sistema di calcolo

Architettura di un sistema di calcolo Richiami sulla struttura dei sistemi di calcolo Gestione delle Interruzioni Gestione della comunicazione fra processore e dispositivi periferici Gerarchia di memoria Protezione. 2.1 Architettura di un

Dettagli

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. 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

Dettagli

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

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi 1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi Il processo E' un programma in esecuzione Tipi di processo Stati di un processo 1 indipendenti

Dettagli

Lezione n.19 Processori RISC e CISC

Lezione n.19 Processori RISC e CISC Lezione n.19 Processori RISC e CISC 1 Processori RISC e Superscalari Motivazioni che hanno portato alla realizzazione di queste architetture Sommario: Confronto tra le architetture CISC e RISC Prestazioni

Dettagli

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX Parte 2 Struttura interna del sistema LINUX 76 4. ASPETTI GENERALI DEL SISTEMA OPERATIVO LINUX La funzione generale svolta da un Sistema Operativo può essere definita come la gestione dell Hardware orientata

Dettagli

Introduzione ai Sistemi Operativi

Introduzione ai Sistemi Operativi Introduzione ai Sistemi Operativi Sistema Operativo Software! Applicazioni! Sistema Operativo! È il livello di SW con cui! interagisce l utente! e comprende! programmi quali :! Compilatori! Editori di

Dettagli

Esercitazione [5] Input/Output su Socket

Esercitazione [5] Input/Output su Socket Esercitazione [5] Input/Output su Socket Leonardo Aniello - aniello@dis.uniroma1.it Daniele Cono D'Elia - delia@dis.uniroma1.it Sistemi di Calcolo - Secondo modulo (SC2) Programmazione dei Sistemi di Calcolo

Dettagli

Coordinazione Distribuita

Coordinazione Distribuita Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza 21.1 Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

1. Spiegare le differenze fra le seguenti modalità di binding degli indirizzi:

1. Spiegare le differenze fra le seguenti modalità di binding degli indirizzi: 1. Spiegare le differenze fra le seguenti modalità di binding degli indirizzi: compile time, load time, execution time. Quale delle modalità precedenti necessita di un supporto hardware per poter essere

Dettagli

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL STRUTTURA DEI SISTEMI OPERATIVI 3.1 Struttura dei Componenti Servizi di un sistema operativo System Call Programmi di sistema Struttura del sistema operativo Macchine virtuali Progettazione e Realizzazione

Dettagli

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 (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

Dettagli

Sistema Operativo e Applicativi

Sistema Operativo e Applicativi Sistema Operativo e Applicativi Modulo di Informatica Dott.sa Sara Zuppiroli A.A. 2012-2013 Modulo di Informatica () Software A.A. 2012-2013 1 / 36 Software Conosciamo due classi di software: Programmi

Dettagli

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

INFORMATICA. Il Sistema Operativo. di Roberta Molinari INFORMATICA Il Sistema Operativo di Roberta Molinari Il Sistema Operativo un po di definizioni Elaborazione: trattamento di di informazioni acquisite dall esterno per per restituire un un risultato Processore:

Dettagli

Architettura di un calcolatore

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

Dettagli

Introduzione ai sistemi operativi

Introduzione ai sistemi operativi Introduzione ai sistemi operativi Che cos è un S.O.? Shell Utente Utente 1 2 Utente N Window Compilatori Assembler Editor.. DB SOFTWARE APPLICATIVO System calls SISTEMA OPERATIVO HARDWARE Funzioni di un

Dettagli

Capitolo 5: I thread

Capitolo 5: I thread Capitolo 5: I thread Generalità. Modelli multithread. Problematiche relative ai thread. Pthread. 5.1 I thread Il thread è un flusso di controllo relativo ad un dato processo. Molti sistemi operativi moderni

Dettagli

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

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME) Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

La Gestione delle risorse Renato Agati

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

Dettagli

Internet, così come ogni altra rete di calcolatori possiamo vederla suddivisa nei seguenti componenti:

Internet, così come ogni altra rete di calcolatori possiamo vederla suddivisa nei seguenti componenti: Pagina 1 di 8 Struttura di Internet ed il livello rete Indice Struttura delle reti Estremità della rete Il nucleo della rete Reti a commutazione di pacchetto e reti a commutazione di circuito Funzionalità

Dettagli

Lezione 10. Scheduling nei sistemi multiprocessori. Esempio: P=2 processori. Scheduling dei processi

Lezione 10. Scheduling nei sistemi multiprocessori. Esempio: P=2 processori. Scheduling dei processi Lezione 10 Cenni ai sistemi operativi distribuiti 2. Gestione della CPU e della memoria nei multiprocessori Gestione dei processi Scheduling Bilanciamento del carico Migrazione dei processi Gestione della

Dettagli

Informatica: il sistema operativo

Informatica: il sistema operativo pierpaolo.vittorini@cc.univaq.it Università degli Studi dell Aquila Facoltà di Medicina e Chirurgia 6 ottobre 2006 Il software Il software è l insieme dei programmi che operano sul calcolatore Software

Dettagli

Il Concetto di Processo

Il Concetto di Processo Processi e Thread Il Concetto di Processo Il processo è un programma in esecuzione. È l unità di esecuzione all interno del S.O. Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono

Dettagli

SISTEMI OPERATIVI. Gestione della memoria Domande di verifica. Luca Orrù Centro Multimediale Montiferru 18/06/2007

SISTEMI OPERATIVI. Gestione della memoria Domande di verifica. Luca Orrù Centro Multimediale Montiferru 18/06/2007 2007 SISTEMI OPERATIVI Gestione della memoria Domande di verifica Luca Orrù Centro Multimediale Montiferru 18/06/2007 Gestione della memoria 1. Si descriva il concetto di memoria virtuale (esame del 19-06-2006)

Dettagli

Sistemi di Elaborazioni delle Informazioni I

Sistemi di Elaborazioni delle Informazioni I Sistemi di Elaborazioni delle Informazioni I Docente: Marco Aldinucci aldinuc@di.unito.it http://www.di.unito.it/~aldinuc Ricevimento: Su appuntamento Esercitatore: Fabio Tordini tordini@di.unito.it 1

Dettagli

Processi programma processo processo Stati di un processo Attesa di caricamento new Pronto ( ready ) Esecuzione running Waiting ( in Attesa )

Processi programma processo processo Stati di un processo Attesa di caricamento new Pronto ( ready ) Esecuzione running Waiting ( in Attesa ) Processi Un processo è l insieme delle azioni compiute dal processore per eseguire un programma. Si può semplificare dicendo che "un processo è un programma in esecuzione". Per meglio definire un processo

Dettagli

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache... Appunti di Calcolatori Elettronici Concetti generali sulla memoria cache Introduzione... 1 Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Dettagli

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione Il sistema di I/O Hardware di I/O Interfacce di I/O Software di I/O Introduzione 1 Sotto-sistema di I/O Insieme di metodi per controllare i dispositivi di I/O Obiettivo: Fornire ai processi utente un interfaccia

Dettagli

Capitolo 3: Strutture dei sistemi operativi

Capitolo 3: Strutture dei sistemi operativi Capitolo 3: Strutture dei sistemi operativi Componenti del sistema Servizi di un sistema operativo Chiamate del sistema Programmi di sistema Struttura del sistema Macchine virtuali Progettazione e realizzazione

Dettagli

Indice dei Contenuti

Indice dei Contenuti Corso Sistemi Distribuiti 6 cfu Docente: Prof. Marcello Castellano /24 Global State - 3 Mutua esclusione e sistemi concorrenti - 7 Algoritmi per la Mutua Esclusione - 10 Algoritmi basati su autorizzazioni

Dettagli

Algoritmi di scheduling

Algoritmi di scheduling Capitolo 2 Algoritmi di scheduling 2.1 Sistemi Real Time In un sistema in tempo reale (real time) il tempo gioca un ruolo essenziale. Le applicazioni di tali sistemi sono molteplici e di larga diffusione.

Dettagli

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

Esercitazione finale per il corso di Sistemi Operativi (A.A. 2004/2005) Esercitazione finale per il corso di Sistemi Operativi (A.A. 2004/2005) Descrizione dell esercitazione L esercitazione consiste nell implementare un semplice gestore di aste attraverso il quale gli utenti

Dettagli

Funzioni del Sistema Operativo

Funzioni del Sistema Operativo Il Software I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono il cosiddetto Hardware (ferramenta). La struttura del calcolatore può essere schematizzata come una serie di

Dettagli

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

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

Dettagli

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2 Computazione multi-processo Avere più processi allo stesso momento implica/richiede Processi e Threads Pt. 2 Concorrenza ed efficienza Indipendenza e protezione dei dati ma deve prevedere/permettere anche:

Dettagli

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. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 3 Martedì 15-10-2013 1 Struttura ed organizzazione software dei sistemi

Dettagli

Sincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato.

Sincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato. Processi parte III Sincronizzazione e comunicazione tra processi in Unix Segnali: usati per trasferire ad un processo l indicazione che un determinato evento si è verificato. Pipe: struttura dinamica,

Dettagli

22/05/2013. Indice dei Contenuti. Global State (1) Corso Sistemi Distribuiti 6 cfu Docente: Prof. Marcello Castellano

22/05/2013. Indice dei Contenuti. Global State (1) Corso Sistemi Distribuiti 6 cfu Docente: Prof. Marcello Castellano Corso Sistemi Distribuiti 6 cfu Docente: Prof. Marcello Castellano /24 Global State - 3 Mutua esclusione e sistemi concorrenti - 7 Algoritmi per la Mutua Esclusione - 10 Algoritmi basati su autorizzazioni

Dettagli

che vengano generati nell ordine corretto i sistema (es., la memoria, l unità aritmetico-

che vengano generati nell ordine corretto i sistema (es., la memoria, l unità aritmetico- Principi di architetture dei calcolatori: l unità di controllo Mariagiovanna Sami L unità di controllo Per eseguire le istruzioni di macchina, occorre che vengano generati nell ordine corretto i segnali

Dettagli

Sincronizzazione dei processi

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

Dettagli

DMA Accesso Diretto alla Memoria

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

Dettagli

CAPITOLO 3 : I PROCESSI

CAPITOLO 3 : I PROCESSI CAPITOLO 3 : I PROCESSI 1. CONCETTO DI PROCESSO Una questione importante che sorge nell analisi dei S.O. è la definizione delle attività. Un sistema a lotti esegue i propri job mentre un sistema a partizione

Dettagli

Mutua esclusione distribuita

Mutua esclusione distribuita Sincronizzazione del clock Il clock di CPU distribuite non é sincronizzato Clock fisico (difficile) / Clock logico (semplice) In molti casi basta sincronizzare il clock logico Sincronizzazione del clock

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

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

Dettagli

Varie tipologie di memoria

Varie tipologie di memoria Varie tipologie di memoria velocita` capacita` registri CPU memoria cache memoria secondaria (Hard Disk) Gestione della memoria Una parte della viene riservata per il SO I programmi per poter essere eseguiti

Dettagli

Scheduling della CPU. Concetti fondamentali. Concetti fondamentali. Concetti fondamentali. Dispatcher. Scheduler della CPU

Scheduling della CPU. Concetti fondamentali. Concetti fondamentali. Concetti fondamentali. Dispatcher. Scheduler della CPU Scheduling della CPU Concetti fondamentali Criteri di scheduling Algoritmi di scheduling Concetti fondamentali L obiettivo della multiprogrammazione è di avere processi sempre in esecuzione al fine di

Dettagli

SISTEMI OPERATIVI 14 settembre 2015 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR

SISTEMI OPERATIVI 14 settembre 2015 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR SISTEMI OPERATIVI 14 settembre 2015 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR Cognome: Nome: Matricola: 1. Ricordate che non potete usare calcolatrici o materiale

Dettagli

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario Lezione 2 Principi Fondamentali di SO Interrupt e Caching Sommario Operazioni di un SO: principi fondamentali Una visione schematica di un calcolatore Interazione tra SO, Computer e Programmi Utente 1

Dettagli

Processi. Laboratorio Software 2008-2009 C. Brandolese

Processi. Laboratorio Software 2008-2009 C. Brandolese Processi Laboratorio Software 2008-2009 Introduzione I calcolatori svolgono operazioni simultaneamente Esempio Compilazione di un programma Invio di un file ad una stampante Visualizzazione di una pagina

Dettagli