Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir...

Post on 17-Apr-2015

104 views 1 download

Transcript of Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir...

Exclusão Mútua

A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso, todos os demais processos deverão esperar pelo término da utilização do recurso.

Exclusão Mútua

A exclusão mútua deve afetar apenas os processos concorrentes somente quando um deles estiver fazendo acesso ao recurso compartilhado. A parte do programa onde é feito o acesso compartilhado é denominada REGIÃO CRÍTICA(RC).

Exclusão Mútua

Os protocolos de entrada e saída garantem a exclusão mútua da região crítica de um programa.BEGIN

.

Entra_Regiao_Critica; (* Protocolo de Entrada *)

Regiao_Critica;

Sai_Regiao_Critica; (* Protocolo de saída *)

.

END.

Exclusão Mútua

Diversas soluções foram desenvolvidas com esse propósito; porém, duas situações indesejadas também devem ser evitadas.

Espera indefinida e o processo fora da sua região crítica impede que outros entrem nas suas próprias regiões críticas.

Exclusão Mútua

Soluções de Hardware

Podem ser implementadas através de mecanismos de hardware, desabilitação interrupções e test-and-set.

Exclusão Mútua

Desabilitação de Interrupções

Antes de entrar em sua região crítica o processo desabilita todas as suas interrupções e as reabitam após deixar a sua região crítica.

Exclusão Mútua

Desabilitação de InterrupçõesBegin

.

.

Desabilita_interrupções;

Região_Critica;

Habilita_interrupções;..

End.

Exclusão Mútua

Desabilitação de Interrupções

Limitação

A multiprogramação pode ficar comprometida, pois, a concorrência entre processo tem como base o uso de interrupção

Exclusão Mútua

Desabilitação de Interrupções

Para arquitetura de múltiplos processadores a solução torna-se ineficiente, devido ao tempo de propagação quando um processador sinaliza aos demais que as interrupções devem ser habilitadas ou desabilitadas.

Exclusão Mútua

Instruções Test-and-set

Muitos processadores possuem uma instrução de máquina que permite ler uma variável, armazenar seu conteúdo em uma outra área e atribuir um valor à mesma variável.

Exclusão Mútua

Instruções Test-and-set

Característica – é executada sem interrupção

Quando executada o valor lógico da variável Y é copiado para X, sendo atribuído à variável Y o valor lógico verdadeiro

Exclusão Mútua

Instruções Test-and-set

Quando a variável lógica Bloqueio for falsa, qualquer processo poderá alterar seu valor para verdadeiro através da instrução Test-and-set e acessar o recurso de forma exclusiva. Ao término do acesso retorna o valor da variável para falso, liberando o recurso.

Exclusão Mútua

Instruções Test-and-set

Desvantagem

Starvation (quando dois processos diferentes tentam acessar o mesmo recurso, mas não existem recursos suficientes para os dois, um precisa abrir mão para o outro)

Exclusão Mútua

Solução de Software

Primeiro Algoritmo – Looping infinito

• Repeat/until

• Variável de bloqueio para liberar o recurso (variável global)

Exclusão Mútua

Primeiro Algoritmo

A sequência de comandos, dentro do loop, é formada por um protocolo de entrada, uma região crítica e um protocolo de saída. A região crítica é representada por uma rotina, onde o acesso ao recurso realmente acontece

Exclusão Mútua

Primeiro Algoritmo

Limitações

Quando um processo A permanece muito tempo em uma rotina, é possível que um processo B queira executar sua região crítica e não consiga, mesmo eu o processo A não esteja utilizando o recurso.

Exclusão Mútua

Primeiro Algoritmo

Limitações

No caso da ocorrência de algum problema com um dos processos, de forma que a variável de bloqueio não seja alterada, o outro processo permanecerá indefinida-mente bloqueado.

Exclusão Mútua

Segundo Algoritmo

Como o primeiro algoritmo utiliza a mesma variável global entre ambos os processos, o segundo introduz uma variável para cada processo (CA e CB) que indica se o processo está ou não em sua região crítica.

Exclusão Mútua

