A programação paralela e distribuída permite tirar proveito do paralelismo oferecido pelas arquiteturas onde elas se executam. A diferença da programação paralela e da distribuída está na arquitetura onde é executada. Sobre essa afirmação, é correto afirmar que:
Questão
A programação paralela e distribuída permite tirar proveito do paralelismo oferecido pelas arquiteturas onde elas se executam. A diferença da programação paralela e da distribuída está na arquitetura onde é executada. Sobre essa afirmação, é correto afirmar que:
Alternativas
a) a programação paralela se baseia apenas em processos.
b) a programação distribuída se baseia apenas em threads.
c) a programação paralela se baseia apenas em threads.
d) a programação distribuída se baseia em threads e processos.
e) a programação distribuída se baseia em processos.
Explicação
Programação paralela e distribuída exploram paralelismo, mas diferem principalmente pela arquitetura:
- Programação paralela
- Ocorre tipicamente em uma arquitetura com memória compartilhada (ex.: múltiplos núcleos no mesmo computador).
- Nesse contexto, é muito comum o uso de threads (linhas de execução dentro do mesmo processo), pois compartilham o mesmo espaço de endereçamento e facilitam a comunicação via memória.
- Porém, não é correto dizer que paralela “se baseia apenas” em threads ou “apenas” em processos, porque pode haver paralelismo também com múltiplos processos (ex.: MPI no mesmo nó, multiprocessamento etc.). Logo, alternativas que restringem “apenas” para paralela tendem a estar erradas.
- Programação distribuída
- Ocorre em uma arquitetura com memória distribuída (ex.: várias máquinas/nós conectados por rede).
- Como cada nó possui seu próprio espaço de memória, a unidade natural de execução/comunicação é o processo (cada processo em uma máquina ou nó, comunicando-se por troca de mensagens/rede).
- Embora dentro de cada nó possam existir threads, o conceito clássico de computação distribuída se fundamenta em processos cooperando e se comunicando.
Analisando as alternativas:
- (a), (c): paralela “apenas” em processos/threads → restritivas demais.
- (b): distribuída “apenas” em threads → incorreta, pois threads pressupõem memória compartilhada.
- (d): distribuída “em threads e processos” → pode ocorrer na prática (híbrido), mas a base típica/definição cobrada em provas é processos (comunicação entre processos em nós distintos).
- (e): distribuída se baseia em processos → corresponde à caracterização mais correta em provas.
Alternativa correta: (e).