Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouVergílio Castel-Branco Chagas Alterado mais de 8 anos atrás
1
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner gugawag@gmail.com
2
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 2 Processos e Threads Capítulo 2 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2.5 Escalonamento
3
Pearson Education Sistemas Operacionais Modernos – 2ª Edição Semáforos Dijkstra propôs, em 1965, usar uma variável inteira para contar o número de sinais de acordar para uso futuro; A variável introduzida foi o semáforo; Semáforo: 0: nenhum sinal foi salvo; maior que 0: quantidade de sinais pendentes; Operações down e up (generalizações de sleep e wakeup);
4
Pearson Education Sistemas Operacionais Modernos – 2ª Edição Semáforos down: se for 0, o processo dorme; se for maior que 0, subtrai de um o valor da variável; up: incrementa em 1 o valor da variável; –Essa operação não bloqueia nenhum processo; Verificar o valor do semáforo, alterá-lo e possivelmente colocar o processo para dormir são ações atômicas; Isso é necessário para resolver os problemas de sincronização e evitar condições de disputa;
5
Pearson Education Sistemas Operacionais Modernos – 2ª Edição Semáforos Usa-se a instrução TSL para garantir que múltiplas CPUs tenham acesso ao semáforo; Como as operações sobre o semáforo duram apenas microsegundos, usar TSL não é um problema;
6
Pearson Education Sistemas Operacionais Modernos – 2ª Edição Desafio Qual o algoritmo para o problema do produtor-consumidor usando semáforos?
7
Pearson Education Sistemas Operacionais Modernos – 2ª Edição Resolvendo produtor-consumidor com semáforos
8
Pearson Education Sistemas Operacionais Modernos – 2ª Edição Usos distintos de semáforos No caso do produtor-consumidor: full e empty são usados para sincronização; O mutex (semáforo binário) é usado para exclusão mútua;
9
Pearson Education Sistemas Operacionais Modernos – 2ª Edição Mutex Mutex = Mutual Exclusion; Semáforo binário: apenas 0 ou 1; Serve para exclusão mútua; Entendendo melhor interrupção de dispositivo: –Usa-se um mutex para o dispositivo, com valor inicialmente em 0; –O processo que deu um down no mutex dorme; –Quando a interrupção chega, dá-se um up no mutex; –O processo trata a resposta;
10
Pearson Education Sistemas Operacionais Modernos – 2ª Edição Mutexes Implementação de mutex_lock e mutex_unlock
11
Pearson Education Sistemas Operacionais Modernos – 2ª Edição Discussão sobre memória compartilhada Solução de Peterson e algumas anteriores levam em consideração que os processos tenham memória compartilhada: buffer, turn; Como é possível? Para threads isso é fácil; Para processos, há basicamente duas formas: –Armazenar essas variáveis no SO e acessar via System Call; –SO modernos (Unix, Windows) oferecem uma área de compartilhamento entre processos; –Em último caso, usa-se arquivo;
12
Pearson Education Sistemas Operacionais Modernos – 2ª Edição Monitores Usar semáforos é complexo, pois imagine se invertermos a ordem dos downs, no caso do produtor, e se o buffer estivesse cheio!! Para facilitar, Hoare e Brinch propuseram uma unidade básica de sincronização de alto nível chamada monitor; Monitor: coleção de procedimentos, variáveis e estrutura de dados agrupados num pacote;
13
Pearson Education Sistemas Operacionais Modernos – 2ª Edição Monitores Apenas um processo pode estar ativo num monitor em um determinado momento; Monitor é uma construção de linguagem de programação; Os compiladores usam semáforo binário/mutex para garantir exclusão mútua;
14
Pearson Education Sistemas Operacionais Modernos – 2ª Edição Monitores Garante exclusão mútua: nunca dois processos podem estar ao mesmo tempo no monitor; Mas como garantir que um processo bloqueie se não puder continuar? –Usam-se variáveis condicionais: condition; Um processo que deseja bloquear chama um wait sobre a variável condicional; O processo que deseja acordar outro chama um signal;
15
Pearson Education Sistemas Operacionais Modernos – 2ª Edição Monitores Exemplo de um monitor
16
Pearson Education Sistemas Operacionais Modernos – 2ª Edição Monitores Delineamento do problema do produtor-consumidor com monitores – somente um procedimento está ativo por vez no monitor – o buffer tem N lugares
17
Pearson Education Sistemas Operacionais Modernos – 2ª Edição Monitores em java Solução para o problema do produtor-consumidor em Java
18
Pearson Education Sistemas Operacionais Modernos – 2ª Edição Java Desde sempre Java suportou monitores: usa-se synchronized nas assinaturas dos métodos ou em uma variável; À partir de Java 1.5 tem-se semáforos, mutex, variáveis condicionais;
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.