Comunicação Interprocessos Prof. Alexandre Monteiro Recife ‹#› Contatos Prof. Guilherme Alexandre Monteiro Reinaldo Apelido: Alexandre Cordel E-mail/gtalk: [email protected] [email protected] Site: http://www.alexandrecordel.com.br/fbv Celular: (81) 9801-1878 Comunicação Interprocessos Os processos podem precisar trocar informações entre eles ou podem solicitar a utilização de um mesmo recurso simultaneamente, como arquivos, registros, dispositivos de E/S e memória. O compartilhamento de recursos entre vários processos pode causar situações indesejáveis e, dependendo do caso, gerar o comprometimento da aplicação. O Sistema Operacional tem a função de gerenciar e sincronizar processos concorrentes, com o objetivo de manter o bom funcionamento do sistema. Comunicação Interprocesso Condições de Disputa/Corrida Dois processos querem ter acesso simultaneamente à memória compartilhada (Ex: spool de Impressão ) 4 Regiões Críticas Para se evitar uma condição de corrida é preciso definir métodos que proíba que mais de um processo acesse uma determinada área de memória compartilhada ao mesmo tempo. Esses métodos são conhecidos como exclusão mútua ou MUTEX (MUTual EXclusion). A parte do programa no qual o processo acessa memória compartilhada é chamada seção crítica ou região crítica. Dessa forma, a solução para se evitar uma condição de corrida seria organizar os problemas de tal forma que nenhum de dois ou mais processos estivessem em suas regiões críticas ao mesmo tempo. Regiões Críticas (1) Condições necessárias para prover exclusão mútua: 1. Nunca dois processos simultaneamente em uma região crítica 2. Nada pode ser afirmado sobre a velocidade ou sobre o número 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 6 Regiões Críticas (2) Espera Ativa Exclusão mútua usando regiões críticas proposta de exclusão mútua na qual, um processo quando está acessando sua região crítica, outro processo que deseja entrar também em região crítica fica aguardando. 7 Exclusão Mútua com Espera Ociosa (1) – Alternativa Estrita Solução proposta para o problema da região crítica (a) Processo 0. (b) Processo 1. 8 Exclusão Mútua com Espera Ociosa (2) Solução de Peterson para implementar exclusão mútua 9 Dormir e Acordar Problema do produtor-consumidor com uma condição de disputa fatal 10 Semáforos O problema do produtor-consumidor usando semáforos 11 Mutexes Implementação de mutex_lock e mutex_unlock 12 Monitores (1) Exemplo de um monitor 13 Monitores (2) • Delineamento do problema do produtor-consumidor com monitores – somente um procedimento está ativo por vez no monitor – o buffer tem N lugares 14 Monitores (3) Solução para o problema do produtor-consumidor em Java 15 Monitores (4) Solução para o problema do produtor-consumidor em Java (parte 2) 16 Troca de Mensagens O problema do produtor-consumidor com N mensagens 17 Barreiras • Uso de uma barreira a) processos se aproximando de uma barreira b) todos os processos, exceto um, bloqueados pela barreira c) último processo chega, todos passam 18 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 • Situação de impasse. 19 Jantar dos Filósofos (2) Uma solução errada para o problema do jantar dos filósofos 20 Jantar dos Filósofos (3) Uma solução para o problema do jantar dos filósofos (parte 1) 21 Jantar dos Filósofos (4) Uma solução para o problema do jantar dos filósofos (parte 2) 22 O Problema dos Leitores e Escritores Uma solução para o problema dos leitores e escritores 23 O Problema do Barbeiro Sonolento (1) 24 O Problema do Barbeiro Sonolento (2) Solução para o problema do barbeiro sonolento 25 Referências Sistemas Operacionais Modernos – 3ª Edição. A. Tanenbaum, 2008. Modern Operating Systems 3 e. Prentice-Hall, 2008.