Programação
Concorrente
E Distribuída

   Lista V
1. Crie um programa concorrente com Threads (Java ou C) no estilo Produtor-Consumidor,
       onde o processo produtor cria números aleatórios de 1 a 100000, e o processo consumidor
       analisa e verifica se o número criado é primo ou não. Simule uma situação onde o tem-se
       apenas um produtor e N consumidores, onde N é representado pelo dobro do número de
       processadores disponíveis na máquina. Limite o tamanho da lista (ligada) a armazenar 10
       números. Ao final, após a geração de 10², 10³ e 10⁴ números pelo produtor, o programa
       deverá exibir a quantidade total de números primos encontrados. Especifique a configuração
       da máquina utilizada e o Speedup máximo encontrado.
    2. Modifique o programa acima para uma configuração de Leitores e Escritores, onde a Lista
       com números gerados pelos processos escritores estará limitada a 10², 10³ e 10 ⁴ números
       aleatórios na mesma faixa designada acima. Crie dois processos escritores que escrevem na
       lista e N processos leitores que tem o mesmo objetivo do exercício acima, ou seja, verificam
       se um número é primo ou não. Crie um mecanismo externo de controle para que dois
       processos leitores leiam posições diferentes para o correto cálculo da quantidade de números
       primos.
    3. Crie uma solução em pseudo-código com um algoritmo concorrente utilizando de semáforos
       para o problema denominado popularmente como: "Problema ifesdo Barbeiro Adormecido".
       Onde se tem uma barbearia com um barbeiro e N cadeiras de espera para clientes. Quando
       um cliente chega e o barbeiro está trabalhando, o cliente deverá esperar a sua vez de ser
       atendido sentado em uma cadeira. Caso não existam cadeiras vazias o cliente vai embora. Se
       um cliente chega e encontra a barbearia vazia, com o barbeiro dormindo, ele deve acordar o
       barbeiro.
    4. Resolva o problema acima com monitores.
    5. Resolva um Quick-Sort concorrente com Decomposição recursiva.
    6. Resolva o problema de se buscar N números primos em uma lista de números aleatórios,
       como no exercício 1, com mapeamento dinâmico da forma Mestre-Escravo e Self-
       Scheduling, para M threads.




Em breve, no unifesp.tk a resolução da lista.

Pcd lista5

  • 1.
  • 2.
    1. Crie umprograma concorrente com Threads (Java ou C) no estilo Produtor-Consumidor, onde o processo produtor cria números aleatórios de 1 a 100000, e o processo consumidor analisa e verifica se o número criado é primo ou não. Simule uma situação onde o tem-se apenas um produtor e N consumidores, onde N é representado pelo dobro do número de processadores disponíveis na máquina. Limite o tamanho da lista (ligada) a armazenar 10 números. Ao final, após a geração de 10², 10³ e 10⁴ números pelo produtor, o programa deverá exibir a quantidade total de números primos encontrados. Especifique a configuração da máquina utilizada e o Speedup máximo encontrado. 2. Modifique o programa acima para uma configuração de Leitores e Escritores, onde a Lista com números gerados pelos processos escritores estará limitada a 10², 10³ e 10 ⁴ números aleatórios na mesma faixa designada acima. Crie dois processos escritores que escrevem na lista e N processos leitores que tem o mesmo objetivo do exercício acima, ou seja, verificam se um número é primo ou não. Crie um mecanismo externo de controle para que dois processos leitores leiam posições diferentes para o correto cálculo da quantidade de números primos. 3. Crie uma solução em pseudo-código com um algoritmo concorrente utilizando de semáforos para o problema denominado popularmente como: "Problema ifesdo Barbeiro Adormecido". Onde se tem uma barbearia com um barbeiro e N cadeiras de espera para clientes. Quando um cliente chega e o barbeiro está trabalhando, o cliente deverá esperar a sua vez de ser atendido sentado em uma cadeira. Caso não existam cadeiras vazias o cliente vai embora. Se um cliente chega e encontra a barbearia vazia, com o barbeiro dormindo, ele deve acordar o barbeiro. 4. Resolva o problema acima com monitores. 5. Resolva um Quick-Sort concorrente com Decomposição recursiva. 6. Resolva o problema de se buscar N números primos em uma lista de números aleatórios, como no exercício 1, com mapeamento dinâmico da forma Mestre-Escravo e Self- Scheduling, para M threads. Em breve, no unifesp.tk a resolução da lista.