A exclusão
mutua, a sua principal função é proibir que mais de um processo faça a leitura
de algum dado ou informação ao mesmo tempo, através da exclusão mutua será
garantindo que apenas o processo que esta fazendo a leitura de qualquer dado
tenha a prioridade absoluta para fazer, sem que outro processo tente fazer o
mesmo.
Desativando
Interrupções
Uma das
maneiras de realizar a exclusão mutua é desativando as interrupções nos
processos. Sendo assim, cada processo desativara suas interrupções antes que
entre na seção critica, e quando sair da sua seção critica ira ativar novamente
as interrupções. Essa é uma alternativa para que o processo possa fazer todas
as suas leituras de dados e informações, sem que algum outro processo
interfira. Um problema nessa abordagem pode ocorrer caso o processo que
desativou suas interrupções não as ative novamente, assim o sistema ficaria
preso a esse processo.
Variáveis
de bloqueio
Outra forma
de realizar a exclusão mutua é através de uma variável de bloqueio, para isso
utilizando a variável que fara o bloqueio e uma variável para liberar o
bloqueio, a variável for 0 esta livre para fazer o bloqueio, se for 1 o
processo precisa aguardar para entrar na seção critica. Um problema que seria
recorrente nesse método, seria o risco de dois processos diferentes entrarem um
sua seção critica juntos, com ambos definindo a variável de bloqueio 1 ao mesmo
tempo.
Alternância
Estrita
O método da
alternância estrita faz através de um programa utilizando uma variável inteira que
realiza uma checagem para ver qual processo devera entrar eu sua seção critica,
em um determinado espaço de tempo será feito uma consulta a essa variável
inteira para descobrir se o outro processo que esta em sua seção critica já saiu.
Esse teste realizado na variável será feito até que o processo saia da seção critica,
o que é chamado de espera ativa. Um dos problemas nessa utilização se um dos
processos for muito mais lento que o outro, porque quando esse processo mais
rápido estiver em sua seção critica, ele ira sair mais rápido que o outro
processo saiu e assim ambos os processos ficaram em na sua seção não critica.
Isso causaria um problema em que um processo que esta fora de sua seção critica
estaria bloqueando um processo que esta tentando entrar em sua seção critica.
A
solução de Peterson
A solução de
Peterson combinava o uso de algumas operações diferentes uma que será chamada
antes do processo entrar em sua região critica, essa operação fara com que o
processo aguarde ate que esteja apto para entrar em sua seção critica. Quando
esse processo terminar de fazer a sua sessão critica ele chamara por outra
operação que indicara que ele já terminou seu ciclo na seção critica e deseja
sair, abrindo espaço para que outro processo possa entrar em sua seção critica.
Se dois processos solicitarem quase ao mesmo tempo a operação de entrada para a
seção critica, sempre o que chamou primeiro essa operação é que entrara na
seção critica.
Instrução
TSL
O método da
instrução TSL que funciona com auxilio do hardware da maquina, sendo usado em
maquinas com vários processadores, para utilizar esse método é necessário que
seja criada uma variável de bloqueio, para que apenas um dos processadores
tenha acesso a memoria bloqueando a entrada de outros processadores. Quando um
processo for entrar em sua seção critica ele precisara configurar a variável de
bloqueio como 1. Para evitar que mais de um processo entre simultaneamente em
sua seção é criada uma instrução que armazena o valor antigo da variável de
bloqueio, então quando um processo for tentar entrar em sua seção critica ele
primeiro ira checar esse valor antigo, caso seja diferente de zero significa
que algum outro processo já definiu um bloqueio, então ele ira consultar esse
valor antigo depois de um tempo para ver se ele já se alterou para 0. Quando
for 0, ele então ira alterar a variável de bloqueio, ira chamar a operação de
entrada da seção critica e depois que terminar chamara a operação de saída da
seção critica e em seguida mudara o valor do bloqueio possibilitando assim que
outro processo possa entrar na seção critica.
Tanembaum. Livro de Sistemas Operacionais