Em paralelo, na computação como na vida...

Os nossos afazeres diários costumam incluir múltiplas tarefas e atividades. Algumas exigem dedicação exclusiva, como sucedeu com a elaboração deste texto. Outras podem ser realizadas em simultâneo, como por exemplo ouvir música enquanto se faz uma caminhada.
As tarefas também se distinguem pelo facto de a sua execução ser ininterrupta ou intercalada com outras. Há tarefas que, uma vez iniciadas, têm de ser realizadas até ao fim, sem interrupção, sob pena de serem ineficazes ou causarem grave prejuízo; por exemplo, não se interrompe o combate a um incêndio antes de se considerar extinto. Outras podem ser suspensas e depois retomadas (podendo a suspensão e a retoma repetir-se várias vezes); é o caso de alguém que interrompe e retoma a redação de um documento após atender um telefonema.


Ora, é possível fazer uma analogia bastante direta entre estas situações e a forma como os computadores executam as suas tarefas, mais conhecidas por programas.


Um computador é formado por muitos componentes mas, em última instância, os programas são executados na chamada Unidade Central de Processamento (CPU), mais especificamente numa subunidade denominada por Núcleo de Execução.

Assim, e de forma simplista, se um computador tiver apenas um destes Núcleos então, num dado instante, poderá executar apenas um programa. Portanto, um computador necessita de pelo menos dois Núcleos para poder executar vários programas em simultâneo (execução em paralelo).


Todavia, mesmo com um só Núcleo, é possível fornecer a ilusão de uma execução em paralelo (pseudo-paralelismo). Como um Núcleo opera a um ritmo extremamente elevado à escala humana (da ordem dos biliões de instruções elementares por segundo), então pode executar vários programas alternadamente, por pequeníssimos períodos de tempo de cada vez. Em termos macroscópicos, a alternância rápida entre diferentes programas transmite aos utilizadores do sistema a ilusão de que todos os programas progridem em simultâneo. Nesta situação, vários programas competem (concorrem) entre si pela utilização da mesma CPU (execução concorrente).


Atualmente, a maioria dos sistemas computacionais orientados ao grande público (smartphones, tablets, consolas de jogos, computadores portáteis e de secretária) dispõem de dois ou mais Núcleos e os sistemas operativos instalados nesses equipamentos (Windows, Linux, MacOS, Android, iOS, etc.) suportam a execução de aplicações capazes de tirar partido das capacidades de computação paralela desses sistemas. Assistimos, portanto, à massificação deste paradigma de computação, se bem que há já várias décadas que cientistas, académicos e corporações exploram agregados (clusters) de sistemas de alto desempenho, interligados em rede, para atacar problemas particularmente exigentes em capacidade de cálculo, volume de dados, ou ambos (o sítio www.top500.org lista os clusters mais poderosos da atualidade).

José Rufino (Instituto Politécnico de Bragança) - 2013-03-23 12:23:11