Implementando Programas que Usam Vários Processadores
Nos últimos anos houve um grande avanço na tecnologia de fabricação de dispositivos semicondutores, isso possibilitou a redução no tamanho físico e na melhoria da performance dos computadores. Atualmente essa diminuição não está ocorrendo na mesma taxa dos últimos dez anos, e, conseqüentemente, a performance computacional estaria chegando a um ponto de estagnação, pois como é sabido o desempenho dos processadores crescem com o aumento da densidade de transistores, ou seja, ele aumenta com a redução no tamanho dos dispositivos. Uma possibilidade para continuar o aumento na performance dos microcomputadores foi o inicio da implementação de computadores com vários núcleos, os chamados “multicore”. Hoje se encontra à disposição dos consumidores microcomputadores de vários processadores a um preço acessível.
Diante desse panorama é natural que tenhamos interesse em máquinas que tenham o máximo de “core” possível, porém existe um “gargalo” nessa questão, porque a maioria dos aplicativos são feitos para rodarem em apenas um processo, ou seja, os aplicativos usam apenas um processador enquanto os outros processadores ficam ociosos, ou rodam processos de outros aplicativos. Essa questão é muito mais evidente quando o programa que está sendo executado foi implementado pelo próprio usuário. É nesse instante que se vê a necessidade de construir programas que “rodem” em vários processadores, mas isso implica uma série de questões complicadas que serão abordadas a seguir. (mais…)
