Buscar

Programação Concorrente e Distribuída

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Programação Concorrente e Distribuída 1
󾠱
Programação Concorrente e 
Distribuída
Aluno: Filipe Cavalcante dos santos
Disciplina: Paradigmas da programação
Professor: Roberto Fontes
Faça uma pesquisa e disserte sobre:
1. Programação Concorrente.
Programação concorrente é um paradigma de programação  que é usado para 
construir programas que executam várias tarefas simultaneamente. podendo ser 
implementados como programas separados ou em conjunto, utilizando threads.
2. Programação Distribuída.
A programação distribuída ocorre quando executamos um programa ou sistema em 
vários outros dispositivos interligados via rede.
3. Chamadas Fork.
Uma chamada fork é a chamada de uma função que faz uso de uma chamada de 
sistema, ou seja, o programa invoca o SO para realizar alguma tarefa que não 
pode ser feita pelo usuário. Normalmente é utilizado para criar novos processos de 
sistemas Unix.
4. Modos de se criar threads em Java (ex: herdando da classe thread, ou 
implementando a interface Runnable).
Programação Concorrente e Distribuída 2
A runnable é uma interface que possui apenas um método run. Nesse método é 
possível definir o que podemos executar em uma Thread. Para isso, na classe que 
se deseja executar em paralelo, basta implementar a interface e depois 
sobrescrever o método run da interface.
5. Métodos sincronizados da linguagem Java.
Métodos sincronizados permitem uma estratégia simples para evitar a interferência 
de threads em erros de consistência de memória. Se um objeto for visível para 
mais de um thread, todas as leituras ou gravações nas variáveis desse objeto são 
feitas por meio de métodos sincronizados.
Pesquise e responda:
1. Se a programação concorrente traz dificuldades para a programação, quais 
vantagens se têm com a sua utilização?
Vantagens do paradigma incluem o aumento de desempenho, pois aumenta-se a 
quantidade de tarefas sendo executadas em determinado período de tempo, e a 
possibilidade de uma melhor modelagem de programas, pois determinados 
problemas computacionais são simultâneos por natureza.
2. O que são threads? Quais as suas características?
 Cada programa, ou processo, possui normalmente um fluxo de controle. Assim o 
