Please enable JavaScript.
Coggle requires JavaScript to display documents.
Capítulo 11 Mecanismos de coordenação - Coggle Diagram
Capítulo 11
Mecanismos de coordenação
11.1 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 tarefas
s:queue
, inicialmente vazia, e um contador inteiro
s:counter
Operações atômicas para manipular os semáforos:
down(s):
decrementa o contador
s:counter
e o testa: se ele for negativo, a tarefa solicitante é adicionada à fila
s:queue
e suspensa. Caso contrário, a chamada down(s) retorna e a tarefa pode continuar sua execução.
As operações de acesso aos semáforos são geralmente implementadas pelo núcleo do SO e oferecidas como chamadas de sistema.
up(s):
incrementa o contador
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. Deve-se observar que esta chamada não é bloqueante.
init:
inicializa o
semáforo e define o valor inicial do contador (a fila inicia vazia).
Eles oferecem soluções adequadas para os problemas citados no 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 é 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.
11.2 Mutexes
Versão simplificada de semáforos, onde o contador só assume dois valores: livre (1) ou ocupado (0).
11.4 Monitores
Estrutura de sincronização que requisita e libera seções críticas de forma transparente (não depende do programador). Consiste de alguns elementos:
Um conjunto de procedimentos e funções para acessar essas variáveis
Um mutex ou semáforo para controle de exclusão mútua; cada procedimento deve obter o mutex antes de iniciar e liberá-lo ao concluir.
Um recurso compartilhado, visto como um conjunto de variáveis internas ao monitor.
Um invariante sobre o estado interno do recurso.
No geral, pode ser visto como um objeto que encapsula o recurso compartilhado, com métodos para acessá-lo.