1.3 - Monitor

O monitor foi uma solução proposta para uso de semáforos ou mutex ou alguma outra técnica de exclusão mútua de forma indireta pelas threads/processos que necessitam acessar um recurso compartilhado. Ou seja, um monitor pode fazer uso, por exemplo, de semáforo ou mutex para implementar as suas regras.

Isso foi proposto em função dos inúmeros detalhes necessários para se implementar (principalmente aqueles ligados à ordem de escrita das instruções) o semáforo ou o mutex de forma direta nas rotinas que acessam o recurso compartilhado. Essa implementação não é trivial, como será percebido nos códigos de exemplo.

Com o uso de monitores, as rotinas não precisam mais conhecer os detalhes envolvidos no uso de semáforo ou mutex. Contudo, na construção do monitor em si, esses detalhes devem ser considerados, sempre!

No caso dessa disciplina, o monitor será construído usando-se um semáforo para um exemplo específico (buffer com cinco posições compartilhadas da memória) e um mutex para um outro exemplo (buffer com uma única posição compartilhada de memória). Os códigos serão apresentados na próxima etapa do nosso estudo.

Um monitor é uma coleção de rotinas, variáveis e estruturas de dados, tudo isso agrupado em um tipo especial de módulo ou pacote. Os processos/threads podem chamar as rotinas em um monitor quando quiserem, mas não podem ter acesso direto às estruturas internas do monitor. O acesso é feito por meio de sua interface pública.
Copyright © 2016 AIEC.