segunda-feira, 29 de abril de 2013

Soluções Existentes

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

Nenhum comentário:

Postar um comentário