Estratto del documento

Argomenti più comuni esame di Sistemi Operativi (Ingegneria Informatica ed Elettronica)

  • Monitor
  • Gestione thread a livello utente ed a livello nucleo
  • Deadlock e condizione necessaria per un deadlock

Descrivere le principali caratteristiche di un Monitor

La realizzazione di programmi con l’utilizzo di semafori può portare facilmente a errori, tra cui uno stallo (deadlock), situazione in cui i processi sono definitivamente bloccati e non può essere eseguito alcun lavoro. Un rimedio a ciò è il Monitor, ossia un ADT (Abstract Data Type) che incapsula i dati, mettendo a disposizione un insieme di funzioni per operare su di essi.

Il Monitor comprende il bounded buffer ed una serie di operazioni definite dal programmatore, necessarie per il trattamento dello stesso e contraddistinte dalla mutua esclusione. I processi possono chiamare le procedure contenute in un monitor ma non possono accedere direttamente alle sue strutture dati interne tramite procedure dichiarate esternamente al Monitor.

Quindi, affinché due processi non entrino contemporaneamente nelle loro sezioni critiche, è sufficiente inserire le loro sezioni critiche tra le procedure del Monitor (ciò assicura che un solo processo alla volta sia attivo al suo interno, poiché il Monitor ha una sola porta d’entrata ed una di uscita).

Dato che nel Monitor la mutua esclusione è gestita dal compilatore (e non dal programmatore), c’è una minore probabilità di errore. Senza ulteriori meccanismi, il rigido vincolo di mutua esclusione del costrutto non permetterebbe sincronizzazioni particolari. Tuttavia, le variabili condizionali, di tipo condition (che possono essere definite tra le altre variabili locali) e le procedure wait e signal (le uniche a poter essere invocate su di esse) forniscono a un programmatore gli strumenti necessari per scrivere un proprio schema di sincronizzazione.

L'operazione wait(), applicata ad una variabile condizionale, permette di sospendere un processo che occupa il monitor, facendo in modo che il processo sparisca temporaneamente dal monitor e venga posto in una coda d'attesa per quella variabile condizionale, dando così via libera a un nuovo processo che desidera entrare nel monitor oppure ad un altro processo pronto, presso una variabile condizionale, a riprendere l'esecuzione.

L'operazione signal() risveglia un processo sospeso sulla variabile condizionale per cui è chiamata (questo processo riprende la propria esecuzione appena ha via libera). In ogni caso, quando non ci sono processi in attesa sulla variabile condizionale per cui è chiamata, il flusso continua senza interruzioni.

Anteprima
Vedrai una selezione di 1 pagina su 5
Sistemi Operativi: monitor, Gestione thread livello utente e nucleo, Deadlock Pag. 1
1 su 5
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 Dododoro48 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 Pavia o del prof Lombardi Luca.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community