Please enable JavaScript.
Coggle requires JavaScript to display documents.
Mecanismos de coordenação - Coggle Diagram
Mecanismos de coordenação
Semáforos
Mecanismo de coordenação ótimo para o controle da exclusão mútua, definimos como uma variável composta contendo uma fila de tarefas
Operações atômicas
para utilização do semáforo
Down(s) Decrementa :
Contador interno testa, se for negativo a tarefa é adicionada da a fila e é suspensa, se não for negativo Down(s) é chamado e continua a execução.
Up(s) Incrementa :
Contador interno testa, negativo ou nulo indica que a tarefa está suspensa, caso contrario a tarefa é devolvida a fila de prontas.
Operação
init
para iniciar a fila
As operações para acesso aos semáforos são implementadas pelo kernel do SO e são oferecidas como chamadas do sistemas, elas devem ser
atômicas
assim protegem sua integridade evitando futuras disputas de variáveis internas.
Os semáforos resolvem problemas como :
Justiça
: Obedece uma politica FIFO, que garante que a tarefas receberão o semáforo na ordem que foram solicitadas
Independência
Apenas tarefas que solicitaram o semáforo com Down(s) é considerado na decisão de quem irá obtê-lo
Eficiência
: tarefas que estão aguardando os semáforos são suspensas, essas não consomem processador somente a primeira tarefa da fila é liberada quando o semáforo está liberado
Mutexes
Semáforos simplificados são chamados de Mutex
Contador apenas assume dois valores possíveis que seriam livre ou ocupado (semáforos binários)
Variáveis de condição
Condição lógica que pode ser guardada por uma tarefa, então essa tarefa é colocada pra descansar até que outra tarefa avise que aquela condição se tornou verdadeira.
Aguarda condição através do que chamamos de operador
wait(c)
, a espera pra ser "acordada" se dá pelos operadores
signal(c)
ou
notify(c)
".
Não tem uma condição concreta, porem permite efetuar a sincronização sobre uma condição
Atualmente as implementações das variáveis de condição adotam o comportamento chamado de "Semântica mesa", que no caso a operação signal (c) apenas acorda uma tarefa que acorda a condição)
Monitores
Em sistemas mais complexos, é necessário uma programação e sincronização para semáforos e mutex mais robustos
Um monitor pode ser definido como uma estrutura de sincronização que libera secções criticas de forma transparente (programador não se preocupa com isso), características:
Um mutex ou semáforo ( controle exclusão mutex)
, cada procedimento de acesso tem que obter o mutex antes de iniciar ou concluir
Invariante (estado interno do recurso)
Procedimentos que permitem acesso a variáveis
Recurso Compartilhado
é visto geralmente como objeto que encapsula um recurso compartilhado (métodos para o ter acesso)