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

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

Gestione della memoria centrale

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

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

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

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

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

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

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

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo I Thread 1 Consideriamo due processi che devono lavorare sugli stessi dati. Come possono fare, se ogni processo ha la propria area dati (ossia, gli spazi di indirizzamento dei due processi sono separati)?

Dettagli

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1) La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema

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

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

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

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

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

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

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

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

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

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 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,

Dettagli

Introduzione ai Metodi Formali

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

Dettagli

Progetto di RHS MicroAODV per Reti di Sensori A.A. 2007/2008

Progetto di RHS MicroAODV per Reti di Sensori A.A. 2007/2008 Progetto di RHS MicroAODV per Reti di Sensori A.A. 2007/2008 Si consideri una rete di sensori MicaZ con sistema operativo TinyOS, dove ogni nodo è identificato da un ID unico e dove è presente un solo

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

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

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

Funzioni in C. Violetta Lonati

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

Dettagli

Sistemi operativi. Esempi di sistemi operativi

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

Dettagli

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

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

Dettagli

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling SCHEDULING DELLA CPU 5.1 Scheduling della CPU Concetti di Base Criteri di Scheduling Algoritmi di Scheduling FCFS, SJF, Round-Robin, A code multiple Scheduling in Multi-Processori Scheduling Real-Time

Dettagli

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1 SCHEDULING DELLA CPU 5.1 Scheduling della CPU Concetti di Base Criteri di Scheduling Algoritmi di Scheduling FCFS, SJF, Round-Robin, A code multiple Scheduling in Multi-Processori Scheduling Real-Time

Dettagli

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

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

Dettagli

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

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

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

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

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

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

Dettagli

I/O su Socket TCP: read()

I/O su Socket TCP: read() I/O su Socket TCP: read() I socket TCP, una volta che la connessione TCP sia stata instaurata, sono accedibili come se fossero dei file, mediante un descrittore di file (un intero) ottenuto tramite una

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

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

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

Manuale Servizio NEWSLETTER

Manuale Servizio NEWSLETTER Manuale Servizio NEWSLETTER Manuale Utente Newsletter MMU-05 REDAZIONE Revisione Redatto da Funzione Data Approvato da Funzione Data 00 Silvia Governatori Analista funzionale 28/01/2011 Lorenzo Bonelli

Dettagli

Esecuzione concorrente di transazioni

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

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

Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it

Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it Cenni di programmazione distribuita in C++ Mauro Piccolo piccolo@di.unito.it Socket Nei sistemi operativi moderni i servizi disponibili in rete si basano principalmente sul modello client/server. Tale

Dettagli

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE 1/6 MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE Per prima cosa si ringrazia per aver scelto ImmobiPhone e per aver dato fiducia al suo autore. Il presente documento istruisce l'utilizzatore sull'uso del programma

Dettagli

MODELLISTICA DI IMPIANTI E SISTEMI 2

MODELLISTICA DI IMPIANTI E SISTEMI 2 MODELLISTICA DI IMPIANTI E SISTEMI 2 Indice 1 Dalla traccia al modello 2 1.1 BAS................................................ 4 I Traccia Si consideri il problema della gestione efficiente dei servizi

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

Studio Legale. Guida operativa

Studio Legale. Guida operativa Studio Legale Guida operativa Cliens Studio Legale Web Cliens Studio Legale Web è un nuovo strumento che consente all avvocato di consultare i dati presenti negli archivi Cliens del proprio studio, attraverso

Dettagli

Il descrittore di processo (PCB)

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

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

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

ARCHIVI E DATABASE (prof. Ivaldi Giuliano) ARCHIVI E DATABASE (prof. Ivaldi Giuliano) Archivio: è un insieme di registrazioni (o records) ciascuna delle quali è costituita da un insieme prefissato di informazioni elementari dette attributi (o campi).

Dettagli

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

Dettagli

Software per Helpdesk

