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

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

Arquitetura de Sistemas Operacionais

Apresentações semelhantes


Apresentação em tema: "Arquitetura de Sistemas Operacionais"— Transcrição da apresentação:

1 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 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO)

2 7 – Sincronização e Comunicação entre Processos
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 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 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/1

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

4 7 – Sincronização e Comunicação entre Processos
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 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/3

5 7 – Sincronização e Comunicação entre Processos
Concorrência em Programas 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) Fork <X> – dispara o processo X Join <X> – interrompe execução até que processo X termine (sincroniza processos) ParBegin/CoBegin e ParEnd/CoEnd (Dijkstra, 1965) Cada comando executado concorrentemente com um processo para cada ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/4

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

7 7 – Sincronização e Comunicação entre Processos
Compartilhamento de Recursos 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 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 Estes problemas são chamados de race conditions ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/6

8 7 – Sincronização e Comunicação entre Processos
Exclusão Mútua Solução mais simples 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 Uma vez garantida a execução mutuamente exclusiva das regiões críticas, resolve-se problemas de compartilhamento ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/7

9 7 – Sincronização e Comunicação entre Processos
Exclusão Mútua 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 Protocolo de entrada indica que há processo executando instruções na região crítica Protocolo de saída sinaliza a liberação da região crítica para outros processos ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/8

10 7 – Sincronização e Comunicação entre Processos
Exclusão Mútua Duas situações indesejadas devem ser evitadas: Starvation ou espera indefinida Processo nunca consegue entrar na região crítica, ficando eternamente em espera 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 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/9

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

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

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

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

15 7 – Sincronização e Comunicação entre Processos
Exclusão Mútua 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 Algoritmo de Peterson, inicialmente aplicado a dois processos, evoluído para N processos Problema da solução por software: Espera ocupada! (busy wait) Resolvido c/ Semáforos e Monitores ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/14

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

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

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

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

20 7 – Sincronização e Comunicação entre Processos
Exclusão Mútua Soluções de software: Algoritmo de Peterson Solução para problemas anteriores, foi generalizado para N processos (Hofri, 1990) 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) ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/17

21 7 – Sincronização e Comunicação entre Processos
Sincronização Condicional 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 Conhecido como problema produtor/consumidor ou buffer limitado Mantém-se o problema da espera ocupada Obs: algoritmo apresentado não considera necessidade de exclusão mútua da variável “Cont” ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/18

22 7 – Sincronização e Comunicação entre Processos
Semáforos 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 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 Executar DOWN num semáforo com valor 0 coloca o processo na fila de espera ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/19

23 7 – Sincronização e Comunicação entre Processos
Semáforos 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 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 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/20

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

25 7 – Sincronização e Comunicação entre Processos
Semáforos 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 Para o problema produtor/consumidor Usa 3 semáforos: Um MUTEX, para fazer exclusão mútua, iniciado com 1 Dois contadores, para sincronização condicional ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/22

26 7 – Sincronização e Comunicação entre Processos
Semáforos 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 Vazio = 0, processo produtor em espera Cheio = 0, processo consumidor em espera “Vazio” iniciado com tamanho do buffer “Cheio” iniciado com 0 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/23

27 7 – Sincronização e Comunicação entre Processos
Semáforos 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 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/23

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

29 7 – Sincronização e Comunicação entre Processos
Problema dos Filósofos Exemplo clássico de sincronização de processos 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!) ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/25

30 7 – Sincronização e Comunicação entre Processos
Problema dos Filósofos 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 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/26

31 7 – Sincronização e Comunicação entre Processos
Monitores Mecanismos de sincronização de alto nível Formado por procedimentos e variáveis encapsuladas dentro de um módulo 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 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/27

32 7 – Sincronização e Comunicação entre Processos
Monitores Um monitor é definido especificando-se um nome, declarando-se variáveis locais, um conjunto de procedimentos e um código de inicializaçã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 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/28

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

34 7 – Sincronização e Comunicação entre Processos
Monitores O uso de monitores facilita o desenvolvimento de aplicações concorrentes Exclusão mútua é implementada de forma automática 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 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/30

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

36 7 – Sincronização e Comunicação entre Processos
Sincronização Condicional com Monitores Se vale de variáveis especiais de condição para associar a execução dos procedimentos do monitor 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á ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/32

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

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

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

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

41 7 – Sincronização e Comunicação entre Processos
Deadlock Situação onde um processo aguarda indefinidamente por um recurso que nunca estará disponível ou aguarda por um evento que nunca irá ocorrer 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 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/37

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

43 7 – Sincronização e Comunicação entre Processos
Deadlock 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 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/39

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

45 7 – Sincronização e Comunicação entre Processos
Deadlock Detecção de deadlock: Se dá através da verificação de espera circular 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 ASO – Machado/Maia – complem. por Sidney Lucena (UNIRIO) 7/41


Carregar ppt "Arquitetura de Sistemas Operacionais"

Apresentações semelhantes


Anúncios Google