A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado.

Apresentações semelhantes


Apresentação em tema: "ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado."— Transcrição da apresentação:

1 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 7 Sincronização e Comunicação entre Processos

2 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Sincronização e Comunicação o Numa aplicação concorrente, é natural que processos precisem comunicar entre si Implementação através de mecanismos como variáveis compartilhadas ou trocas de mensagens Processos precisam ter sua execução sincronizada através de mecanismos do SO o Exemplo com buffer de comunicação: Processo só poderá gravar os dados se buffer estiver liberado Processo só poderá ler os dados quando estes estiverem disponíveis no buffer 7/1

3 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Sincronização e Comunicação 7/2

4 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Sincronização e Comunicação o Mecanismos de sincronização: Garantem a comunicação entre processos concorrentes Garantem o acesso a recursos compartilhados Garantem a integridade e a confiabilidade na execução de aplicações concorrentes 7/3

5 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Concorrência em Programas o Cada linguagem tem sua notação para especificar as partes do programa que devem ser executadas concorrentemente Fork e Join (Conway, Dennis e Van Horn, 1963/66) o Fork – dispara o processo X o Join – interrompe execução até que processo X termine (sincroniza processos) ParBegin/CoBegin e ParEnd/CoEnd (Dijkstra, 1965) o Cada comando executado concorrentemente com um processo para cada 7/4

6 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Concorrência em Programas 7/5

7 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Compartilhamento de Recursos o Arquivos compartilhados Ex: atualizações em um mesmo saldo bancário Caso o processo não trave o arquivo com saldo, poderá haver inconsistência o Variáveis compartilhadas Um processo só poderá operar com a variável após processo anterior completar sua operação Análogo ao caso de arquivos compartilhados o Estes problemas são chamados de race conditions 7/6

8 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Exclusão Mútua o Solução mais simples o Impede que dois ou mais processos acessem simultaneamente um mesmo recurso Quando um processo estiver acessando o recurso, demais processos que desejam acessá- los devem ficar em espera Parte do código que faz acesso ao recurso é denominada região crítica o Uma vez garantida a execução mutuamente exclusiva das regiões críticas, resolve-se problemas de compartilhamento 7/7

9 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Exclusão Mútua o Mecanismos que implementam exclusão mútua se valem de protocolos de acesso à região crítica Sempre que um processo desejar executar instruções de uma região crítica, ele deverá executar um protocolo de entrada nesta região Sempre que o processo desejar sair da região crítica, ele deverá executar um protocolo de saída desta região o Protocolo de entrada indica que há processo executando instruções na região crítica o Protocolo de saída sinaliza a liberação da região crítica para outros processos 7/8

10 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Exclusão Mútua o Duas situações indesejadas devem ser evitadas: Starvation ou espera indefinida o Processo nunca consegue entrar na região crítica, ficando eternamente em espera o Pode ocorrer devido a critérios do SO para seleção do processo que vai entrar numa RC que tenha sido liberada Critérios baseados em prioridade ou em aleatoriedade Sistema FIFO, por exemplo, resolve o problema 7/9

11 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Exclusão Mútua o Outra situação indesejada que deve ser evitada: Processo fora da RC impede que outros processos entrem na RC o Recurso está livre, mas alocado a um determinado processo o Reduz grau de compartilhamento o Para implementar a exclusão mútua, são usadas soluções de hardware e de software 7/10

12 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Exclusão Mútua o Soluções de hardware: Desabilitar de interrupções o Processo desabilita todas as interrupções antes de entrar na RC, reabilitando-as após deixá-la o Não há mudança de contexto enquanto na RC o Solução simples mas com limitações: Multiprogramação fica comprometida Ineficiente com múltiplos processadores Interessante para o kernel do SO 7/11

13 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Exclusão Mútua o Soluções de hardware: Instrução Test-and-Set o Instrução de máquina que permite ler uma variável, armazená-la em outra área e atribuir novo valor à variável o Indivisível, executada sem interrupção o Garante que dois ou mais processos não manipulem uma variável compartilhada simultaneamente o Usa variável lógica global chamada Bloqueio 7/12

14 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Exclusão Mútua o Soluções de hardware: Instrução Test-and-Set o Test-and-Set (X,Y) X e Y booleanas Y é atribuído a X, e Y assume valor true Y é a variável Bloqueio o Se Bloqueio é false, qualquer processo pode fazer Test-and-Set e alterar o valor de Bloqueio para true, acessando a RC o Ao final, retorna-se Bloqueio para false 7/13

15 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Exclusão Mútua o Soluções de software: Diversos algoritmos para implementar exclusão mútua através de software Primeiras soluções abrangiam apenas dois processos e apresentavam problemas, posteriormente sanados o Algoritmo de Peterson, inicialmente aplicado a dois processos, evoluído para N processos Problema da solução por software: o Espera ocupada! (busy wait) o Resolvido c/ Semáforos e Monitores 7/14

