Sistemas operacionais
Em um sistema multiprogramado:
• processos são concorrentes: vários processos são (virtualmente) executados ao mesmo tempo
• processos são assíncronos: executam independentemente
• processos compartilham recursos.
Exclusão mútua e seções críticas (Regiões Críticas)
A solução para evitar problemas de comunicação consiste em impedir que dois ou mais processos tenham acesso à variáveis de memória ao mesmo tempo. Quando um processo estiver acessando uma variável compartilhada, todos os outros que necessitarem dessa mesma variável devem esperar que o primeiro termine o acesso. É este o conceito de exclusão mútua, ou acesso mutuamente exclusivo.
O trecho de um programa onde são realizados acessos ás variáveis de memória compartilhadas é denominado seção crítica (ou região crítica).
Para assegurar a exclusão mútua, dois ou mais processos não podem executar simultaneamente seções críticas que acessem as mesmas variáveis compartilhadas.
Toda a vez que o processo for executar sua seção crítica, ele deve executar um protocolo de entrada na seção crítica. Do mesmo modo, ao sair, o processo deverá executar um protocolo de saída da seção crítica.
BEGIN
.
Entra_Seção_Crítica();
Seção_Crítica;
Sai_Seção_Crítica();
.
END
Estes mecanismos que permitem execução mutuamente exclusiva devem ser providos pelo Sistema Operacional.
Existem 4 condições necessárias para a solução do problema de uma região critica:
1. Dois ou mais processos não podem estar simultâneamente dentro de suas regiões criticas correspondentes; 2. Nenhuma consideração pode ser feita a respeito da velocidade relativa dos processos; 3. Nenhum processo que esteja rodando fora de sua região critica pode bloquear a execução do outro; 4. Nenhum processo pode ser obrigado a esperar indefinidamente para entrar em sua região critica;
Soluções de hardware para o problema da exclusão mútua
Desabilitação de interrupções
A inibição das