SlideShare uma empresa Scribd logo
1 de 2
Baixar para ler offline
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.

Mais conteúdo relacionado

Destaque (10)

Redes prática - DNS Bind
Redes prática - DNS BindRedes prática - DNS Bind
Redes prática - DNS Bind
 
Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - Threads
 
obtenção de sinais discretos
obtenção de sinais discretosobtenção de sinais discretos
obtenção de sinais discretos
 
Processamento digital de sinais
Processamento digital de sinaisProcessamento digital de sinais
Processamento digital de sinais
 
Como funciona a Internet - DNS
Como funciona a Internet - DNSComo funciona a Internet - DNS
Como funciona a Internet - DNS
 
Introdução ao Processamento Paralelo (1)
Introdução ao Processamento Paralelo (1)Introdução ao Processamento Paralelo (1)
Introdução ao Processamento Paralelo (1)
 
Curso de eletrônica ilustrado
Curso de eletrônica ilustradoCurso de eletrônica ilustrado
Curso de eletrônica ilustrado
 
Apostila de eletronica basica
Apostila de eletronica basicaApostila de eletronica basica
Apostila de eletronica basica
 
Threads em java
Threads em javaThreads em java
Threads em java
 
Servidor dns
Servidor dnsServidor dns
Servidor dns
 

Semelhante a Programação Concorrente e Distribuída

Linguagem C - Alocação Dinâmica [exercícios]
Linguagem C - Alocação Dinâmica [exercícios]Linguagem C - Alocação Dinâmica [exercícios]
Linguagem C - Alocação Dinâmica [exercícios]Matheus Alves
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxPaulo Cardoso
 
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Alex Camargo
 
Linguagem C - Ponteiros [exercícios]
Linguagem C - Ponteiros [exercícios]Linguagem C - Ponteiros [exercícios]
Linguagem C - Ponteiros [exercícios]Matheus Alves
 
2ª lista avaliativa (1)
2ª lista   avaliativa (1)2ª lista   avaliativa (1)
2ª lista avaliativa (1)Hiago Rodrigues
 
Logica combinacional2
Logica combinacional2Logica combinacional2
Logica combinacional2Paulo Martins
 
Exercicio Pascal Repetição
Exercicio Pascal RepetiçãoExercicio Pascal Repetição
Exercicio Pascal RepetiçãoMarcus Vinicius
 
Curso de Delphi - Lógica de Programação 3
Curso de Delphi - Lógica de Programação 3Curso de Delphi - Lógica de Programação 3
Curso de Delphi - Lógica de Programação 3José Araújo
 
mod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaomod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaodiogoa21
 

Semelhante a Programação Concorrente e Distribuída (20)

02 fp02
02 fp0202 fp02
02 fp02
 
Linguagem C - Alocação Dinâmica [exercícios]
Linguagem C - Alocação Dinâmica [exercícios]Linguagem C - Alocação Dinâmica [exercícios]
Linguagem C - Alocação Dinâmica [exercícios]
 
Cea030.lista.04
Cea030.lista.04Cea030.lista.04
Cea030.lista.04
 
Exercicios c
Exercicios cExercicios c
Exercicios c
 
Estrutura de repetição
Estrutura de repetiçãoEstrutura de repetição
Estrutura de repetição
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptx
 
Laços de Repetição
Laços de RepetiçãoLaços de Repetição
Laços de Repetição
 
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
 
Linguagem C - Ponteiros [exercícios]
Linguagem C - Ponteiros [exercícios]Linguagem C - Ponteiros [exercícios]
Linguagem C - Ponteiros [exercícios]
 
Construcao de Algoritmos - Aula 09
Construcao de Algoritmos - Aula 09Construcao de Algoritmos - Aula 09
Construcao de Algoritmos - Aula 09
 
Algoritmos - Aula 07 A - Lacos
Algoritmos - Aula 07 A - LacosAlgoritmos - Aula 07 A - Lacos
Algoritmos - Aula 07 A - Lacos
 
2ª lista avaliativa (1)
2ª lista   avaliativa (1)2ª lista   avaliativa (1)
2ª lista avaliativa (1)
 
Construcao de Algoritmos - Aula 05
Construcao de Algoritmos - Aula 05Construcao de Algoritmos - Aula 05
Construcao de Algoritmos - Aula 05
 
decisão aninhada programaçao de cmputadores
decisão aninhada programaçao de cmputadoresdecisão aninhada programaçao de cmputadores
decisão aninhada programaçao de cmputadores
 
Logica combinacional2
Logica combinacional2Logica combinacional2
Logica combinacional2
 