16 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Exclusão Mútua o Soluções de software: Primeiro algoritmo o Usa variável global para sincronizar processos o Só funciona para dois processos o Processos são sempre alternados Um processo fica bloqueado se o outro não entrar na RC o Se um processo travar, o outro fica bloqueado aguardando entrar na RC 7/15

17 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Exclusão Mútua o Soluções de software: Segundo algoritmo o Funciona somente com dois processos o Usa variável de condição para cada processo, informando se processo está ou não na RC o Processos não necessitam ser alternados o Se um processo travar antes de alterar variável, o outro fica bloqueado aguardando entrar na RC o Não garante exclusão mútua! 7/16

18 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Exclusão Mútua o Soluções de software: Terceiro algoritmo o Funciona somente com dois processos o Atribuição da variável de condição é feita antes do loop de teste o Processos não necessitam ser alternados o Se um processo travar antes de alterar variável, o outro fica bloqueado o Garante exclusão mútua, mas ambos processos podem ficar bloqueados 7/16

19 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Exclusão Mútua o Soluções de software: Quarto algoritmo o Funciona somente com dois processos o Como o terceiro, mas introduz tempo aleatório para setar váriável de condição o Processos não necessitam ser alternados o Se um processo travar antes de alterar variável, o outro fica bloqueado o Garante exclusão mútua, mas ambos processos podem ficar bloqueados durante algum tempo 7/17

20 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Exclusão Mútua o Soluções de software: Algoritmo de Peterson o Solução para problemas anteriores, foi generalizado para N processos (Hofri, 1990) o Além das variáveis de condição, usa variável Vez para resolver conflitos Antes de acessar a RC, sinaliza este desejo mas cede a vez para outro processo, depois fica em loop aguardando sua vez Para N processos, também há o algoritmo do Padeiro (Lamport, 1974) 7/17

21 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Sincronização Condicional o Situação onde o acesso à RC exige sincronização vinculada a uma condição de acesso Recurso disponível se condição satisfeita, processos bloqueados enquanto isso Ex: comunicação via leitura/escrita em buffer o Conhecido como problema produtor/consumidor ou buffer limitado o Mantém-se o problema da espera ocupada o Obs: algoritmo apresentado não considera necessidade de exclusão mútua da variável Cont 7/18

22 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Semáforos o Proposto por Dijkstra em 1965 Mecanismo de sincronização para implementar exclusão mútua e sincronização condicional Principal mecanismo usado em aplicações concorrentes o Composto por uma variável inteira não negativa manipulada somente pelas instruções UP e DOWN UP incrementa de 1, DOWN decrementa de 1 UP e DOWN são instruções indivisíveis o Executar DOWN num semáforo com valor 0 coloca o processo na fila de espera 7/19

23 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Semáforos o Classificados como binários ou contadores Semáforos binários (MUTEX, de MUTual EXclusion) só podem assumir 0 ou 1 Semáforos contadores podem assumir qualquer valor inteiro não negativo o Exclusão mútua implementada por um MUTEX associado ao recurso compartilhado Vantagem: ausência de espera ocupada DOWN e UP funcionam como protocolos de entrada e saída na RC, respectivamente MUTEX em 1 indica recurso disponível 7/20

24 Arquitetura de Sistemas Operacionais – Machado/Maia 7 – Sincronização e Comunicação entre Processos Utilização do Semáforo Binário na Exclusão Mútua 7/21 MUTEX é iniciado com valor 1

25 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Semáforos o Sincronização condicional para operação de E/S Semáforo iniciado com 0 Pedido de operação via DOWN Completada a operação, rotina faz UP o Para o problema produtor/consumidor Usa 3 semáforos: o Um MUTEX, para fazer exclusão mútua, iniciado com 1 o Dois contadores, para sincronização condicional 7/22

26 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Semáforos o Problema produtor/consumidor: Mutex usado para a RC que permite gravação e leitura (logo, mutuamente exclusivas) Semáforos contadores representam posições livres (Vazio) para serem gravadas, e posições ocupadas (Cheio) para serem lidas o Vazio = 0, processo produtor em espera o Cheio = 0, processo consumidor em espera Vazio iniciado com tamanho do buffer Cheio iniciado com 0 7/23

27 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Semáforos o Semáforos contadores são úteis para problemas de sincronização condicional com processos concorrentes disputando pool de recursos Semáforo iniciado com número total de recursos do pool Processo que deseja alocar recurso faz DOWN Processo que libera recurso faz UP Semáforo em 0 indica que não há mais recursos disponíveis no pool e coloca processos que fizeram DOWN em espera 7/23

28 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Problema do Barbeiro o Na barbearia há um barbeiro, uma cadeira de barbeiro e 5 para espera o Se um cliente chega e o barbeiro está trabalhando, ele senta se houver cadeira vaga, senão vai embora o Se não há nenhum cliente para atender, barbeiro senta na cadeira e dorme até novo cliente chegar 7/24

