Diferença entre semáforo e monitor no sistema operacional
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.
- Gráfico de comparação
- Definição
- Principais diferenças
- Conclusão
Gráfico de comparação
Base para Comparação | Semáforo | Monitor |
---|---|---|
Basic | Semáforos é uma variável inteira S. | Monitor é um tipo de dados abstrato. |
Açao | O valor do semáforo S indica o número de recursos compartilhados disponíveis no sistema | O tipo Monitor contém variáveis compartilhadas e o conjunto de procedimentos que operam na variável compartilhada. |
Acesso | Quando 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ção | O 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.
- 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.
- 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.
- 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.
- 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.