Análise comparativa - semáforos e monitores
Semáforos
Um semáforo é uma variável de sincronização que pode ter valores inteiros não-negativos. Foram inventados por Edsger Dijkstra em 1965.
Um semáforo é uma variável inteira, não-negativa, que só pode ser manipulada por duas instruções: DOWN e UP.
• UP (Originalmente chamada de P (do holandês "proberen", testar)): uma operação atômica que espera o semáforo ficar positivo, e a seguir decrementa-o de 1.
• DOWN (Originalmente chamada de V (do holandês "verhogen", incrementar)): uma operação atômica que incrementa o semáforo de 1.
Semáforos provêm uma abstração simples e elegante que é útil para implementar exclusão mútua e outras tarefas …exibir mais conteúdo…
O conceito de monitores foi proposto por Brinch Hansen em 1972, e desenvolvido por C.A.R. Hoare em 1974, como um mecanismo de sincronização estruturado.
Os monitores são considerados mecanismos de alto nível e estruturados em função de serem implementados pelo compilador. Assim, o desenvolvimento de programas concorrentes fica mais fácil e as chances de erro são menores. Atualmente, a maioria das linguagens de programação disponibiliza rotinas para o uso de monitores. Propriedades fundamentais de monitores: • apenas um processo pode executar o código do monitor a cada instante de tempo • exclusão mútua implícita é associada a cada monitor, através de um monitor lock • o lock deve ser adquirido para um processo "entrar" no monitor • ao sai do monitor, o lock é liberado Monitores também podem ser utilizados na implementação da sincronização condicional. Através de variáveis especiais de condição, é