Sincronismo e
Comunicação entre
Processos
Profa. Priscila Facciolli
Sistemas Operacionais
1
Conteúdo
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Introdução;
Aplicações Concorrentes;
Problemas no Compartilhamento de Recursos;
Exclusão Mútua;
Soluções de Exclusão Mútua;
Sincronização Condicional;
Semáforos;
Monitores;
Troca de Mensagens;
Deadlock;
Prevenção de Deadlocks;
Detecção e Recuperação;
Gerenciamento Manual de Deadlocks;
Exercícios.
Sistemas Operacionais
2
Introdução
• Com os sistemas multiprogramáveis, é possível que partes
diferentes do código do programa possam ser executadas
concorrentemente. É denominada de Aplicação Concorrente
e baseia-se na execução cooperativa de múltiplos
processos, que trabalham em uma mesma tarefa na busca
de um resultado comum.
• Estes processos compartilham recursos e isso pode
ocasionar situações indesejáveis, podendo comprometer a
execução das aplicações.
• Evitando isso, os Processos Concorrentes possuem suas
execuções sincronizadas, com o objetivo de garantir o
processamento correto dos programas.
Sistemas Operacionais
3
Aplicações Concorrentes
• Em uma aplicação concorrente é necessário que processos
comuniquem-se
entre
sim
através
de
variáveis
compartilhadas na Memória Principal ou troca de
mensagens.
• Nessa situação os processos devem ter sua execução
sincronizadas pelo SO.
• Os mecanismos que garantes a comunicação entre
processos concorrentes e o acesso aos recursos são
chamados de Mecanismos de Sincronização.
Sistemas Operacionais
4
Problemas no Compartilhamento
de Recursos
• Problemas podem ocorrer devido a falha de Sincronização entre
processos concorrentes.
• Exemplo: Situação onde dois processos ( A e B) executam um
comando de atribuição.
O processo A soma 1 na variável X e o processo B diminui 1 da
mesma variável que está compartilhada. Inicialmente X=2.
• Seria razoável que o resultado de X continuasse 2, porém isso
nem sempre será verdade.
• Qualquer situação onde dois ou mais processos compartilham um
mesmo recurso, deve existir um mecanismo de controle para
evitar problema similar ao exemplo acima e esse controle é
conhecido como RACE CONDITIONS, ou Condições de
Corrida.
Sistemas Operacionais
5
Exclusão Mútua
• Impede que dois ou mais processos acessem um mesmo recurso
simultaneamente.
• Enquanto um processo estiver acessando um recurso, os demais
que queiram acessá-lo deverão esperar pelo término de sua
utilização.
• A parte do código do programa onde é feito o recurso de
compartilhamento é a REGIÃO CRÍTICA. Se for possível evitar que
dois processos entrem em Região Crítica ao mesmo tempo, os
problemas de compartilhamento estarão evitados.
• Tanto para executar uma instruções na Região Crítica quanto para
sair dela, executa-se um protocolo que garante a Exclusão Mútua
da Região Crítica do programa.
Sistemas Operacionais
6
Exclusão Mútua
O acesso sincronizado, além da Exclusão Mútua evita duas situações
indesejáveis:
• STARVATION ou Espera Indefinida: É a situação em que um
processo nunca consegue executar sua Região Crítica, acessando
o recurso compartilhado. Quando o processo é liberado, é o SO
que seleciona qual processo fará parte do recurso.
O critério de Escolha é baseado pela prioridade do processo. A
solução é a implementação de uma fila FIFO.
•
Um processo fora de sua Região Crítica impede que outros
processos entrem em suas próprias Regiões Críticas.
Isto ocorre ao recurso estar livre mas ainda alocado a um
processo, impedindo que os demais o utilizem.
Sistemas Operacionais
7
Soluções para a Exclusão Mútua
No Hardware:
Desabilitação de Interrupções:
Faz com que o processo desabilite todas as interrupções antes de
entrar na Região Crítica e as reabilite após deixar a Região Crítica.
Instruções de Test – and – Set:
Permite ler uma variável, armazenar seu conteúdo em outra área e
atribuir um novo valor a mesma variável, através de uma única
instrução de máquina. Com isso torna-se impossível que dois
processos manipulem uma variável compartilhada ao mesmo tempo.
Sistemas Operacionais
8
Sincronização Condicional
Situação onde o acesso ao recurso compartilhado exige
Sincronização de processos vinculada a uma condição de acesso.
a
Ex.: Comunicação entre dois processos através de operações de
leitura e gravação em buffer, onde os processos que geram
informações (processos produtores) são utilizados por outros
processos (consumidores).
Enquanto um processo grava os dados em um buffer, o outro lê os
dados concorrentemente. Esse problema de sincronização é
conhecido como Produtor / Consumidos ou Buffer Limitado
Sistemas Operacionais
9
Sincronização Condicional
Sincronização e comunicação entre processos
Sincronização
gr
Processo
gravador
av
aç
ão
i tu
le
ra
Processo
leitor
dado
Buffer
Sistemas Operacionais
10
Semáforo
É uma variável inteira, não negativa, que só pode ser manipulada pro
duas instruções DOWN E UP, chamadas também de P (Proberen,
teste em holandês) e V (Verhogen, incremento em holandês).
São instruções que não podem ser interrompidas e são classificadas
em:
Binários: Chamados de Mutexes (Mutual Exclusion Semaphores), só
podem assumir valores de O e 1.
Semáforos Contadores: Podem assumir qualquer valor inteiro
positivo além do O.
Sistemas Operacionais
11
Semáforo
É uma variável inteira, não negativa, que só pode ser manipulada pro
duas instruções DOWN E UP, chamadas também de P (Proberen,
teste em holandês) e V (Verhogen, incremento em holandês).
São instruções que não podem ser interrompidas e são classificadas
em:
Binários: Chamados de Mutexes (Mutual Exclusion Semaphores), só
podem assumir valores de O e 1.
Semáforos Contadores: Podem assumir qualquer valor inteiro
positivo além do O.
Sistemas Operacionais
12
Semáforo
Semáforo binário na exclusão mútua
Processo deseja entrar
na região crítica
W
0)
DO
N
=
(S
0)
O
D
N
W
>
(S
UP (S) - processo sai
da região crítica
Libera processo
da fila de espera
Processo acessa
a região crítica
Fila de espera
de processos
Sistemas Operacionais
13
Monitores
•
São
implementados
pelo
compilador,
possibilitando
o
desenvolvimento de programas concorrentes com chances de
menos erros.
•
É formado por procedimentos e variáveis encapsulados dentro de
um módulo, implementando de forma automática a Exclusão
Mútua entre os procedimentos declarados.
•
Toda vez que algum processo faz uma chamada a um
procedimento, o Monitor verifica se já existe outro processo
executando algum procedimento no monitor. Caso exista, o
processo ficará aguardando a sua vez em uma fila de entrada.
•
Encarrega-se de garantir
procedimentos definidos.
a
Exclusão
Sistemas Operacionais
Mútua
entre
os
14
Monitores
Estrutura do monitor
Declaração de
variáveis globais
Procedimentos
Monitor
Proc. 1
Proc. 2
Fila de entrada
Proc. n
Inicialização
de variáveis
Sistemas Operacionais
15
Troca de Mensagens
•
Esse tipo de mecanismo de comunicação e sincronização de
processos, o SO possui um subsistema de mensagens onde não
há necessidade do uso de variáveis compartilhadas. É necessário
que exista um buffer ou um link de uma rede de computadores
como canal de comunicação.
•
Os processos cooperativos que podem utilizar o buffer através de
duas rotinas: SEND e RECEIVE.
•
A rotina SEND envia uma mensagem para o processo receptor,
enquanto a RECEIVE recebe a mensagem enviada por um
processo transmissor.
•
Com isso exige que os processos envolvidos na comunicação
tenham suas execuções sincronizadas.
Sistemas Operacionais
16
Troca de Mensagens
Transmissão de
mensagem
Processo
transmissor
Processo
receptor
Canal de comunicação
SEND
RECEIVE
Sistemas Operacionais
17
Troca de Mensagens
A Troca de Mensagens pode ser implementada de duas maneiras:
COMUNICAÇÃO DIRETA: Exige que tanto ao enviar ou receber
uma mensagem, enderece o nome do processo Receptor ou
Transmissor. Só permite a troca de mensagens entre dois
processos.
Processo A
Processo B
Sistemas Operacionais
18
Troca de Mensagens
COMUNICAÇÃO INDIRETA:
•
Utiliza uma área compartilhada onde as mensagens podem ser colocadas pelo
processo transmissor e retiradas pelo receptor. Esse buffer é conhecido como
MAILBOX e suas características, como identificação e capacidade de
armazenamento de mensagens, são definidas no momento de criação.
•
Nela, vários processos podem estar associados a MAILBOX.
•
Também possuem suas execuções sincronizadas em função do fluxo de
mensagens. Um processo não pode tratar uma mensagem até que ela tenha sido
enviada ou receber a mesma mensagem mais de uma vez.
Processo A
Processo B
Mailbox
ou Port
Sistemas Operacionais
19
Deadlock
É a situação onde o processo aguarda pro um recurso que nunca
estará disponível ou um evento que não ocorrerá. É consequencia
do compartilhamento de recursos entre processos onde a Exclusão
Mútua é exigida.
Para que ocorra a situação de Deadlock, quatro condições são
necessárias simultaneamente:
1- Exclusão Mútua: Cada recurso só pode estar alocado a um
único processo em um determinado instante;
2- Espera por Recursos: Um processo, além dos recursos já
alocados, ainda aguarda por outros recursos;
3- Não-Preempção: Um recurso não pode ser liberado de um
processo só porque outros processos desejam o mesmo recurso;
4- Espera Circular: Um processo pode ter que esperar por um
recurso alocado a outro processo e vice-versa.
Sistemas Operacionais
20
Deadlock
Espera circular
Processo A
Processo A
solicita o
Recurso 2
Recurso 1
alocado ao
Processo A
Recurso 2
Recurso 1
Processo B
Recurso 2
alocado ao
Processo B
Processo B
solicita o
Recurso 1
Sistemas Operacionais
21
Prevenção de Deadlocks
Para que um Deadlock ocorra, todas as quatro condições devem
ocorrer simultaneamente. Se garantirmos que uma delas não
ocorra, prevenirmos a ocorrência de Deadlocks em um
determinado sistema.
Examinaremos as quatro condições separadamente:
1- Negando a condição “Exclusão Mútua”:
• Essa condição não deve ser negada, pois dois processos
acessando um recurso simultaneamente poderia causar caos no
sistema.
Ex.: Dois processos acessando uma impressora ao mesmo tempo.
Utilizando o sistema de spool é solucionada esse problema pois um
único processo de spool acessa a impressora diretamente e não
acessa outro recurso, com isso deadlocks não podem ocorrer,
porém nem todos os recursos utilizam o spool.
Sistemas Operacionais
22
Prevenção de Deadlocks
2- Negando a condição “Esperar por Recurso”:
• Requer que todos os recursos que um processo precise devem ser
requisitados de uma só vez.
•
O sistema deve liberar os recursos segundo uma política de tudo ou
nada.
•
Se todos os recursos que o processo solicitou estão disponíveis, então o
sistema pode alocá-los todos ao mesmo processo de uma vez.
•
Caso contrário, ele deverá esperar até que todos estejam disponíveis,
porém nessa espera, não deve deter nenhum recurso. Assim a condição
é negada e Deadlocks não podem ocorrer.
•
•
Desvantagens:
Desperdício de Recursos: O recurso que será executado por último fica
alocado ao processo antes de ser efetivamente utilizado.
Possibilidade de um processo ficar indefinidamente esperando, se outros
processos estiverem usando os recursos que ele deseja com freqüência.
Sistemas Operacionais
23
Prevenção de Deadlocks
3- Negando a condição “Não Preempção”:
Para vários recursos, como uma impressora, não é interessante que um
processo perca seus dados durante seu uso.
4- Negando a condição “Espera Circular”:
1ª Maneira: Estabelecer regra que um processo só pode alocar um único
recurso em um dado momento. Se ele precisa de um 2º recurso, deve
liberar o primeiro;
2ª Maneira: Todos os recursos devem ser numerados em ordem
crescente, assim processos podem requisitar recursos sempre.
Sistemas Operacionais
24
Detecção e Recuperação
•
Alguns sistemas verificam se existe a possibilidade de surgir um
Deadlock quer periodicamente ou caso certos eventos ocorram.
•
Caso esse algoritmo de detecção for executado muitas vezes,
tornará o sistema lento, mas se não for executado vezes
suficientes, os processos em Deadlock e os recursos do sistema
ficam entrelaçados até que o sistema seja recuperado.
•
Surge devido a um Deadlock que impedem de executar algum
evento que dispare o algoritmo de execução.
•
Na estratégia do algoritmo de detecção, ele primeiramente
detecta se ocorre a situação de Deadlock e depois recupera, que
resulta no desbloqueio dos recursos. Essa é a estratégia mais
utilizada para tratamento de Deadlock.
Sistemas Operacionais
25
Gerenciamento Manual de
Deadlock
Muitos os sistemas atuais deixam para o usuário a função
de detectar um Deadlock, que através da utilização
rotineira, o usuário percebe que o tempo para que o
processo seja executado já foi ultrapassado, ficando a
critério do usuário achar que os processos entraram em
Deadlock e com isso podem resolver a situação através
das ferramentas dos sistemas, como por exemplo sua
reinicialização.
Sistemas Operacionais
26
Exercícios
1) Defina o que é uma aplicação concorrente e dê um exemplo de sua
utilização?
2) O que é Exclusão Mútua e como é implementada?
3) Explique o que é sincronização condicional e dê um exemplo de sua
utilização.
4) Diferencie Semáforos e Monitores.
5) Quais são os tipos possíveis de Semáforos?
6) O que é Deadlock, qual a condição para obtê-lo e quais as soluções
possíveis?
7) O que é mecanismo de troca de mensagens e como pode ser
implementado?
8) O que é Região Crítica em um programa?
9) Liste uma solução para a Exclusão Mútua explicando-a.
10) " Independente do mecanismo de comunicação adotado, processos que
estão trocando mensagens devem ter suas execuções
sincronizadas".Esta afirmação está correta? Justifique
Sistemas Operacionais
27
Download

Exclusão Mútua - Sistema de Informação