pcd lista5

2

Click here to load reader

Upload: unifesptk

Post on 18-Jun-2015

435 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Pcd lista5

ProgramaçãoProgramação ConcorrenteConcorrente E DistribuídaE Distribuída

Lista VLista V

Page 2: Pcd lista5

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.