Buscar

Paradigma de linguagem de programação Atividade - 3

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

Prévia do material em texto

Curso: Ciência da Computação – Atividade: A3 Data: 24/11/2021 
Disciplina: Paradigma de linguagem de programação 
 
 
Muitas vezes, o paradigma concorrente tende a ser utilizado junto ao 
paralelismo de forma intercambiável, mas, na verdade, significam duas coisas 
diferentes: 
O paradigma concorrente refere-se à quando várias operações estão 
progredindo durante o mesmo período. Isso não significa que elas tenham que ocorrer 
exatamente ao mesmo tempo. Por exemplo, dois processos que trocam a execução 
em uma máquina de núcleo único são um exemplo de simultaneidade. Paralelismo, 
por outro lado, é um caso especializado de simultaneidade, em que várias operações 
estão progredindo ao mesmo tempo. Por exemplo, executar dois threads em uma 
máquina de núcleo duplo significa que ambos os threads podem ser executados ao 
mesmo tempo. É um caso de paralelismo. Há também outra forma chamada de 
programação distribuída, o que significa que as operações estão ocorrendo em 
máquinas diferentes. Isso geralmente é um pouco mais complexo, pois agora é 
necessário o gerenciamento de vários processos e também várias máquinas! 
É possível também ouvir o termo threading ou multi-threading. Pense em um 
encadeamento como o local de trabalho: quando um aplicativo precisa fazer duas ou 
mais coisas ao mesmo tempo, normalmente ele gera encadeamentos para lidar com 
cada tarefa. Esses encadeamentos podem ser executados simultaneamente ou em 
paralelo, dependendo do sistema. De qualquer forma, a chave é que o trabalho está 
sendo realizado em várias partes ao mesmo tempo. Isso cria soluções realmente 
eficazes, mas também uma série de complexidades para o controle e 
desenvolvimento. 
A grande razão pela qual esse tipo de programação realmente decolou 
recentemente são as restrições físicas dos processadores. Nas últimas duas décadas, 
o poder de processamento aumentou exponencialmente, mas, devido às restrições 
físicas, está ficando cada vez mais difícil tornar as aplicações mais rápidas. Por esse 
motivo, os computadores começaram a adicionar mais processadores ao sistema, em 
vez de criar processadores mais rápidos. 
Por causa disso, está se tornando cada vez mais importante desenvolver 
aplicativos que tirem vantagem de todos os processadores de um computador. Se 
você estiver executando apenas em um único núcleo, estará deixando muita coisa em 
cima da mesa. Até os telefones celulares estão começando a rodar em processadores 
dual e quad-core, e espera-se que os desenvolvedores os usem com todo o seu 
potencial. É provável que essa tendência não pare tão cedo, por isso, é importante, 
para quem desenvolve soluções para esse cenário, entender o funcionamento desse 
paradigma de desenvolvimento. 
 
Curso: Ciência da Computação – Atividade: A3 Data: 24/11/2021 
Disciplina: Paradigma de linguagem de programação 
 
Embora seja benéfico usar toda a potência do computador, existem alguns 
problemas comuns que surgem ao trabalhar dessa maneira. Tudo isso geralmente 
tem a ver com vários threads tentando acessar a memória compartilhada. Descreva, 
com suas palavras, os possíveis problemas que podem surgir ao utilizar o paradigma 
concorrente de forma distribuída, utilizando-se de mais de um processador para um 
sistema. Pense sobre os desafios com: Race conditions, Deadlock e LiveLock. 
1. Race conditions (Condição de corrida) 
Por definição, uma condição de corrida é uma condição de um programa em 
que seu comportamento depende do tempo relativo ou da intercalação de vários 
threads ou processos. Um ou mais resultados possíveis podem ser indesejáveis, 
resultando em um bug. 
2. Deadlock (Impasse) 
Quando um recurso depende de um segundo recurso, porém, esse segundo 
recurso depende do primeiro, ou seja, os processos ficam parados sem continuar, 
tanto em recursos de hardware quanto de software. 
3. LiveLock. 
Uma situação em que dois ou mais processos alteram continuamente seus 
estados em resposta a alterações nos outros processos sem realizar nenhum trabalho 
útil, sem nenhum progresso. 
Esses possíveis problemas podem ocorrer quando o programa é executado em 
um computador com múltiplos processadores ou em um sistema distribuído composto 
de vários computadores que cooperam entre si. Um programa concorrente especifica 
dois ou mais processos concorrentes, onde cada um executa um programa 
sequencial.

Continue navegando