Segundo Algoritmo

Limitação

Caso um processo tenha um problema dentro da sua região crítica ou antes de alterar a variável, o outro processo ficará indefinidamente bloqueado.

Exclusão Mútua

Terceiro Algoritmo

Soluciona o problema do segundo colocando a instrução de atribuição das variáveis antes do LOOP de teste, garantindo a Exclusão Mútua. Porém introduz um novo problema.

Ambos os processos não poderão entrar em suas regiões críticas como se o recurso já estivesse alocado.

Exclusão Mútua

Quarto Algoritmo

Altera o estado da variável antes de entrar na sua região crítica, com a possibilidade de ser revertida.

Exclusão Mútua

Quarto Algoritmo

Limitação

O bloqueio simultâneo dos processos

Exclusão Mútua

Algoritmo de Dekker

Primeira solução de software, sem a ocorrência de novos problemas. Baseado no primeiro e no quarto algoritmo, com uma lógica muito complexa.

Mas Peterson propôs outra solução mais simples.

Exclusão Mútua

Algoritmo de Peterson

• Solução para N processos

• Similar ao terceiro algoritmo (variáveis CA e CB)

• Introduz uma variável Vez (para conseguir resolver os conflitos gerados pela concorrência

Exclusão Mútua

Algoritmo de Peterson

• While como protocolo de entrada na região Crítica.

•Variável Vez permitirá a continuidade da execução de um dos processos.

Exclusão Mútua

Algoritmo para exclusão Mútua entre N processos

Todas as soluções possuíam uma deficiência conhecida como espera ocupada (busy wait) que consome tempo do processador desnecessariamente.

Exclusão Mútua

Algoritmo para exclusão Mútua entre N processos

A solução do problema foi introduzir o mecanismo de sincronização que permitia que um processo, quando não pudesse entrar em sua RC, fosse colocado no estado espera. Conhecidos como semáforos e monitores.

Exclusão Mútua

Sincronização Condicional

É uma situação onde o acesso ao recurso compartilhado exige a sincronização de processos vinculada a uma condição de acesso.

Exclusão Mútua

Sincronização Condicional

Um recurso pode não se encontrar pronto para uso devido a uma condição específica. Neste caso o processo que deseja acessá-lo deverá permanecer bloqueado até que o recurso fique disponível.

Exclusão Mútua

Sincronização Condicional

Limitação

Espera ocupada que é solucionada com os mecanismos de sincronização semáforos e monitores.

Exclusão MútuaSemáforos

Atualmente, a maioria das linguagens de programação disponibiliza rotinas para o uso de semáforos.

Semáforos são variáveis inteiras, não-negativas, manipulados por duas instruções:

Down – decrementa (P)

Up – incrementa (V)

Exclusão Mútua

Semáforos

Semáforos são classificados como binários ou contadores:

• Binários (mutexes) podem assumir valores 0 e 1;

• Contadores podem assumir valor inteiro positivo, além do 0.

Exclusão Mútua

Exclusão Mútua utilizando semáforos

A implementação ocorre através de um semáforo binário associado ao recurso compartilhado. Não ocorre a espera ocupada

As instruções DOWN e UP funcionam como protocolos de entrada e saída.

Exclusão Mútua

Sincronização condicional utilizando semáforos

Os semáforos podem ser utilizados nos casos onde a sincronização condicional é exigida.

Exemplo: sincronização quando o processo solicita uma operação de E/S.

Exclusão Mútua

Sincronização condicional utilizando semáforos

O pedido faz com que o processo execute um DOWN no semáforo até que a operação seja completada. Ao término, a rotina de tratamento da interrupção executa um UP no semáforo, liberando o processo do estado espera.

Exclusão Mútua

Problema dos Filósofos

Há uma mesa com cinco pratos e cinco garfos, onde os filósofos podem sentar, comer e pensar. Toda vez que um filósofo pára de pensar e deseja comer, é necessário que ele utilize dois garfos, posicionados à sua direita e à sua esquerda

Exclusão Mútua

Solução

• Permitir que apenas quatro filósofos sentem à mesa simultaneamente;

• Permitir que um filósofo pegue um garfo apenas se o outro estiver disponível;

• Permitir que um filósofo impar pegue primeiro o seu garfo da esquerda e depois o da direita, enquanto o par pegue o garfo da direita e, em seguida, o da esquerda;

Exclusão Mútua

Exclusão Mútua

Problema do Barbeiro

Na barbearia há uma cadeira de barbeiro e apenas cinco cadeiras para clientes esperarem. Quando um cliente chega, caso o barbeiro esteja trabalhando, ele senta se houver cadeira vazia ou vai embora se todas estiverem ocupadas. No caso de o barbeiro não ter nenhum cliente para atender, ele senta na cadeira e dorme até que um novo cliente apareça.

Exclusão Mútua

Solução

Semáforo contador Clientes

Semáforo binários Barbeiro e Mutex

O processo cliente, garante a exclusão mútua da variável Espera (permitindo verificar se todas as cadeiras já estão ocupadas)

Exclusão Mútua

Monitores

São mecanismos de sincronização de alto nível e estruturados em função de serem implementados pelo compilador.

Exclusão Mútua

Monitores

O monitor é formado por procedimentos e variáveis encapsulados dentro de um módulo.

Somente um processo pode estar executando um dos procedimentos do monitor em um determinado instante.

Exclusão Mútua

Estrutura do Monitor

Exclusão Mútua

Exclusão Mútua Utilizando Monitores

Não é realizada diretamente pelo programador, como no caso do uso de semáforos.

As regiões críticas devem ser definidas como procedimentos no monitor, e o compilador se encarregará de garantir a exclusão mútua entre esses procedimentos.

Exclusão Mútua

Exclusão Mútua Utilizando Monitores

A comunicação do processo com o monitor é feita unicamente através de chamadas a seus procedimentos e dos parâmetros passados.

Exclusão Mútua

Sincronização Condicional Utilizando Monitores

Utilizam variáveis especiais de condição

WAIT – coloca o processo em espera, até que algum outro processo sinalize com a instrução SIGNAL

SIGNAL - libera apenas um único processo da fila de espera.

Exclusão Mútua

Troca de mensagens

• Possui um subsistema de mensagem (canal de comunicação) buffer ou link de uma rede;

• SEND (Receptor,mensagem)

• Reciver (Transmissor, mensagem)

• Execuções sincronizadas

Exclusão Mútua

Troca de mensagens

• Comunicação indireta através MAILBOX ou PORT(buffer);

• Vários processos podem estar associados a MAILBOX;

• Forma assíncrona de comunicação (receptor e transmissor não permanece aguardando o envio e recebimento de mensagens).

Exclusão Mútua

Deadlock

Ocorre quando o processo aguarda por um recurso que nunca estará disponível ou um evento que não ocorrerá.

Exclusão Mútua

Deadlock

Condições para que ocorra um Deadlock:

• Exclusão mútua onde cada recurso pode estar alocado a um único processo

• Espera por recursos onde um processo pode estar esperando por outro recurso

Exclusão Mútua

Deadlock

Condições para que ocorra um Deadlock:

• Não-preempção onde um recurso não pode ser liberado só porque outros processos desejam o mesmo recurso;

• Espera circular onde um processo pode ter que esperar por um recurso alocado a outro processo e vice-versa.

Exclusão MútuaEspera circular

Exclusão Mútua

Prevenção de Deadlock

A prevenção da ocorrência das quatro condições é bastante limitadas, por isso não é utilizada na prática.

Exclusão Mútua

Prevenção de Deadlock

A solução mais conhecida é o algoritmo do banqueiro que exige que os processos informem o número máximo de cada tipo de recurso necessários para a sua execução.

Este algoritmo também possui limitações: número fixo de processos ativos.

Exclusão Mútua

Correção do Deadlock

Eliminar os processos envolvidos no deadlock e liberar os seus recursos envolvidos.

Caso o recurso seja uma atualização de um arquivo ou impressão, o sistema deve garantir que esses recursos sejam liberados sem problemas. A escolha é feita aleatoriamente.