Exercicio Pascal Repetição
Exercicio Pascal RepetiçãoExercicio Pascal Repetição
Exercicio Pascal Repetição
 
Curso de Delphi - Lógica de Programação 3
Curso de Delphi - Lógica de Programação 3Curso de Delphi - Lógica de Programação 3
Curso de Delphi - Lógica de Programação 3
 
Introdução
IntroduçãoIntrodução
Introdução
 
Tema 2 | Linguagem PHP Básico (II)
Tema 2 | Linguagem PHP Básico (II)Tema 2 | Linguagem PHP Básico (II)
Tema 2 | Linguagem PHP Básico (II)
 
mod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacaomod4-estruturas-dadosestaticas-ordenacao
mod4-estruturas-dadosestaticas-ordenacao
 

Mais de unifesptk

Projeto ula
Projeto ula Projeto ula
Projeto ula unifesptk
 
Algebra linear teoremas
Algebra linear teoremasAlgebra linear teoremas
Algebra linear teoremasunifesptk
 
Covariancia e correlacao
Covariancia e correlacaoCovariancia e correlacao
Covariancia e correlacaounifesptk
 
Pratical mpi programming
Pratical mpi programmingPratical mpi programming
Pratical mpi programmingunifesptk
 
Lista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a ObjetosLista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a Objetosunifesptk
 
Aprendendo a mexer no quartus II
Aprendendo a mexer no quartus IIAprendendo a mexer no quartus II
Aprendendo a mexer no quartus IIunifesptk
 
Circuitos aritmeticos
Circuitos aritmeticosCircuitos aritmeticos
Circuitos aritmeticosunifesptk
 
Apostila - Circuitos Digitais
Apostila - Circuitos DigitaisApostila - Circuitos Digitais
Apostila - Circuitos Digitaisunifesptk
 
Trabalho Final de Compiladores
Trabalho Final de CompiladoresTrabalho Final de Compiladores
Trabalho Final de Compiladoresunifesptk
 
Unix shell programming in 24 hours
Unix shell programming in 24 hoursUnix shell programming in 24 hours
Unix shell programming in 24 hoursunifesptk
 
Tutorial poke-tool
Tutorial poke-toolTutorial poke-tool
Tutorial poke-toolunifesptk
 
Trabalho 5 - Aĺgebra Linear
Trabalho 5 - Aĺgebra LinearTrabalho 5 - Aĺgebra Linear
Trabalho 5 - Aĺgebra Linearunifesptk
 
Notas de Aula de Probabilidade
Notas de Aula de ProbabilidadeNotas de Aula de Probabilidade
Notas de Aula de Probabilidadeunifesptk
 

Mais de unifesptk (17)

Projeto ula
Projeto ula Projeto ula
Projeto ula
 
Projeto ULA
Projeto ULAProjeto ULA
Projeto ULA
 
Algebra linear teoremas
Algebra linear teoremasAlgebra linear teoremas
Algebra linear teoremas
 
Covariancia e correlacao
Covariancia e correlacaoCovariancia e correlacao
Covariancia e correlacao
 
Pratical mpi programming
Pratical mpi programmingPratical mpi programming
Pratical mpi programming
 
Lista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a ObjetosLista IV de Programação Orientada a Objetos
Lista IV de Programação Orientada a Objetos
 
Aprendendo a mexer no quartus II
Aprendendo a mexer no quartus IIAprendendo a mexer no quartus II
Aprendendo a mexer no quartus II
 
Circuitos aritmeticos
Circuitos aritmeticosCircuitos aritmeticos
Circuitos aritmeticos
 
Lexyacc
LexyaccLexyacc
Lexyacc
 
Apostila - Circuitos Digitais
Apostila - Circuitos DigitaisApostila - Circuitos Digitais
Apostila - Circuitos Digitais
 
Trabalho Final de Compiladores
Trabalho Final de CompiladoresTrabalho Final de Compiladores
Trabalho Final de Compiladores
 
Lista II
Lista IILista II
Lista II
 
Unix shell programming in 24 hours
Unix shell programming in 24 hoursUnix shell programming in 24 hours
Unix shell programming in 24 hours
 
Pcd
PcdPcd
Pcd
 
Tutorial poke-tool
Tutorial poke-toolTutorial poke-tool
Tutorial poke-tool
 
Trabalho 5 - Aĺgebra Linear
Trabalho 5 - Aĺgebra LinearTrabalho 5 - Aĺgebra Linear
Trabalho 5 - Aĺgebra Linear
 
Notas de Aula de Probabilidade
Notas de Aula de ProbabilidadeNotas de Aula de Probabilidade
Notas de Aula de Probabilidade
 

Programação Concorrente e Distribuída

  • 2. 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.