Sincronismo e
Comunicação entre
Processos
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.
• Para evitar 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
si
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.
• São os Mecanismos de Sincronização que garantem a
comunicação entre processos concorrentes e o acesso aos
recursos.
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. Exclusividade de acesso.
• 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 impeça que outros
processos entrem em suas próprias Regiões Críticas.
Isto ocorre ao recurso estar livre, não está sendo utilizado, mas
ainda alocado a um processo, impedindo que os demais o
utilizem.
Sistemas Operacionais
7
Soluções para a Exclusão Mútua
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 a
Sincronização de processos vinculada a uma condição de
acesso.
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 / Consumidor 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
por 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
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
12
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 fica aguardando a sua vez em uma fila de entrada.
•
Encarrega-se de garantir
procedimentos definidos.
a
Exclusão
Sistemas Operacionais
Mútua
entre
os
13
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
14
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
comunicação tenham suas execuções sincronizadas.
Sistemas Operacionais
na
15
Troca de Mensagens
Transmissão de
mensagem
Processo
transmissor
Processo
receptor
Canal de comunicação
SEND
RECEIVE
Sistemas Operacionais
16
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
17
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.
Vários processos podem estar associados a MAILBOX.
Também possuem suas execuções sincronizadas em função do fluxo de
mensagens.
Processo A
Processo B
Mailbox
ou Port
Sistemas Operacionais
18
Deadlock
É a situação onde o processo aguarda por um recurso que
nunca estará disponível ou um evento que não ocorrerá. É
conseqüência 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
19
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
20
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 é solucionado 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
21
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
22
Prevenção de Deadlocks
3- Negando a condição “Não Preempção”:
Negar a condição de “não-preempção” é uma estratégia ainda pior do que a anterior.
Para vários recursos, não é interessante que um processo perca
seus dados, porque foi interrompido 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
23
Detecção e Recuperação
•
Alguns sistemas verificam se existe a possibilidade de
surgir um Deadlock. (periodicamente ou certos eventos)
•
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.
•
Problema acima surge devido a um Deadlock que impede 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, desbloqueiando os recursos. Essa é a estratégia
mais utilizada para tratamento de Deadlock.
Sistemas Operacionais
24
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
25
Download

Sincronismo e Comunicação entre Processos - Turma 3B