problemas clássicos de comunicação interprocessos

25
Problemas Clássicos de Comunicação Interprocessos Componentes: Lucas Vinícius e Oto Antônio

Upload: lucas-vinicius

Post on 28-Jan-2018

149 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Problemas clássicos de comunicação interprocessos

Problemas Clássicos de Comunicação InterprocessosComponentes: Lucas Vinícius e Oto Antônio

Page 2: Problemas clássicos de comunicação interprocessos

Roteiro1. O que são os Problemas Clássicos de

Comunicação Interprocessos;2. Problema dos Produtores e Consumidores

(problema do buffer associado);3. Problema dos Filósofos Jantando (Filósofos

Glutões);4. Problemas dos Leitores e dos Escritores;5. Problema do Barbeiro Adormecido.

Page 3: Problemas clássicos de comunicação interprocessos

A apresentação de conter● Descrição do problema, características

principais;● Como podem ser resolvidos quais técnicas ● Análise do algoritmo proposto na literatura.

Page 4: Problemas clássicos de comunicação interprocessos

O que são os Problemas Clássicos de Comunicação Interprocessos?

Page 5: Problemas clássicos de comunicação interprocessos

Problemas dos Produtores e Consumidores (Buffer Associado)❏ Um sistema é composto por entidades produtoras e

entidades consumidoras.

❏ Os processos compartilham um buffer de tamanho fixo.

❏ O problema consiste em assegurar que o produtor não irá tentar adicionar dados no buffer quando este estiver cheio, que o consumidor não tentará remover dados quando o buffer estiver vazio ou que os dois tentem acessar o buffer ao mesmo tempo.

Page 6: Problemas clássicos de comunicação interprocessos

Problemas dos Produtores e Consumidores (Buffer Associado)

“A solução para o produtor é dormir quando o buffer estiver cheio. Na próxima vez que o consumidor remover um item do buffer, ele irá acordar o produtor, que continuará a colocar dados no buffer. Da mesma forma, o consumidor dorme quando encontra o buffer vazio. Na próxima vez que o produtor adicionar um dado no buffer, ele acordará o consumidor.” (Autor Desconhecido)

Page 7: Problemas clássicos de comunicação interprocessos

Problemas dos Produtores e Consumidores (Buffer Associado)

Page 8: Problemas clássicos de comunicação interprocessos

Produtores e Consumidores usando semáforos❏ Três semáforos.

❏ Full (conta espaços preenchidos).❏ Empty (conta espaços vazios).❏ Mutex (exclusão mutua).

❏ UP/DOWN❏ Down antes de entrar na região critica e up logo

após sair.❏ Up e down são implementados como system calls.

Page 9: Problemas clássicos de comunicação interprocessos

Produtores e Consumidores usando semáforos❏ O problema pode ser generalizado para múltiplos

produtores e múltiplos consumidores.❏ Se múltiplas CPUs são usadas, então os

semáforos devem ser protegidos por uma variável de impedimento para assegurar que apenas uma CPU examine aquele semáforo.

Page 10: Problemas clássicos de comunicação interprocessos

Produtores e Consumidores usando semáforos

Page 11: Problemas clássicos de comunicação interprocessos

Problema dos Filósofos Jantando (Filósofos Glutões)❏ 5 Filósofos sentados em torno de uma mesa

redonda.❏ Cada filósofo tem um prato com espaguete e o

come com dois garfos/hashis.❏ Entre cada par de pratos existe um garfo.

❏ Filósofo come e pensa.

❏ Quando um filósofo fica com fome faz o que ?❏ Pega cada garfo, um de cada vez, e come sua

comida.

Page 12: Problemas clássicos de comunicação interprocessos

Problema dos Filósofos Jantando (Filósofos Glutões)❏ Como fazer com que todos os filósofos comam e

pensem sem “matar” um outro de fome.

❏ �Uma solução é a chamada de um procedimento no qual o filósofo espera até o garfo está disponível e o pega.

❏ Soluções óbvias não funcionam.❏ Deadlock❏ Starvation

Page 13: Problemas clássicos de comunicação interprocessos

Problema dos Filósofos Jantando (Filósofos Glutões)

Page 14: Problemas clássicos de comunicação interprocessos

Problema dos Filósofos Jantando (Filósofos Glutões)

Mas existe uma maneira !

Page 15: Problemas clássicos de comunicação interprocessos

Problema dos Filósofos Jantando (Filósofos Glutões)

Page 16: Problemas clássicos de comunicação interprocessos

Problemas dos Leitores e dos Escritores

❏ O Problema modela um acesso a uma base de dados.

❏ Exemplo: Sistemas de linhas aéreas com muitos processos em competição querendo ler e escrever num banco de dados.

Page 17: Problemas clássicos de comunicação interprocessos

Problemas dos Leitores e dos Escritores

❏ Muitos processos podem ler do banco de dados ao mesmo tempo, mas se um processo estiver atualizando o banco de dados, nenhum outro processo pode ter acesso aos arquivos, nem mesmo os leitores.

Page 18: Problemas clássicos de comunicação interprocessos

Problemas dos Leitores e dos Escritores

Solução 1: Escritores acessam o banco de dados a vontade e os escritores devem esperar até que não haja mais leitores;

Solução 2: Se um escritor entrar, os próximos da fila terão de esperar sua ação para realizarem outras operações (leitura ou escrita).

Page 19: Problemas clássicos de comunicação interprocessos

Problemas dos Leitores e dos Escritores (Algoritmo)

Page 20: Problemas clássicos de comunicação interprocessos

Problema do Barbeiro Adormecido

● Numa barbearia há um barbeiro, uma cadeira de barbeiro e n cadeiras para eventuais clientes;

● O barbeiro senta na cadeira de barbeiro e dorme (quando não há clientes);

● Quando chega um cliente ele acorda o babeiro;

Page 21: Problemas clássicos de comunicação interprocessos

Problema do Barbeiro Adormecido

● Clientes que chegam enquanto o barbeiro estiver trabalhando sentam nas cadeiras se disponíveis;

● Se não houver cadeiras disponíveis o cliente que chegou sai da barbearia.

Page 22: Problemas clássicos de comunicação interprocessos

Problema do Barbeiro Adormecido

● Três semáforos são usados:○ Customers○ Barbers○ Multex○ Variável Waiting

Page 23: Problemas clássicos de comunicação interprocessos

Problema do Barbeiro Adormecido (Algoritmo)

Page 24: Problemas clássicos de comunicação interprocessos

Problema do Barbeiro Adormecido(Imagem Ilustrativa)