Skip to content

Exercícios, Programação Concorrente.

Boa noite,

Amanhã tenho uma prova de Programação com o conteúdo, "monitores" e "redes de petri". O professor passou uns exercícios para que fossem resolvidos e entregues, dos 5 resolvi apenas 3 até o momento. A linguagem utilizada para implementação dos mesmos foi Pascal FC (uma linguagem para ensinar "programação concorrente"). Bom, vamos a resolução e enunciados dos mesmos.

1) Pombos correio foram treinados para transportar cartas da cidade
A para a cidade B. Na cidade A existe uma Caixa Postal onde as
pessoas depositam suas cartas para que sejam entregues na cidade
B. Os pombos consultam a Cxpostal e retiram sempre 5 cartas para
transportar na sua viagem. Caso não existam ainda 5 cartas na
caixa, o pombo espera até que esse número seja atingido. Na cidade
B existe uma gaiola onde os pombos depositam suas cartas e ficam
presos até que um processo tratador libere-os. O tratador verifica a
gaiola a cada 20 clocks e libera todos os pombos somente se o
número de pombos for maior ou igual a 2. Os pombos somente
transportam cartas de A para B, na sua volta eles voam vazios.
Construa um monitor para controlar a utilização da Caixa Postal
pelas pessoas (13), pombos (6) e o tratador (1).

Resolução do exercício sobre pombos.

2) Implemente o problema dos fumantes utilizando monitor. Três
fumantes e um agente sentados em uma mesa. Cada fumante
possui dois dos três ingredientes para se fazer um cigarro: fósforo,
fumo e palha. O agente possui os três e aleatoriamente sorteia um
dos ingredientes. O fumante contemplado faz o seu cigarro, fuma e
libera o agente para fazer novo sorteio.

Resolução do exercício sobre mesa de fumantes.

3) Processos produtores e consumidores se sincronizam através de
um buffer circular com 5 posições (um array de 5 posições). Um
produtor gera um número aleatório e coloca no buffer caso exista
uma vaga. Um consumidor retira um número do buffer se houver.
Implemente utilizando monitor.

Resolução do exercício sobre sincronização através de array circular.

4) Suponha um ambiente em que processos compartilham
impressoras. Existem dois tipos de impressora: tipo A e Tipo B.
Existem 3 classes de processos: classe PA que somente utilizam
impressoras do tipo A, classe PB que somente utilizam impressoras
do tipo B e classe PAB que utilizam impressoras de qualquer tipo.
Esses processos, do tipo PAB, têm prioridade sobre os demais
quando não houver impressoras disponíveis. Implemente utilizando
monitor.

Resolução do exercício sobre impressoras.

5) Implemente o problema da ponte utilizando monitor. Uma ponte,
que separa duas cidades A e B, somente permite tráfego em um
sentido de A para B ou de B para A. Se a ponte estiver vazia pode
ser utilizada por carros de A ou de B. Se um carro de A acessou a
ponte, ela é trancada para os carros de B e todos os carros de A que
desejarem podem também acessar. Quando o último carro que sai
de A para B deixar a ponte, ela deve ser liberada.

Resolução do exercício sobre Ponte.

Lista dos 5 exercícios e sua resolução.

UPDATE 1: Exercícios que não estavam resolvidos foram resolvidos e adicionados. Lembro que o professor ainda não entrou uma correção do mesmo, mas testei eles e parece-me tudo ok.Lembrando também que estes exercícios foram disponibilizados aos alunos pelo Professor José Mazzucco Júnior.

Espero que isso seja util a todos,
Matheus

Published inAprendendoProgramação Concorrente

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.