Diferença entre semáforo e monitor no sistema operacional

Autor: Laura McKinney
Data De Criação: 1 Abril 2021
Data De Atualização: 5 Poderia 2024
Anonim
Diferença entre semáforo e monitor no sistema operacional - Tecnologia
Diferença entre semáforo e monitor no sistema operacional - Tecnologia

Contente


O Semáforo e o Monitor permitem que os processos acessem os recursos compartilhados em exclusão mútua. Ambos são a ferramenta de sincronização de processos. Em vez disso, eles são muito diferentes um do outro. Onde Semáforo é uma variável inteira que pode ser operada apenas pelas operações wait () e signal (), além da inicialização. Por outro lado, o Monitor type é um tipo de dados abstrato cuja construção permite que um processo seja ativado ao mesmo tempo. Neste artigo, discutiremos as diferenças entre o semáforo e o monitor com a ajuda do gráfico de comparação mostrado abaixo.

  1. Gráfico de comparação
  2. Definição
  3. Principais diferenças
  4. Conclusão

Gráfico de comparação

Base para ComparaçãoSemáforo Monitor
Basic Semáforos é uma variável inteira S.Monitor é um tipo de dados abstrato.
AçaoO valor do semáforo S indica o número de recursos compartilhados disponíveis no sistemaO tipo Monitor contém variáveis ​​compartilhadas e o conjunto de procedimentos que operam na variável compartilhada.
AcessoQuando qualquer processo acessa os recursos compartilhados, realiza a operação wait () em S e, quando libera os recursos compartilhados, realiza a operação do sinal () em S.Quando qualquer processo deseja acessar as variáveis ​​compartilhadas no monitor, ele precisa acessá-lo através dos procedimentos.
Variável de condiçãoO semáforo não possui variáveis ​​de condição.O monitor possui variáveis ​​de condição.


Definição de Semáforo

Sendo uma ferramenta de sincronização de processos, Semáforo é um variável inteira S. Essa variável inteira S é inicializada para o número de recursos presente no sistema. O valor do semáforo S pode ser modificado apenas por duas funções esperar() e sinal() além da inicialização.

A operação wait () e signal () modifica o valor do semáforo S de forma indivisível. O que significa que quando um processo está modificando o valor do semáforo, nenhum outro processo pode modificar simultaneamente o valor do semáforo. Além disso, o sistema operacional distingue o semáforo em duas categorias Contando semáforos e semáforo binário.

Em Contando o semáforo, o valor do semáforo S é inicializado para o número de recursos presentes no sistema. Sempre que um processo deseja acessar os recursos compartilhados, ele executa esperar() operação no semáforo que decrementos o valor do semáforo por um. Quando libera o recurso compartilhado, ele executa uma sinal() operação no semáforo que incrementos o valor do semáforo por um. Quando a contagem de semáforos vai para 0, Isso significa todos os recursos estão ocupados pelos processos. Se um processo precisar usar um recurso quando a contagem de semáforos for 0, ele executará wait () e obterá bloqueado até que um processo utilizando os recursos compartilhados o libere e o valor do semáforo se torne maior que 0.


Em Semáforo binário, o valor do semáforo varia entre 0 e 1. É semelhante ao bloqueio de mutex, mas o mutex é um mecanismo de bloqueio, enquanto o semáforo é um mecanismo de sinalização. No semáforo binário, se um processo deseja acessar o recurso, ele executa a operação wait () no semáforo e decrementos o valor do semáforo de 1 a 0. Quando o processo libera o recurso, ele executa uma sinal() no semáforo e incrementa seu valor para 1. Se o valor do semáforo for 0 e um processo desejar acessar o recurso, ele executa a operação wait () e se bloqueia até que o processo atual que utiliza os recursos libere o recurso.

Definição de Monitor

Para superar os erros de tempo que ocorrem ao usar o semáforo para sincronização de processos, os pesquisadores introduziram um construto de sincronização de alto nível, ou seja, o tipo de monitor. Um tipo de monitor é um tipo de dados abstrato usado para sincronização de processos.

Sendo um tipo de monitor de tipo de dados abstrato, contém o variáveis ​​de dados compartilhados que devem ser compartilhados por todos os processos e alguns programas definidos por programadores operações que permitem que os processos sejam executados em exclusão mútua no monitor. Um processo pode não acessar diretamente a variável de dados compartilhados no monitor; o processo precisa acessá-lo através de procedimentos definido no monitor que permite que apenas um processo acesse as variáveis ​​compartilhadas em um monitor por vez.

A sintaxe do monitor é a seguinte:

monitor_name_do_ monitor {// declarações de variável compartilhada procedure P1 (...) {} procedure P2 (...) {} procedure Pn (...) {} código de inicialização (...) {}}

Um monitor é uma construção, como apenas um processo está ativo por vez no monitor. Se outro processo tentar acessar a variável compartilhada no monitor, ele será bloqueado e será alinhado na fila para obter acesso aos dados compartilhados ao acessar o processo anteriormente.

Variáveis ​​condicionais foram introduzidos para mecanismo de sincronização adicional. A variável condicional permite que um processo aguarde dentro do monitor e permite que um processo em espera seja retomado imediatamente quando o outro processo libera os recursos.

o variável condicional pode invocar apenas duas operações esperar() e sinal() Onde se um processo P invoca uma espera () operação fica suspenso no monitor até outro processo Q chama o sinal () operação, isto é, uma operação de sinal () chamada por um processo retoma o processo suspenso.

  1. A diferença básica entre o semáforo e o monitor é que o semáforo é um variável inteira S que indicam o número de recursos disponíveis no sistema, enquanto que o monitor é o tipo de dados abstratos que permite que apenas um processo seja executado na seção crítica de cada vez.
  2. O valor do semáforo pode ser modificado por esperar() e sinal() somente operação. Por outro lado, um monitor possui as variáveis ​​compartilhadas e os procedimentos apenas pelos quais as variáveis ​​compartilhadas podem ser acessadas pelos processos.
  3. No semáforo, quando um processo deseja acessar recursos compartilhados, o processo executa esperar() operação e bloqueie os recursos e quando libera os recursos que executa sinal() Operação. Nos monitores, quando um processo precisa acessar recursos compartilhados, é necessário acessá-los através de procedimentos no monitor.
  4. O tipo de monitor possui variáveis ​​de condição qual semáforo não possui.

Conclusão:

Os monitores são fáceis de implementar que o semáforo e há pouca chance de erro no monitor em comparação com os semáforos.