Baixe o app para aproveitar ainda mais
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.
Compartilhar