Please enable JavaScript.
Coggle requires JavaScript to display documents.
Mecanismos de cooredenação - Coggle Diagram
Mecanismos de cooredenação
Semáforos
mecanismo de coordenação eficiente e flexível para o controle da exclusão mútua entre n tarefas
Pode ser visto como uma variável composta S, que contém uma fila de atrefas S.queue e um contador S.counter
O conteúdo interno do semáforo não é
diretamente acessível ao programador; para manipulá-lo devem ser usadas as seguintes
operações atômicas:
down(S): decrementa o contador interno s.counter e o testa: se ele for negativo, a tarefa
solicitante é adicionada à fila do semáforo (S.queue) e suspensa. Caso contrário,
a chamada down(S) retorna e a tarefa pode continuar sua execução.
up(S): incrementa o contador interno S.counter e o testa: um contador negativo ou nulo
indica que há tarefa(S) suspensa(S) naquele semáforo. A primeira tarefa da fila S.queue é então devolvida à fila de tarefas prontas, para retomar sua execução
assim que possível.
Alguns problemas resolvidos das soluções do cap. 10
Eficiência: as tarefas que aguardam o semáforos são suspensas e não consomem processador; quando o semáforo é liberado, somente a primeira tarefa da fila de semáforos é acordada.
Justiça: a fila de tarefas do semáforo obedece uma política FIFO, garantindo que as tarefas receberão o semáforo na ordem das solicitações
Independência: somente as tarefas que solicitaram o semáforo através da operação down(S) são consideradas na decisão de quem irá obtê-lo.
Mutexes
São semáforos simplificados, na qual o contador só assume dois valores possíveis: livre(1) ou ocupado(0)
Variáveis de condição
Está associada a uma condição
lógica que pode ser aguardada por uma tarefa
A condição desejada é associada a uma variável de condição x. Uma tarefa aguarda esa condição atráves do operador
wait(x)
, ficando suspensa. A tarefa será acordada quando outra tarefa perceber que a condição se tornou verdadeira e informar isso com o operador
signal(x)
ou
notify(x)
a variável de condição deve ser usada em conjunto com um mutex, para garantir a exclusão mútua sobre o estado da condição representada por x.
Monitores
é uma estrutura de sincronização
que requisita e libera a seção crítica associada a um recurso de forma transparente, sem que o programador tenha de se preocupar com isso
Elementos
um recurso compartilhado, visto como um conjunto de variáveis internas ao monitor.
um conjunto de procedimentos e funções que permitem o acesso a essas variáveis
um mutex ou semáforo para controle de exclusão mútua; cada procedimento de acesso ao recurso deve obter o mutex antes de iniciar e liberá-lo ao concluir
um invariante sobre o estado interno do recurso