programa é executado sequencialmente passo a passo com seu único fluxo de 
controle. É nesse ponto que entram as threads, com threads podemos ter mais de 
um único fluxo de controle em nosso aplicativo. Assim o nosso aplicativo agirá 
como se tivessem vários aplicativos com partes de seu código atuando em paralelo 
no sistema. Threads são, portanto, entidades escalonadas para executarem na 
CPU, por isso a noção de paralelismo, pois as threads concorrerão pelo 
processador juntamente com mais threads que tiverem no programa, ou concorrerá 
apenas com o fluxo do programa.
Threads permitem que múltiplas execuções ocorram no mesmo ambiente do 
aplicativo com um grande grau de independência uma da outra, portanto, se temos 
Programação Concorrente e Distribuída 3
muitas threads executando em paralelo no sistema é análogo a múltiplos 
aplicativos executando em paralelo em um computador.
3. Quais são as principais diferenças entre threads e processos? Cite as 
respectivas vantagens e desvantagens de sua utilização.
Cada processo fornece os recursos necessários para executar um programa. Um 
processo tem um espaço de endereço virtual, código executável, alças abertas 
para objetos do sistema, um contexto de segurança, um identificador de processo 
exclusivo, variáveis de ambiente, uma classe de prioridade, tamanhos mínimos e 
máximos do conjunto de trabalho e pelo menos um thread de execução. Cada 
processo é iniciado com um único thread, geralmente chamado de thread primário, 
mas pode criar threads adicionais de qualquer um de seus threads.
Um thread é a entidade dentro de um processo que pode ser agendado para 
execução. Todos os threads de um processo compartilham seu espaço de 
endereço virtual e recursos do sistema.
4. Quais são as principais diferenças entre memória compartilhada e de troca de 
mensagens? Cite vantagens e desvantagens.
A memória compartilha é uma região da memória do computador que é 
compartilhada entre os processos em execução, cada processador tem acesso 
total à memória compartilhada; comunicação entre processos se dá através da 
memória (acesso concorrente necessita sincronização explícita). A troca de 
mensagem é a comunicação entre processadores feita de forma explícita através 
de comandos send e receive.
5. Quais são as principais características das linguagens C, JAVA e ADA 
relacionadas à programação concorrente?
6. Quais as diferenças entre execução paralela e concorrente?
Concorrência é quando um servidor atende a vários clientes escalando um 
determinado tempo para atender cada um, já o Paralelismo é quando vários 
Programação Concorrente e Distribuída 4
servidores atendem vários clientes ao mesmo tempo, reduzindo o tempo de 
resposta para os clientes.
7. O que é escalonamento de processos?
O escalonamento de processos ou agendador de tarefas é uma atividade 
organizacional feita pelo escalonador da CPU ou de um sistema distribuído, 
possibilitando executar os processos mais viáveis e concorrentes, priorizando 
determinados tipos de processos, como os de I/O Bound e os CPU Bound.
8. O que é Sockets?
Os sockets foram a forma de permitir que dois processos se comuniquem (Inter-
process communication). Esses processos podem ou não estar na mesma 
máquina.
9. Cite três linguagens de programação de implementam Programação 
Concorrente e Distribuída. Caracterizando cada uma.
Java, C# e Erlang
10. O produtor-consumidor é um problema clássico de programação 
concorrente. Explique quais problemas que podem acontecer.
O problema do produtor e consumidor, também referido como Bounded Buffer 
Problem (BBP), consiste em um desafio de sincronização de duas ou mais threads 
(tarefas) concorrentes que têm acesso a um mesmo recurso do programa que está 
sendo executado. O fato de o recurso estar sendo compartilhado, implica na 
possibilidade de conflitos entre as threads que disputam pelo controle da CPU para 
acessar esse mesmo recurso.
No caso do BBP, o recurso disputado é um buffer de memória (um vetor), de 
tamanho limitado/fixo, daí o motivo do nome. O produtor é o responsável por 
enfileirar novos jobs ou dados nesse buffer, e o consumidor assume a 
responsabilidade de extrair esses dados do buffer.
https://fontes.pro.br/moodle20/mod/page/view.php?id=210
Programação Concorrente e Distribuída 5
Porém o seguinte problema poderá emergir: E se o produtor produzir muito 
rápido, e o consumidor não for capaz de acompanhá-lo?
Se isso acontecer, o produtor irá descartar todos os novos itens produzidos, até 
que haja espaço novamente no buffer, ou seja, dados serão perdidos.
Sobre Protocolo
1. O que é protocolo?
Na ciência da computação, um protocolo é uma convenção que controla e 
possibilita uma conexão, comunicação, transferência de dados entre dois sistemas 
computacionais. De maneira simples, um protocolo pode ser definido como "as 
regras que governam" a sintaxe, semântica e sincronização da comunicação.
2. O que é RFC?
Request for Comments são documentos técnicos criados por indivíduos e 
organizações que lidam com tecnologia, com destaque para a Internet Engineering 
Task Force.
3. O que é o protocolo TELNET?
Telnet é um protocolo de rede na Internet ou redes locais para proporcionar uma 
facilidade de comunicação baseada em texto interativo bidirecional usando uma 
conexão de terminal virtual.
4. Como usar o protocolo TELNET?
No windows 
 No menu do Windows, digite Painel de controle.
Procure a opção Programas.
Você verá a opção “Desativar ou Ativar recursos do Windows”, selecione 
esta opção.
Programação Concorrente e Distribuída 6
Abrirá uma janela, nela você verá a opção Cliente Telnet, selecione ela e 
clique em OK.
Para executar o comando, basta abrir o prompt de comando. Para isso, vá ao 
menu do Windows e digite Prompt, com ele aberto, digite Telnet.No linux
Abra o terminal do Linux.
Escreva o comando:
telnet chkconfig on
Depois o comando
restart /etc /init.d /xinetd
Para testar, digite o comando:
telnet 192.168.1.10
5. Como funciona o terminal virtual?
Um terminal virtual é uma segunda seção de trabalho completamente independente 
de outras, que pode ser acessada no computador local ou remotamente via telnet, 
rsh, rlogin, etc.
6. Qual é o princípio das opções negociadas?
As opções negociadas permitem que alguns terminais proponham serviços 
adicionais que não são definidos nas especificações básicas. Esses serviços 
adicionais permitem a utilização de funções avançadas em forma de opções, 
fazendo iniciar os pedidos para solicitar a autorização ao sistema distante a 
ativação desse serviço ou não. Qualquer um dos lados da rede pode emitir o sinal 
e logo em seguida a outra deve responder se aceita ou não a liberação da opção 
Programação Concorrente e Distribuída 7
requerida. Caso o pedido seja para desativar a opção, quem recebe a mensagem 
não deve recusar a mensagem, para ser compatível com o modelo NVT.
7. Quais são as regras de negociação?
As regras de negociação de opções podem evitar um caso de bloqueio do pedido, 
pois os pedidos só devem ser emitidos quando acontece a mudança de um modo. 
Caso exista um envio para mudança esse deve ser inserido no fluxo de dados 
apenas no lugar onde tem efeito, o receptor da mensagem só deve adotá-lo 
quando não se encontrar no mesmo modo pedido.

Mais conteúdos dessa disciplina