exclusão mútua a solução mais simples para evitar os problemas de compartilhamento é impedir...

55
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.

Upload: internet

Post on 17-Apr-2015

107 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 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,

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.

Page 2: 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,

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).

Page 3: 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,

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.

Page 4: 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,

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.

Page 5: 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,

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.

Page 6: 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,

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.

Page 7: 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,

Exclusão Mútua

Desabilitação de InterrupçõesBegin

.

.

Desabilita_interrupções;

Região_Critica;

Habilita_interrupções;..

End.

Page 8: 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,

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

Page 9: 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,

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.

Page 10: 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,

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.

Page 11: 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,

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

Page 12: 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,

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.

Page 13: 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,

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)

Page 14: 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,

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)

Page 15: 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,

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

Page 16: 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,

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.

Page 17: 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,

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.

Page 18: 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,

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.

Page 19: 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,

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.

Page 20: 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,

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.

Page 21: 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,

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.

Page 22: 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,

Exclusão Mútua

Quarto Algoritmo

Limitação

O bloqueio simultâneo dos processos

Page 23: 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,

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.

Page 24: 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,

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

Page 25: 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,

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.

Page 26: 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,

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.

Page 27: 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,

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.

Page 28: 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,

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.

Page 29: 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,

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.

Page 30: 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,

Exclusão Mútua

Sincronização Condicional

Limitação

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

Page 31: 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,

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)

Page 32: 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,

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.

Page 33: 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,

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.

Page 34: 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,

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.

Page 35: 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,

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.

Page 36: 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,

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

Page 37: 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,

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;

Page 38: 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,

Exclusão Mútua

Page 39: 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,

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.

Page 40: 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,

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)

Page 41: 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,

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.

Page 42: 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,

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.

Page 43: 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,

Exclusão Mútua

Estrutura do Monitor

Page 44: 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,

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.

Page 45: 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,

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.

Page 46: 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,

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.

Page 47: 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,

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

Page 48: 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,

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).

Page 49: 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,

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á.

Page 50: 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,

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

Page 51: 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,

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.

Page 52: 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,

Exclusão MútuaEspera circular

Page 53: 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,

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.

Page 54: 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,

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.

Page 55: 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,

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.