29 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Problema dos Filósofos o Exemplo clássico de sincronização de processos o Também chamado de Dining Philosophers Mesa com 5 pratos e 5 garfos Filósofos podem sentar, comer e pensar Quando filósofo para de pensar e deseja comer, precisa usar dois garfos, à direita e à esquerda Se todos os filósofos estiverem segurando um garfo cada, nenhum deles come (Deadlock!) 7/25

30 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Problema dos Filósofos o Existem várias soluções, dentre elas: Permitir que apenas 4 filósofos sentem à mesa simultaneamente Permitir que um filósofo um garfo apenas quando o outro estiver disponível Permitir que um filósofo ímpar pegue primeiro o seu garfo da esquerda e depois o da direita, enquanto um filósofo par pegue primeiro o garfo da direita e depois o da esquerda 7/26

31 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Monitores o Mecanismos de sincronização de alto nível o Formado por procedimentos e variáveis encapsuladas dentro de um módulo o Diferenças entre monitores e semáforos: Semáforos são mecanismos não estruturados implementados pelo desenvolvedor Monitores são mecanismos estruturados implementados pelo compilador 7/27

32 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Monitores o Um monitor é definido especificando-se um nome, declarando-se variáveis locais, um conjunto de procedimentos e um código de inicialização o Um processo que deseje acessar determinada RC através de um monitor fará chamada a um dos procedimentos do monitor Caso outro processo já esteja executando qualquer um dos procedimentos, ele aguarda sua vez na fila 7/28

33 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Estrutura do Monitor 7/29

34 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Monitores o O uso de monitores facilita o desenvolvimento de aplicações concorrentes Exclusão mútua é implementada de forma automática o Somente um processo pode estar executando qualquer um dos procedimentos do monitor Variáveis globais do monitor são visíveis apenas aos procedimentos de sua estrutura, inacessíveis externamente Inicialização das variáveis por código no monitor, apenas na ativação do programa principal 7/30

35 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Exclusão Mútua com Monitores o Regiões críticas definidas como procedimentos no monitor, exclusão mútua entre eles por conta do compilador o Comunicação com o monitor unicamente através da chamada de seus procedimentos e dos parâmetros passados 7/31

36 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Sincronização Condicional com Monitores o Se vale de variáveis especiais de condição para associar a execução dos procedimentos do monitor o Variáveis de condição são manipuladas por intermédio das funções WAIT e SIGNAL Instrução WAIT faz com que o processo seja colocado na respectiva fila de espera e aguarde que a condição seja satisfeita Processo sai da fila de espera quando outro processo usar a instrução SIGNAL para sinalizar que a condição de espera foi satisfeita Se SIGNAL for executado e não houver processo em wait, nada ocorrerá 7/32

37 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Estrutura do Monitor com Variáveis de Condição 7/33

38 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Transmissão de Mensagem 7/34

39 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Comunicação Direta e Indireta 7/35

40 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Troca de Mensagens o Forma síncrona: Processo transmissor fica esperando que o processo receptor leia a mensagem Processo receptor fica aguardando que processo transmissor mande a mensagem o Forma assíncrona: Processos não ficam bloqueados à espera de mensagem o Uso de buffers 7/36

41 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Deadlock o Situação onde um processo aguarda indefinidamente por um recurso que nunca estará disponível ou aguarda por um evento que nunca irá ocorrer o Pode ser representado por ciclos num diagrama de grafo Nós simbolizam processos e recursos Aresta que sai do processo X e chega ao recurso Y indica que X solicita Y Aresta que sai do recurso Y e chega no processo X indica que Y está alocado a X 7/37

42 Arquitetura de Sistemas Operacionais – Machado/Maia 7 – Sincronização e Comunicação entre Processos Deadlock – Espera Circular 7/38

43 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Deadlock o Condições simultâneas para ocorrer deadlock: Exclusão mutua: Cada recurso só pode estar alocado a um único processo por vez Espera por recurso: Um processo, apesar dos recursos alocados, pode estar esperando por novo recurso Não-preempção: recurso não é liberado de um processo devido à solicitação do mesmo por outro processo Espera circular: processo pode ter que esperar por um recurso alocado a outro processo e vice- versa 7/39

44 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Deadlock o Prevenção de deadlock: Evitar que as condições para deadlock ocorram simultaneamente Evitar que pelo menos uma das condições para deadlock ocorra o Forçar o processo a ter apenas um recurso por vez (evita a espera circular) o Permitir preempção o Processos que possuem recurso não podem solicitar outro recurso o Compartilhamento de recursos (!) 7/40

45 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7 – Sincronização e Comunicação entre Processos Deadlock o Detecção de deadlock: Se dá através da verificação de espera circular o Correção de deadlocks: Eliminação de todos os processos envolvidos no deadlock Eliminação de apenas um dos processos envolvidos no deadlock Liberação de apenas alguns recursos alocados aos processos em deadlock 7/41


Carregar ppt "ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia Complementado."

Apresentações semelhantes


Anúncios Google