sistemas operacionais1 sincronismo e comunicação entre processos profa. priscila facciolli

Post on 17-Apr-2015

106 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Sistemas Operacionais 1

Sincronismo e Comunicação entre

Processos

Profa. Priscila Facciolli

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.

• Evitando 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 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 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.

• 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 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 8

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 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 / Consumidos 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 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

É 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 13

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 14

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 a Exclusão Mútua entre os procedimentos definidos.

Sistemas Operacionais 15

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 16

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 17

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 18

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 19

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.

Pro cesso A Pro cesso B

M a ilb oxo u Po rt

Sistemas Operacionais 20

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 21

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 22

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 23

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 24

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 25

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 26

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 27

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

top related