Problemas da exclusao mutua
O PROBLEMA DA
EXCLUSÃO MÚTUA
Martín Fierro: El moreno:
Y el consejo del prudente no hace falta en la partida; siempre ha de ser comedida la palabra de un cantor: y aura quiero que me digas de dónde nace el amor.
A pregunta tan escura trataré de responder, aunque es mucho pretender de un pobre negro de estancia; mas conocer su inorancia es principio del saber.
Ama el pájaro en los aires que cruza por donde quiera, y si al fin de su carrera se asienta en alguna rama, con su alegre canto llama a su amante compañera.
Este capítulo discute o problema de garantir exclusividade de execução para um processo, em um sistema de processos concorrentes. Os protocolos que implementam exclusão mútua entre processos são algoritmos clássicos e interessantes por si só. Nos algoritmos aqui apresentados não são usados recursos especiais de programação. Na verdade, eles podem ser expressos em qualquer linguagem de programação.
4.1 Caracterização do problema
Quando processos concorrentes compartilham dados (variáveis, estruturas de dados, arquivos), é necessário controlar o acesso a esses dados, para obter determinância de execução. Operações de atualização não podem ser feitas simultaneamente por diferentes processos. Tampouco operações 42 Sistemas Operacionais e Programação Concorrente – S.S.Toscani, R.S. de Oliveira e A.S.Carissimi de leitura podem ocorrer simultaneamente com atualizações, pois os dados lidos podem estar temporariamente inconsistentes.
O seguinte exemplo ilustra os problemas que podem ocorrer quando não se garante exclusão mútua no acesso aos dados compartilhados. Supor que um vetor global R de 5 elementos seja utilizado para controlar a alocação de 5 unidades de um recurso (o recurso poderia ser, por exemplo, 5 blocos de memória de igual tamanho). A variável global T é usada como contador de unidades disponíveis e cada elemento do vetor identifica uma unidade. O valor
R[T] (isto é, o elemento de