Exercícios de Revisão
1) Sabemos que sistemas distribuídos possui várias vantagens sobre os
sistemas centralizados. Indique e explique quais as vantagens.
2) O que é programação concorrente e quais são as principais vantagens?
3) Uma das desvantagens dos sistemas distribuídos é a falta de segurança.
Discuta a afirmação acima e dê exemplos.
4) A função fork() quando executada cria um processo, chamado filho, que
herda todas as informações do processo que o criou, chamado pai. Portanto,
qualquer modificação feita pelo filho nos valores das variáveis é
imediatamente conhecida pelo processo pai. A afirmação acima é
verdadeira ou falso. Explique e exemplifique.
5) O problema dos filósofos comilões:
A vida de um filósofo é pensar, comer,
pensar, comer e assim indefinidamente.
Considere que N filósofos estão sentados ao
redor de uma mesa redonda tendo um prato
diante de si. Entre cada dois pratos existe
um garfo. Para comer, um filósofo precisa
necessariamente de dois garfos. Quando
termina de pensar (por ter fome), tenta
pegar os garfos vizinhos para poder comer.
Ao terminar de comer, devolve os garfos à
mesa.
Se pelo menos dois filósofos que estão
sentados um ao lado outro quiserem comer
ao mesmo tempo um deles ficará sem garfo e
conseqüentemente não poderá comer.
Para resolver o problema foi proposta a seguinte solução:
equanto (verdade)
begin
pensa();
pega_garfo(direita);
pega_garfo(esquerda);
come();
entrega_garfo(direita);
entrega_garfo(esquerda);
end
Sendo que, se o garfo não está disponível a função pega_garfo deixa o
processo dormindo até que o garfo esteja disponível.
Critique esta solução. Aponte os prováveis problemas e proponha uma
nova solução.
6) Analise o código abaixo:
if(fork()==0){
executa (cálculo_primeira_parte);
envia_dados_pai();
exit(1);
}
else{
wait();
executa (cálculo_segunda_parte);
recebe_dados_filho();
escreve_resultado ();
}
Considerando que a primeira e a segunda parte do cálculo são
executadas independentes uma da outra, o que poderia ser melhorado na
implementação acima? Explique e proponha uma nova solução.
7) Trace um paralelo entre os meios de comunicação entre processos
estudados. Indique a vantagem e desvantagem de cada um.
8) Qual a utilidade dos semáforos na programação paralela. Explique seu
funcionamento.
9) Problema da padaria. A padaria FIC possui vários pães e tortas que são
vendidos por n vendedores. Para organização, cada cliente que entra na
padaria recebe um número e espera que seu número seja chamado por um
dos vendedores para ser atendido. Sempre que um vendedor fica
desocupado, o próximo número é chamado. Escreva um pseudo-código que
resolva este problema utilizando semáforos.
10)Imagine que temos três processos executando ao mesmo tempo, A, B e C.
Os três processos estão em loop infinito esperando a algum comando do
usuário. Este podem ser:
1. Imprimir um documento
2. Resolver um cálculo
3. Acessar o Bando de dados
Entretanto, apenas o processo A tem acesso à impressora e somente o C
pode fazer consulta no Banco de Dados.
Implemente a situação acima. Você pode criar processos filhos ou escreveu
um código para cada processo. O meio de comunicação entre eles fica à sua
escolha, contudo é necessário explicar o porque da escolha.
Download

Exercícios de Revisão 1) Sabemos que sistemas distribuídos possui