Processos e Threads 1. Comunicação entre processos (IPS) 2. Problemas clássicos de IPC 3. Problemas Comunicação entre processos Topicos fundamentais de comunicação entre processos: – Sincronismo entre processos (barreiras, mutex, semaforos) – Acesso exclusivo a um recurso por um processo (mutex, semaforos) – Passagem de informação entre processos (pipes, sockets) 12/16/2002 João Magalhães 2001/2002 2 Comunicação entre processos Condições de corrida Dois processos a aceder à mesma posição da fila de espera. 12/16/2002 João Magalhães 2001/2002 3 Regiões criticas (1) Quatro condiçoes para ter acesso exclusivo: – Não podem existir dois processos simultaneamente em regiões criticas – Nada se pode assumir sobre a velocidade e o número de CPUs – Nenhum processo fora da região critica pode bloquear outro processo – Nenhum processo pode esperar eternamente para entrar na região critica 12/16/2002 João Magalhães 2001/2002 4 Regiões criticas (2) Exclusão mutua utilizando regiões criticas 12/16/2002 João Magalhães 2001/2002 5 Exclusão mutua com espera activa(1) Solução proposta para problema de regiões criticas (a) Processo 0. 12/16/2002 (b) Processo 1. João Magalhães 2001/2002 6 Exclusão mutua com espera activa (2) Solução de Peterson's para exclusão mutua 12/16/2002 João Magalhães 2001/2002 7 Exclusão mutua com espera activa (3) Entrada e saida de uma região critica utilizando a TSL 12/16/2002 João Magalhães 2001/2002 8 Espera não activa Acesso a regiões criticas com espera activa: – Ambas as soluções anteriores são correctas • Instrução TSL • Solução de Peterson’s – Processo activo enquanto espera consome recursos Como implementar espera não activa? 12/16/2002 João Magalhães 2001/2002 9 “Adormecer e Acordar” Problema produtor-consumidor pode ser fatal numa situação de corrida 12/16/2002 João Magalhães 2001/2002 10 Semaforos Solução do problema produtor-consumidor com semaforos 12/16/2002 João Magalhães 2001/2002 11 Mutexes Implementação de mutex_lock e mutex_unlock 12/16/2002 João Magalhães 2001/2002 12 Monitores (1) Exemplo de um monitor Grupo de funções, variaveis e estruturas de dados. Processos podem chamar elementos do monitor arbitrariamente. Processos não têm acesso aos dados do monitor. Apenas um processo está activo num monitor. 12/16/2002 João Magalhães 2001/2002 13 Exemplo de Monitores Problema produtor-consumidor com monitores 12/16/2002 João Magalhães 2001/2002 14 Implementação de Monitores em Java Solução do problema produtor-consumidor em Java (parte 1) 12/16/2002 João Magalhães 2001/2002 15 Implementação de Monitores em Java Solução do problema produtor-consumidor em Java (parte 2) 12/16/2002 João Magalhães 2001/2002 16 Barreiras Utilização de uma barreira: – processos aproximam-se de uma barreira – Todos os processos são bloqueados pela barreira – Quando o ultimo chega (quorum), passam todos 12/16/2002 João Magalhães 2001/2002 17 Problemas clássicos de IPC Jantar de filosofos (acesso a recursos limitados) Acessos de leitura e de escrita Barbeiro adormecido (filas de espera) 12/16/2002 João Magalhães 2001/2002 18 Jantar de filosofos (1) Filosofos comem/pensam Para comer são necessários 2 garfos Escolher um garfo de cada vez Como prevenir deadlocks 12/16/2002 João Magalhães 2001/2002 19 Jantar de filosofos(2) Solução errada do problema 12/16/2002 João Magalhães 2001/2002 20 Jantar de filosofos(3) Soluçao do problema (parte 1) 12/16/2002 João Magalhães 2001/2002 21 Jantar de filosofos(4) Soluçao do problema (parte 2) 12/16/2002 João Magalhães 2001/2002 22 Acesso de leituras e de escritas Espera acesso exclusivo. Writer Reader Reader Reader Reader Reader Reader 12/16/2002 João Magalhães 2001/2002 23 Acessos de leituras e escritas Uma solução para o problema 12/16/2002 João Magalhães 2001/2002 24 Problema do barbeiro adormecido (1) 12/16/2002 João Magalhães 2001/2002 25 Problema do barbeiro adormecido(2) Soluçao do problema. 12/16/2002 João Magalhães 2001/2002 26 Problema: No cenário do problema acesso de leituras e escritas alterar a solução de modo a que o writer não espere indeterminadamente. Espera acesso exclusivo. Writer Reader Reader Reader Reader Reader Reader 12/16/2002 João Magalhães 2001/2002 27