Seção crítica e - exclusão mútua
* Definição do problema
● n (n > 1) processos podendo acessar concorrentemente um trecho de código comum
● trecho de código: denominado seção crítica
● instruções do código acessam variáveis compartilhadas
Exclusão mútua
● Somente um (1) processo na seção crítica
● se nenhum processo está na seção crítica, um outro poderá entrar
● Há soluções simples que exigem alternância entre os processos no uso da SC
Soluções para exclusão mútua
● A exclusão mútua pode ser implementada através de mecanismos de HW e SW
Soluções de HW (Desabilitarão de interrupções)
Faz com que o processo desabilite todas as interrupções antes de entrar em sua região crítica, reabilitando-as após deixar a região crítica.
BEGIN
.
Desabilita_Interrupcoes;
Regiao_Critica;
Habilita_Interrupcoes;
.
END.
Vantagem
● Solução mais simples
● Útil para executar (sem interrupções) chamadas do kernel do SO
Desvantagem
● A multiprogramação pode ficar seriamente comprometida, já que a concorrência entre processos tem como base o uso de interrupções.
● Ineficiente para sistemas multiprocessados. Pois um processador irá perder tempo sinalizando desabilitação e habilitação para os demais.
● O clock do computador usa interrupções, devendo esta solução ser usada com muito cuidado.
Soluções de HW (Instruções test-and-set - TAS) ● Instrução de máquina que permite testar e modificar o conteúdo de uma variável de forma atômica (sem interrupção)
● A atomicidade da transação garante que dois processos nãoirão manipular um recurso compartilhado ao mesmo tempo
● A instrução TAS possui o seguinte formato: Test-and-Set (X,Y);
● Ao executar TAS o valor lógico de Y é copiado para X, sendo atribuído a Y o valor verdadeiro
● Para coordenar o acesso concorrente a um recurso, a instrução TAS utiliza uma variável global (ex: bloqueio) inicializada com o valor falso
● Quando bloqueio = falso, qualquer