"Cogito ergo sum"
RSS icon Email icon Home icon
  • Exercícios, Programação Concorrente.

    Posted on May 28th, 2009 Matheus (X-warrior) Bratfisch No comments

    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