Upload
internet
View
107
Download
1
Embed Size (px)
Citation preview
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.