Monitores
Tema: Monitores
Aluno: Luiz Henrique Leite Paes da Costa Instituto Federal de Sergipe - Campus Itabaiana Professor: Eduardo Henrique
Monitores
Tanto os semáforos como os contadores de eventos podem resolver uma série de problemas, mas seu uso deve ser cuidadoso para que não provoque situações desastrosas. A inversão de dois semáforos (por exemplo, mutex e vazio na solução do problema produtor-consumidor usando semáforos) pode provocar um bloqueio perpétuo, ou seja, faz com que uma dada tarefa pare de ser executada, degradando o sistema e podendo causar até mesmo sua instabilidade. Para que tais problemas pudessem ser resolvidos mais facilmente Hoare
(1974) e Hansem (1975) propuseram o conceito de monitor: uma coleção de procedimentos, variáveis e estruturas agrupados num módulo ou pacote especial. Segundo Guimarães:
Monitor é um conjunto de procedimentos que operam sobre variáveis comuns a vários processos. Um procedimento do monitor corresponde a uma região crítica. Um monitor corresponde, portanto, a um conjunto de regiões críticas operando sobre as mesmas variáveis comuns.
Processos podem acessar os procedimentos e funções de um monitor embora não possam utilizar diretamente a estrutura interna de seus dados, num arranjo muito semelhante a utilização da interface de um objeto, sem acesso aos seus campos privativos.
Exemplo de Código
No exemplo abaixo, temos a resolução do problema do Produtor-Consumidor através de monitores.
monitor ProdutorConsumidor condition full, empty; int count = 0; int item; void enter(void); { if (count == N) { wait(full); } enter_item(item); count++; if (count == 1) { signal(empty); } }