Software per Helpdesk Software per Helpdesk Padova - maggio 2010 Antonio Dalvit - www.antoniodalvit.com Cosa è un helpdesk? Un help desk è un servizio che fornisce informazioni e assistenza ad utenti che hanno problemi nella

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

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

CREAZIONE ARCHIVI 2014

CREAZIONE ARCHIVI 2014 CREAZIONE ARCHIVI 2014 Prima di procedere con la creazione dell anno 2014, per chi gestisce il magazzino, è necessario : con un solo terminale aperto, dal menù AZIENDE ANAGRAFICA AZIENDA F4 (DATI AZIENDALI)

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

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

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

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

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

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

Esempi di algoritmi. Lezione III

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

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

Gestione Turni. Introduzione

Gestione Turni. Introduzione Gestione Turni Introduzione La gestione dei turni di lavoro si rende necessaria quando, per garantire la continuità del servizio di una determinata struttura, è necessario che tutto il personale afferente

Dettagli

Il memory manager. Gestione della memoria centrale

Il memory manager. Gestione della memoria centrale Il memory manager Gestione della memoria centrale La memoria La memoria RAM è un vettore molto grande di WORD cioè celle elementari a 16bit, 32bit, 64bit (2Byte, 4Byte, 8Byte) o altre misure a seconda

Dettagli

Sistema di gestione Certificato MANUALE PER L'UTENTE

Sistema di gestione Certificato MANUALE PER L'UTENTE Sistema di gestione Certificato MANUALE PER L'UTENTE Pagina 1 di 16 Indice 1 Introduzione...3 2 Genera certificato...4 3 Sospendi certificato...10 4 Riattiva certificato...12 5 Revoca certificato...14

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 4 - parte II La memoria 1 La memoriaparametri di caratterizzazione Un dato dispositivo di memoria è caratterizzato da : velocità di accesso,

Dettagli

ARCHITETTURA DI RETE FOLEGNANI ANDREA

ARCHITETTURA DI RETE FOLEGNANI ANDREA ARCHITETTURA DI RETE FOLEGNANI ANDREA INTRODUZIONE È denominata Architettura di rete un insieme di livelli e protocolli. Le reti sono organizzate gerarchicamente in livelli, ciascuno dei quali interagisce

Dettagli

Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC.

Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC. Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC. Avviso di mancata consegna L avviso, emesso dal sistema, per indicare l anomalia

Dettagli

Sistemi Operativi SCHEDULING DELLA CPU

Sistemi Operativi SCHEDULING DELLA CPU Sistemi Operativi SCHEDULING DELLA CPU Scheduling della CPU Concetti di Base Criteri di Scheduling Algoritmi di Scheduling FCFS, SJF, Round-Robin, A code multiple Scheduling in Multi-Processori Scheduling

Dettagli

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1 GESTIONE DELLA MEMORIA SECONDARIA 11.1 Memoria Secondaria Struttura del disco Scheduling del disco Gestione del disco Gestione dello spazio di swap Struttura RAID Affidabilità Implementazione della memoria

Dettagli

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco GESTIONE DELLA MEMORIA SECONDARIA 11.1 Memoria Secondaria Struttura del disco Scheduling del disco Gestione del disco Gestione dello spazio di swap Struttura RAID Affidabilità Implementazione della memoria

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Basi di dati 9 febbraio 2010 Compito A

Basi di dati 9 febbraio 2010 Compito A Basi di dati 9 febbraio 2010 Compito A Domanda 0 (5%) Leggere e rispettare le seguenti regole: Scrivere nome, cognome, matricola (se nota), corso di studio e lettera del compito (ad esempio, A) sui fogli

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

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

Dettagli

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico MANUALE MOODLE STUDENTI Accesso al Materiale Didattico 1 INDICE 1. INTRODUZIONE ALLA PIATTAFORMA MOODLE... 3 1.1. Corso Moodle... 4 2. ACCESSO ALLA PIATTAFORMA... 7 2.1. Accesso diretto alla piattaforma...

Dettagli