Sistemas Operacionais 1 Sincronismo e Comunicação entre Processos
Sistemas Operacionais 1
Sincronismo e Comunicação entre
Processos
Sistemas Operacionais 2
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 3
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 4
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 5
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 6
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 7
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 8
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 9
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 10
Sincronização Condicional
Processog ravad o r
Processoleito r
d ado
Sin cron ização
leitura
g ra vaçã o
Bu ffer
Sincronização e comunicação entre processos
Sistemas Operacionais 11
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 12
Semáforo
Fila de esperad e processos
Processo acessaa reg iã o cr ítica
Processo d eseja en tra rn a reg ião cr ítica
DOW
N (S=
0)
DOW
N (S
>0)
U P (S) - p rocesso sa id a reg ião cr ítica
Libe ra processod a fi la de espe ra
Semáforo binário na exclusão mútua
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 fica aguardando a sua vez em uma fila de entrada.
• Encarrega-se de garantir a Exclusão Mútua entre os procedimentos definidos.
Sistemas Operacionais 14
Monitores
D ecla ração deva riáveis g lo ba is
Proced im entos
Fila de entra da
In icia lizaçãod e va r iáveis
Proc. 1
Proc. 2
Proc. n
Mo
nit
or
Estrutura do monitor
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
Pro cessotran sm isso r
Pro cessorecep to r
SEN D REC EIV E
C an a l d e co m u nicação
Transmissão de mensagem
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.
Pro cesso A Pro cesso 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.
• Vários processos podem estar associados a MAILBOX.• Também possuem suas execuções sincronizadas em função do fluxo de
mensagens. Pro cesso A Pro cesso B
M a ilb oxo u Po rt
Sistemas Operacionais 19
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 20
Deadlock
Recu rso 2 Recu rso 1
Processo A
Processo B
Processo Aso licita oRecu rso 2
Recu rso 1a loca do aoProcesso A
Recu rso 2a loca do aoProcesso B
Processo Bso licita oRecu rso 1
Espera circular
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 é 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 22
Prevenção de Deadlocks2- 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 Deadlocks3- 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 24
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 25
Exercícios1) 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