Baixe o app para aproveitar ainda mais
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
Compartilhar