Arquitetura de Sistemas Operacionais

Slides:



Advertisements
Apresentações semelhantes
Semáforos Eduardo Nicola F. Zagari
Advertisements

Sistemas Operacionais
Deadlocks Professora: Lúcia Drummond. Deadlocks Recursos: hardware ou informação Preemptivo Não preemptivo Uso do Recurso: 1. Pedido (Request ou Open)
Sistemas Operacionais Sincronismo e Comunicação entre processos
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Sincronização de Processos (1)
Estruturas de Repetição
Sistema Operacional Sincronização e Comunicação entre Processos
Arquitetura de Sistemas Operacionais
Sincronismo e Comunicação entre Processos
Sincronismo e Comunicação entre Processos
Deadlocks - Impasses 3.1. Recurso 3.2. Introdução aos deadlocks
Arquitetura de Sistemas Operacionais
Arquitetura de Sistemas Operacionais
Arquitetura de Sistemas Operacionais
Arquitetura de Sistemas Operacionais Francis Berenger Machado
Arquitetura de Sistemas Operacionais Francis Berenger Machado
Arquitetura de Sistemas Operacionais
Monitores.
Capítulo 7: Deadlocks.
Sistemas Operacionais II
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC SISTEMAS OPERACIONAIS I Aula.
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC SISTEMAS OPERACIONAIS I Turmas.
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC SISTEMAS OPERACIONAIS I Turmas.
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC SISTEMAS OPERACIONAIS I Turmas.
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC SISTEMAS OPERACIONAIS I Aula.
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC SISTEMAS OPERACIONAIS I Aulas.
Capítulo 3 Deadlocks - Impasses 3.1. Recurso
Sistemas Operacionais
Sincronização de Processos (3)
Sincronização de Processos (5) - Monitores -
Sincronização de Processos (2)
DeadLock Sistemas Operacionais I
Sincronização e Comunicação entre Processos
e comunicação entre Processos
Claudio de Oliveira – Thread 09/03/10 20:13 Claudio de Oliveira –
Classes e objetos P. O. O. Prof. Grace.
Sistemas Operacionais Adriana Vettorazzo
Sistemas Operacionais
Sistemas Operacionais
Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,
Sistemas Operacionais
Arquitetura de Sistemas Operacionais – Machado/Maia 10/1 Arquitetura de Sistemas Operacionais Francis Berenger Machado Luiz Paulo Maia Capítulo 10 Gerência.
Monitores.
Unidade 3 Controle de Concorrência
Arquitetura de Sistemas Operacionais
Concorrência STRD.
Conteúdo Processos e threads Partes do processo
Sistemas Operacionais Prof. Galvez. PROBLEMA DE SEÇÃO CRITICA.
Processos.
Capítulo 2 Processos e Threads 2.1 Processos 2.2 Threads
SISTEMAS OPERACIONAIS I
Sistemas operacionais
Sistemas Operacionais
Faculdade Pernambucana - FAPE
Video Capítulo 7: Sincronização de Processos. Silberschatz, Galvin and Gagne  Video Operating System Concepts Assuntos n Cenário n O problema.
Exclusão Mútua com Espera Ociosa (1)
Gerenciamento de Processos
Processos Concorrentes
Deadlocks Impasses Vinícius Pádua.
Programação Concorrente
Sistemas Operacionais
Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha.
Comunicação Interprocesso Condições de Disputa (corrida)
Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha.
Sistemas Operacionais Sincronização e Comunicação Introdução Aplicações concorrentes (mecanismos de sincronização: variáveis compartilhadas e troca de.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais IESP - FATEC-PB Professor: Gustavo Wagner
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais IESP - FATEC-PB Professor: Gustavo Wagner.
SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS PROF. HORACIO RIBEIRO Sistemas operacionais.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Transcrição da apresentação:

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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