A concorrência e o paralelismo são conceitos comuns, especialmente no que respeita às IT. Na análise de dados, ajudam, entre outras coisas, a maximizar o desempenho e a eficácia do sistema. Embora estes termos sejam frequentemente utilizados em contextos sinónimos, referem-se simultaneamente a diferentes métodos de processamento eficiente de grandes volumes de dados. Por conseguinte, ambos os termos são igualmente relevantes para efeitos de construção de sistemas escaláveis para recolha e análise de dados. Neste artigo, consideramos a concorrência e o paralelismo, as suas diferenças e exemplos da sua utilização na análise de dados.
Na análise, a concorrência refere-se à execução de várias tarefas de forma sobreposta no espaço de tempo de um único processador. Isto significa que, embora apenas uma tarefa possa ser executada de cada vez, para os sistemas externos, parece que muitas tarefas estão a ser executadas simultaneamente. Em outras palavras, cada execução de tarefa compete por recursos do processador, mas não é capaz de usá-los todos ao mesmo tempo.
Em particular, a estratégia funciona melhor na concorrência vinculada a E/S, que inclui qualquer tipo de operação em que o programa envia ou recebe dados de outro dispositivo. Uma dessas tarefas é a raspagem da Web. A concorrência permite que um raspador emita várias solicitações ao mesmo tempo, em vez de esperar que uma seja atendida antes que a próxima seja emitida. Neste caso, a produtividade aumenta à medida que o tempo necessário para que os pedidos sejam concluídos diminui.
Importante notar que, às vezes, a concorrência pode ser definida como o que é chamado de - paralelismo defeituoso, mas nos blocos a seguir vamos romper com isso.
Os threads são os principais elementos constitutivos dos sistemas de recolha de dados em execução simultânea. Para compreender a extensão total do funcionamento das threads, é necessário analisar atentamente a definição de um processo. Um processo de trabalho contém uma série de actividades, cada uma das quais é realizada por uma única thread. Assim, um thread pode ser considerado como a unidade indivisível mais pequena do trabalho de um computador.
Numa perspetiva de concorrência, muitos segmentos podem ser executados aproximadamente ao mesmo tempo. Isto permite que o sistema tire o máximo partido dos recursos disponíveis dos processadores.
As linguagens de programação e os sistemas operativos modernos permitem gerir os segmentos: criá-los, suspendê-los e sincronizá-los. Os threads são especialmente preferidos em tarefas que envolvem a análise de dados, porque permitem lidar com vários fluxos de dados em simultâneo, o que reduz os tempos de espera e aumenta a eficiência.
Em termos práticos, a concorrência é uma componente de quase todos os sistemas de software actuais. Esta caraterística torna possível executar um grande número de processos com recursos reduzidos. Um exemplo clássico de concorrência é o atendimento de vários pedidos ao mesmo tempo no servidor Web.
Para ilustrar, vamos supor um mercado em linha onde um utilizador pode fazer encomendas, procurar produtos e verificar o estado das suas encomendas, tudo ao mesmo tempo. O servidor não pode literalmente tratar todos os pedidos ao mesmo tempo devido ao número limitado de processadores. No entanto, é capaz de executar a concorrência, o que lhe permite partilhar o tempo com as tarefas, alternando entre os pedidos dos utilizadores. Por exemplo, um utilizador pode fazer uma encomenda e outro utilizador pode pedir informações sobre o produto. O servidor pode executar estes dois processos de forma cíclica, em vez de esperar que o primeiro termine para iniciar o segundo. Por isso, a capacidade de resposta dos sistemas é muito melhorada e o sistema parece estar a executar tarefas em paralelo.
Um exemplo diferente no que diz respeito à recolha de dados da Web é se um utilizador quiser recolher dados de 100 páginas Web. Sem concorrência, o descarregamento segue um ciclo de espera, pedido e processo, que levará um tempo desnecessariamente longo. No entanto, com a concorrência, o utilizador pode enviar, digamos, 10 pedidos de uma só vez e, em seguida, enquanto as primeiras páginas estão a ser carregadas, já processa os dados que já foram recebidos. Em comparação com a espera pelo carregamento de cada página individual, isto poupa muito mais tempo.
Quando se trata de análise da Web, o emprego da concorrência pode aumentar a eficiência. Por exemplo, um raspador da Web pode utilizar a concorrência para obter dados de várias páginas Web ao mesmo tempo, reduzindo assim o tempo total necessário para recolher informações. Seguem-se alguns pontos sobre a forma como a concorrência ajuda a reduzir o tempo dos processos:
Além disso, a concorrência é aplicada ao processamento de informações de forma a não bloquear o segmento de execução principal, para que o computador possa ser utilizado sem qualquer diminuição do desempenho.
A definição abreviada de paralelismo refere-se à realização simultânea de um conjunto específico de processos computacionais em diferentes recursos computacionais. No paralelismo, os recursos são utilizados ao mesmo tempo, ao contrário da concorrência, em que os recursos são apenas alternados e ocorre uma simulação de execução simultânea. Por outras palavras, o paralelismo é o processamento simultâneo de dados em vários núcleos de CPU ou mesmo em vários servidores.
Vamos mais longe e consideremos: porquê utilizar o paralelismo. Os benefícios incluem os seguintes:
Os modernos processadores multi-core permitem uma divisão de tarefas para execução paralela independente e simultânea.
A execução paralela de tarefas reduz o tempo de computação e envolve a divisão de um cálculo em partes. Os processos do sistema podem ser executados de forma não síncrona, uma vez que o volume de trabalho é dividido por diferentes processadores e núcleos.
No paralelismo moderno, um exemplo pode ser observado no processamento de imagens. Suponhamos que um filtro específico tem de ser aplicado a uma imagem de alta resolução. Se tivéssemos de processar cada pixel, um a um, seria necessário um tempo excessivo para o terminar. No entanto, com a utilização do paralelismo, a imagem pode ser dividida em várias partes e cada processador faz a sua parte ao mesmo tempo. Isto permite aumentar ao máximo a velocidade da aplicação e melhorar o seu desempenho. Também é sabido que esta abordagem é utilizada no processamento de informação de IA, bem como em jogos de vídeo.
Ao desenvolver sistemas de software, é necessário aprender o momento específico de utilizar a concorrência em oposição ao paralelismo e compreender a relação entre estas técnicas e o desempenho. Aqui estão os dois pontos mais importantes a serem compreendidos:
A seguir, uma tabela que ilustra visualmente os pontos de diferença entre paralelismo e concorrência:
Critério | Paralelismo | Concorrência |
---|---|---|
Execução de tarefas | Simultâneo | Alternância |
Gestão de recursos | Vários processadores/núcleos | Um processador |
Desempenho | Acelera a execução | Melhora a capacidade de resposta |
Tipo de tarefa | Computação intensiva | I/O operações |
Em suma, cada abordagem tem as suas vantagens, exigindo uma seleção baseada nas necessidades específicas do sistema. Com uma capacidade de computação limitada, a concorrência ajuda a utilizar os recursos de forma eficiente, enquanto o paralelismo ajuda a acelerar as operações, segmentando a carga em vários processadores.
Embora a concorrência e o paralelismo possam ser estudados como fenómenos separados, a sua fusão é muitas vezes extraordinariamente produtiva. Em sistemas com aplicações complexas que necessitam de uma elevada capacidade de resposta, a sua combinação é muito importante, uma vez que melhora consideravelmente a eficiência global. Uma abordagem combinada permite uma utilização óptima dos recursos informáticos e acelera o processamento de dados.
Um exemplo de tal abordagem seria o processamento de um grande conjunto de dados. Neste caso, o paralelismo trata da divisão de tarefas em vários processadores, enquanto a concorrência controla os processos em cada processador.
As vantagens da combinação destes métodos incluem, mas não se limitam a:
A combinação destas técnicas permite a conceção de sistemas muito poderosos e escaláveis no domínio do processamento de grandes informações e de tarefas de computação pesadas.
Ao extrair informações de sítios Web, são as actividades do utilizador que determinam se este prefere a concorrência ou o paralelismo, ou, na verdade, nenhum dos dois. Na realidade, uma abordagem concorrente só é prática quando há um tempo ocioso prolongado na emissão de pedidos, ou quando a raspagem da Web não é muito intensiva em termos de CPU. O oposto é verdadeiro para o paralelismo, que é útil para situações em que há um alto grau de processamento pós-visita do conteúdo da página, ou há uma sobrecarga significativa do processador devido à análise.
Pode ser seguida uma combinação de estratégias, que, de forma ideal, seria a implementação da concorrência no envio de pedidos assíncronos e o paralelismo no seu processamento. Esta última tem uma vantagem principal: é possível visitar páginas exaustivamente e processar as informações com uma intensidade igualmente elevada.
Este artigo analisou em pormenor a concorrência e o paralelismo, descrevendo como cada um deles pode funcionar em diferentes circunstâncias e situações. A concorrência refere-se a um conjunto de técnicas para gerir a execução de actividades, alternando entre elas para maximizar a eficiência da utilização do tempo disponível do processador. Paralelismo significa fazer mais do que uma coisa ao mesmo tempo, por exemplo, utilizando vários processadores ou vários núcleos de um único processador. A principal caraterística distintiva destas estratégias resulta do facto de, na concorrência, alguns recursos estarem inactivos enquanto são gastos, ao passo que o paralelismo optimiza os recursos disponíveis redistribuindo-os.
Na nossa opinião, a melhor escolha de abordagem depende das peculiaridades do problema: a concorrência é preferível para tarefas assíncronas, enquanto o paralelismo é mais adequado para cálculos complexos. Em algumas situações, a combinação dos dois produz o melhor resultado.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Comentários: 0