Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

25
Sistemas Operacionais 1 Sincronismo e Comunicação entre Processos

Transcript of Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

Page 1: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

Sistemas Operacionais 1

Sincronismo e Comunicação entre

Processos

Page 2: Sistemas Operacionais1 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.

Page 3: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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.

Page 4: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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.

Page 5: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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.

Page 6: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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.

Page 7: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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.

Page 8: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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.

Page 9: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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

Page 10: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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

Page 11: Sistemas Operacionais1 Sincronismo 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.

Page 12: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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

Page 13: Sistemas Operacionais1 Sincronismo e Comunicação entre 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 fica aguardando a sua vez em uma fila de entrada.

• Encarrega-se de garantir a Exclusão Mútua entre os procedimentos definidos.

Page 14: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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

Page 15: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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.

Page 16: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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

Page 17: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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

Page 18: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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

Page 19: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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.

Page 20: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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

Page 21: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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.

Page 22: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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.

Page 23: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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.

Page 24: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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.

Page 25: Sistemas Operacionais1 Sincronismo e Comunicação entre Processos.

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