Differenza tra semaforo e monitor nel sistema operativo

Autore: Laura McKinney
Data Della Creazione: 1 Aprile 2021
Data Di Aggiornamento: 5 Maggio 2024
Anonim
Semafori (part 1)
Video: Semafori (part 1)

Contenuto


Semaphore e Monitor consentono entrambi ai processi di accedere alle risorse condivise in mutua esclusione. Entrambi sono lo strumento di sincronizzazione del processo. Invece, sono molto diversi l'uno dall'altro. Dove Semaforo è una variabile intera che può essere gestita solo dall'operazione wait () e signal () oltre all'inizializzazione. D'altra parte, il Tenere sotto controllo type è un tipo di dati astratto il cui costrutto consente a un processo di essere attivato contemporaneamente. In questo articolo, discuteremo le differenze tra semaforo e monitor con l'aiuto della tabella di confronto mostrata di seguito.

  1. Tabella di comparazione
  2. Definizione
  3. Differenze chiave
  4. Conclusione

Tabella di comparazione

Base per il confrontoSemaforo Tenere sotto controllo
Di base I semafori è una variabile intera S.Monitor è un tipo di dati astratto.
AzioneIl valore di Semaphore S indica il numero di risorse condivise disponibili nel sistemaIl tipo Monitor contiene variabili condivise e l'insieme di procedure che operano sulla variabile condivisa.
AccessoQuando un processo accede alle risorse condivise esegue un'operazione wait () su S e quando rilascia le risorse condivise esegue un'operazione signal () su S.Quando un processo vuole accedere alle variabili condivise nel monitor, deve accedervi attraverso le procedure.
Variabile di condizioneIl semaforo non ha variabili di condizione.Il monitor ha variabili di condizione.


Definizione di semaforo

Essendo uno strumento di sincronizzazione dei processi, Semaforo è un variabile intera S. Questa variabile intera S è inizializzata su numero di risorse presente nel sistema. Il valore del semaforo S può essere modificato solo da due funzioni aspettare() e segnale() a parte l'inizializzazione.

L'operazione wait () e signal () modifica indivisibilmente il valore del semaforo S. Ciò significa che quando un processo modifica il valore del semaforo, nessun altro processo può modificare contemporaneamente il valore del semaforo. Inoltre, il sistema operativo distingue il semaforo in due categorie Contando i semafori e il semaforo binario.

Nel Conteggio del semaforo, il valore del semaforo S è inizializzato al numero di risorse presenti nel sistema. Ogni volta che un processo vuole accedere alle risorse condivise, esegue aspettare() operazione sul semaforo che decrementi il valore del semaforo di uno. Quando rilascia la risorsa condivisa, esegue un segnale() operazione sul semaforo che incrementi il valore del semaforo di uno. Quando il conteggio dei semafori va a 0, significa tutte le risorse sono occupate dai processi. Se un processo deve utilizzare una risorsa quando il conteggio dei semafori è 0, esegue wait () e get bloccato fino a quando un processo che utilizza le risorse condivise lo rilascia e il valore del semaforo diventa maggiore di 0.


Nel Semaforo binario, il valore del semaforo è compreso tra 0 e 1. È simile al blocco mutex, ma il mutex è un meccanismo di blocco mentre il semaforo è un meccanismo di segnalazione. Nel semaforo binario, se un processo vuole accedere alla risorsa esegue un'operazione wait () sul semaforo e decrementi il valore del semaforo da 1 a 0. Quando il processo rilascia la risorsa, esegue un segnale() operazione sul semaforo e incrementa il suo valore su 1. Se il valore del semaforo è 0 e un processo desidera accedere alla risorsa, esegue un'operazione wait () e si blocca fino a quando il processo corrente che utilizza le risorse rilascia la risorsa.

Definizione di Monitor

Per superare gli errori di temporizzazione che si verificano durante l'utilizzo del semaforo per la sincronizzazione dei processi, i ricercatori hanno introdotto un costrutto di sincronizzazione di alto livello, ad esempio il tipo di monitor. Un tipo di monitor è un tipo di dati astratto utilizzato per la sincronizzazione dei processi.

Essendo un tipo di dati astratto, il tipo di monitor contiene variabili di dati condivisi che devono essere condivisi da tutti i processi e alcuni definiti dal programmatore operazioni che consentono ai processi di essere eseguiti in reciproca esclusione all'interno del monitor. Un processo può non accedere direttamente la variabile di dati condivisi nel monitor; il processo deve accedervi attraverso le procedure definito nel monitor che consente a un solo processo di accedere alle variabili condivise in un monitor alla volta.

La sintassi del monitor è la seguente:

monitor monitor_name {// procedura di dichiarazioni variabili condivise P1 (...) {} procedura P2 (...) {} procedura Pn (...) {} codice di inizializzazione (...) {}}

Un monitor è un costrutto come un solo processo alla volta è attivo all'interno del monitor. Se un altro processo tenta di accedere alla variabile condivisa nel monitor, viene bloccato e allineato nella coda per ottenere l'accesso ai dati condivisi quando il processo di accesso precedente lo rilascia.

Variabili condizionali sono stati introdotti per un meccanismo di sincronizzazione aggiuntivo. La variabile condizionale consente ad un processo di attendere all'interno del monitor e consente a un processo in attesa di riprendere immediatamente quando l'altro processo rilascia le risorse.

Il variabile condizionale può invocare solo due operazioni aspettare() e segnale(). Dove se un processo P invoca un'attesa () operazione viene sospeso nel monitor fino ad altri processi Q invoke signal () un'operazione cioè un'operazione signal () invocata da un processo riprende il processo sospeso.

  1. La differenza fondamentale tra semaforo e monitor è che semaforo è un variabile intera S che indicano il numero di risorse disponibili nel sistema mentre, il tenere sotto controllo è il tipo di dati astratto che consente di eseguire solo un processo alla volta nella sezione critica.
  2. Il valore del semaforo può essere modificato da aspettare() e segnale() solo operazione. D'altra parte, un monitor ha le variabili condivise e le procedure solo attraverso cui i processi possono accedere alle variabili condivise.
  3. In Semaphore quando un processo vuole accedere a risorse condivise il processo esegue aspettare() operazione e blocco delle risorse e quando rilascia le risorse che esegue segnale() operazione. Nei monitor, quando un processo deve accedere alle risorse condivise, deve accedervi tramite procedure nel monitor.
  4. Il tipo di monitor ha variabili di condizione quale semaforo non ha.

Conclusione:

I monitor sono facili da implementare rispetto al semaforo e ci sono poche possibilità di errore nel monitoraggio rispetto ai semafori.