Estratto del documento

Esercizi/Domande d'esame di sistemi operativi

Esercizio 1

Si consideri il seguente problema di sincronizzazione tra processi formato da un processo produttore P e da due processi consumatore C1 e C2, che condividono un’area di memoria (buffer) con 10 locazioni.

Il processo produttore P genera ciclicamente un numero intero arbitrario e lo aggiunge al buffer di memoria condivisa. Il processo P si pone in attesa quando tenta di accedere al buffer pieno.

Il processo C1 (C2) consuma ciclicamente un elemento del buffer. Il processo C1 (C2) può accedere al buffer solo se il buffer stesso non è vuoto, e può consumare un elemento del buffer solo se il numero attuale di elementi nel buffer stesso è dispari (pari).

Si proponga una soluzione con semafori al problema di sincronizzazione proposto. Si richiede la descrizione dei dati condivisi, lo pseudocodice delle procedure Produttore() e Consumatore1() e una discussione sulle eventuali differenze tra Consumatore2() e Consumatore1(). Si assuma l’esistenza delle procedure Genera(), Aggiungi_Al_Buffer(int x), Estrai_Dal_Buffer(), Consuma(int x), e Consuma_Buffer() con gli ovvi significati.

Commentare la soluzione proposta e analizzare il suo comportamento rispetto ai problemi di deadlock e starvation.

Esercizio 2

Si consideri il seguente problema di sincronizzazione tra processi denominato problema multi-produttore/consumatore con memoria condivisa a buffer limitato:

Sia dato un sistema di processi concorrenti composto da n>10 processi produttori P1, P2, …, Pn, e da un processo consumatore C, che condividono un’area di memoria con 10 locazioni.

Il generico processo produttore Pi genera un numero intero arbitrario e lo deposita nel buffer di memoria condivisa. Se Pi tenta di accedere al buffer quando quest’ultimo è pieno, allora Pi stampa tutto il contenuto del buffer e si pone in attesa.

Il processo C consuma ciclicamente un elemento del buffer al quale può accedere solo quando il buffer stesso non è vuoto.

Si proponga una soluzione con semafori al problema del multi-produttore/consumatore. Si richiede una descrizione accurata dei dati e lo pseudocodice delle procedure Produci(), usata dal generico produttore per generare e depositare un numero nel buffer (non si fanno ipotesi sulla frequenza di chiamata di Produci da parte di un produttore) e Consumatore(). Si assuma l’esistenza delle procedure Genera(), Consuma(int x), Aggiungi_Al_Buffer(int x), Estrai_Dal_Buffer() e Stampa_Buffer() con gli ovvi significati. Commentare adeguatamente la soluzione proposta.

Esercizio 3

Si consideri il seguente problema di sincronizzazione tra processi con memoria condivisa a buffer limitato:

Sia dato un sistema di processi concorrenti composto da 2 processi produttori P1 e P2, e da un processo consumatore C, che condividono un’area di memoria con 10 locazioni.

Il processo P1 (P2) genera un numero intero arbitrario e lo deposita nel buffer di memoria condivisa. Il processo P1 (P2) può accedere al buffer solo quando quest’ultimo non è pieno.

Il processo C consuma ciclicamente una coppia di elementi del buffer al quale può accedere solo quando il buffer stesso contiene almeno 2 elementi.

Si proponga una soluzione con semafori al problema descritto. Si richiede una descrizione accurata dei dati e lo pseudocodice delle funzioni Produci(), usata dal generico produttore per generare e depositare un numero nel buffer (non si fanno ipotesi sulla frequenza di chiamata di Produci() da parte di un produttore).

Anteprima
Vedrai una selezione di 4 pagine su 11
Sistemi operativi - Esercizi ed Esercitazione Pag. 1 Sistemi operativi - Esercizi ed Esercitazione Pag. 2
Anteprima di 4 pagg. su 11.
Scarica il documento per vederlo tutto.
Sistemi operativi - Esercizi ed Esercitazione Pag. 6
Anteprima di 4 pagg. su 11.
Scarica il documento per vederlo tutto.
Sistemi operativi - Esercizi ed Esercitazione Pag. 11
1 su 11
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher gino.ventura97 di informazioni apprese con la frequenza delle lezioni di Sistemi operativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di L'Aquila o del prof Frigioni Daniele.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community