Buscar

5 Comunicação Interprocessos

Prévia do material em texto

Sistemas Operacionais
PROCESSOS E THREADS: 
COMUNICAÇÃO INTERPROCESSOS
(IPC)
Ana Cristina A. Oliveira Dantas
ana.oliveira@ifpb.edu.br
IFPB – Instituto Federal da Paraíba
Campus Campina Grande
Eixo Temático
Processos
Threads
Comunicação interprocessos
Problemas clássicos de IPC
Escalonamento
PROCESOS E THREADS 2
Comunicação Inter-
Processos (IPC)
PROCESOS E THREADS 3
Execução Concorrente
Pode haver mais de um thread no sistema simultaneamente
O thread pode ser executado independentemente ou cooperativamente
Execução assíncrona
◦ Os threads em geral são independentes
◦ Podem se comunicar ou sincronizar ocasionalmente
◦ O gerenciamento dessas interações é complexo e difícil
PROCESOS E THREADS 4
Exclusão mútua
Problema: dois threads acessando dados compartilhados simultaneamente
◦ Os dados podem ficar inconsistentes
◦ O chaveamento de contexto pode ocorrer a qualquer momento
◦ Por exemplo, antes de o thread terminar de mudar um valor
Os dados precisam ser acessados de uma maneira mutuamente exclusiva
◦ Deve-se permitir o acesso a apenas um thread por vez
◦ Outros threads devem esperar até que o recurso seja desbloqueado
◦ O acesso é serializado
◦ Esse processo precisa ser gerenciado de modo que o tempo de espera não seja exagerado
PROCESOS E THREADS 5
Comunicação Interprocesso
Condições de Disputa
Dois processos querem simultaneamente ter acesso à memória
compartilhada
PROCESOS E THREADS 6
Seções/Regiões Críticas
Seções em que os dados compartilhados são modificados
◦ Precisam ser protegidas
Para a maioria dos códigos, a execução concorrente é segura
Apenas um thread por vez pode estar em sua seção crítica
Deve-se tomar cuidado para evitar laços infinitos e bloqueamento dentro de uma seção crítica
PROCESOS E THREADS 7
Regiões Críticas
Quatro condições necessárias para garantir exclusão mútua:
1. Nunca existir dois processos simultaneamente em uma região
crítica
2. Nenhuma afirmação sobre velocidades ou números de CPUs
3. Nenhum processo executando fora de sua região crítica pode
bloquear outros processos
4. Nenhum processo deve esperar eternamente para entrar em
sua região crítica
PROCESOS E THREADS 8
Regiões Críticas
Exclusão mútua usando regiões críticas
PROCESOS E THREADS 9
Primitivas de Exclusão Mútua
Indicam quando dados críticos estão para ser acessados
Delimitação do início e fim de uma seção crítica
◦ enterMutualExclusion (entrarExclusaoMutua)
◦ exitMutualExclusion (sairExclusaoMutua)
PROCESOS E THREADS 10
Propriedades das Primitivas de Exclusão 
Mútua
1. Toda instrução de exclusão mútua em linguagem de máquina é executada indivisivelmente
2. Não é possível supor a velocidade relativa da execução de um thread
3. O thread que não estiver em sua seção crítica não conseguirá impedir que outros threads 
entrem em sua própria seção crítica
4. A entrada do thread em sua seção crítica não pode ser adiada indefinidamente
PROCESOS E THREADS 11
Algoritmos para Implementar Exclusão 
Mútua
Algoritmo de Dekker
◦ Espera Ociosa
Algoritmo de Peterson
◦ Dormir e acordar
Algoritmo da padaria de Lamport
◦ Aprimoramento para n threads
PROCESOS E THREADS 12
Semáforos
Arquitetura de software que pode ser usada para impor a exclusão mútua
Contém uma variável protegida
◦ Essa variável pode ser acessada apenas por meio de dois comandos
◦ Esperar (operação P)
◦ Sinalizar (operação V)
PROCESOS E THREADS 13
Exclusão Mútua usando Semáforos
Semáforo binário
◦ Permite apenas um thread por vez em sua seção crítica
Operação esperar (P)
◦ Se nenhum thread estiver esperando, permite que o thread permaneça em sua seção crítica
◦ Diminui a variável protegida (a 0 nesse caso)
◦ Do contrário, coloca em fila de espera
Operação sinalizar (V)
◦ Indica que o thread está fora de sua seção crítica
◦ Aumenta a variável protegida (de 0 para 1)
◦ O thread que estiver aguardando (se houver) então pode entrar
PROCESOS E THREADS 14
Sincronização de Threads com Semáforos
Os semáforos podem ser usados para notificar outros threads de que ocorreu um evento
Relacionamento produtor/consumidor
◦ O produtor entra em sua seção crítica para gerar um valor
◦ O consumidor é bloqueado até que o produtor termine
◦ O consumidor entra em sua seção crítica para ler o valor
◦ O produtor não pode atualizar o valor até que ele seja consumido
Para esse problema, os semáforos oferecem uma solução clara e fácil de implementar
PROCESOS E THREADS 15
Semáforos Contadores
Inicializados com valores maiores que um
Podem ser usados para controlar o acesso a um conjunto de recursos idênticos
◦ Quando um recurso é removido do conjunto, esse valor é subtraído do contador do semáforo
◦ Quando esse recurso volta para o conjunto, esse valor é novamente adicionado ao contador
◦ Se não houver recurso disponível, o thread permanece bloqueado até que um recurso se torne 
disponível
PROCESOS E THREADS 16
Implementação de Semáforos
Implementados na aplicação ou no núcleo
Implementação na aplicação
◦ Normalmente é feita com espera ociosa
◦ Ineficiente
Implementação no núcleo
◦ Pode evitar espera ociosa
◦ Os threads em espera são bloqueados até que estejam prontos
◦ Pode desabilitar interrupções
◦ Garantem acesso exclusivo ao semáforo
◦ É necessário cuidado para evitar baixo desempenho e impasse (deadlock)
◦ As implementações para sistemas multiprocessadores precisam usar uma abordagem mais aprimorada
PROCESOS E THREADS 17
Semáforos
O problema do produtor-consumidor usando semáforos
PROCESOS E THREADS 18
Mutex (Mutual Exclusion)
Implementação de mutex_lock e mutex_unlock
Primitivas de Exclusão Mútua
PROCESOS E THREADS 19
Monitores
Erros usando mutexes são muito comuns
Para facilitar a programação, Hoare (1974) e Brinch Hansen (1975) propuseram os monitores
◦ Unidade básica de sincronização de alto nível
◦ Apenas 1 processo pode estar ativo em 1 monitor
Características
◦ Coleções de procedimentos, variáveis e estruturas de dados
◦ Agrupados em um tipo especial de módulo ou pacote
◦ Procedimentos fora do monitor não podem acessar as estruturas internas do monitor
PROCESOS E THREADS 20
Monitores
Compiladores implementam a exclusão mútua
◦ Internamente utilizam mutexes e semáforos
◦ Exemplo: synchronized em Java
Variáveis condicionais
◦ Esperar
◦ Sinalizar
PROCESOS E THREADS 21
Monitores: Usados para Resolver o Problema do 
Produtor-Consumidor
PROCESOS E THREADS 22
Não se pode consumir
o que não foi
produzido!!!
Monitores
Delineamento do problema do produtor-consumidor com monitores
◦ somente um procedimento está ativo por vez no monitor
◦ o buffer tem N lugares (N itens podem ser produzidos no máximo)
PROCESOS E THREADS 23
Troca de Mensagens
O problema do produtor-consumidor com N mensagens
PROCESOS E THREADS 24
Barreiras: Sincronização de Threads
Uso de uma barreira
a) processos se aproximando de uma barreira
b) todos os processos bloqueados pela barreira
esperando que o último se aproxime
c) último processo chega, todos passam
PROCESOS E THREADS 25
Deadlock (Impasse)
PROCESOS E THREADS 26
(a) Um deadlock potencial. (b) um deadlock real.
Problemas Clássicos de 
IPC
PROCESOS E THREADS 27
Jantar dos Filósofos (1)
Filósofos comem/pensam
Cada um precisa de 2 garfos
para comer
Pega um garfo por vez
Como prevenir deadlock? 
PROCESOS E THREADS 28
Jantar dos Filósofos (2)
Uma solução errada para o problema do jantar dos filósofos
PROCESSOS E THREADS 29
Jantar dos Filósofos (3)
Uma solução para o problema do jantar dos filósofos (parte 1)
PROCESSOS E THREADS 30
Jantar dos Filósofos (4)
Uma soluçãopara o problema do jantar dos filósofos (parte 2)
PROCESSOS E THREADS 31
Vídeo: Problema e Solução
PROCESOS E THREADS 32
O Problema do Barbeiro Sonolento
PROCESOS E THREADS 33
Número de cadeiras 
para os clientes
Se 1 cliente chegar e o 
barbeiro estiver 
dormindo, deve 
acordá-lo
Após cortar o cabelo 
de todos os clientes, 
o barbeiro volta a 
dormir
O Problema do Barbeiro Sonolento (2)
PROCESOS E THREADS 34
Solução para o problema do barbeiro sonolento
Bibliografia
ANDREW S. TANENBAUM. Sistemas Operacionais Modernos. Editora Prentice-Hall, 2ª Edição, 
2003. ISBN: 8587918575
◦ Capítulo 2: Processos e Threads
DEITEL & CHOFFNES. Sistemas Operacionais. Editora Prentice-Hall, 3ª Edição, 2005. ISBN: 
8576050110.
◦ Capítulo 5: Execução Assíncrona Concorrente
PROCESOS E THREADS 35

Continue navegando