O documento apresenta os principais problemas clássicos de comunicação interprocessos, incluindo o problema dos produtores e consumidores, o problema dos filósofos jantando, o problema dos leitores e escritores e o problema do barbeiro adormecido. Para cada problema, descreve suas características principais e possíveis soluções usando técnicas como semáforos.
2. Roteiro
1. 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.
3. 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.
4. O que são os Problemas Clássicos
de Comunicação Interprocessos?
5. 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.
6. 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)
8. 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.
9. 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.
11. 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.
12. 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
16. 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.
17. 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.
18. 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).
20. 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;
21. 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.
22. Problema do Barbeiro Adormecido
● Três semáforos são usados:
○ Customers
○ Barbers
○ Multex
○ Variável Waiting