Prévia do material em texto
Aula 09 – Introdução à programação paralela e distribuída 1. 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: Resposta incorreta. A. a programação paralela se baseia apenas em processos. Resposta incorreta. B. a programação distribuída se baseia apenas em threads. Resposta incorreta. C. a programação paralela se baseia apenas em threads. Resposta incorreta. D. a programação distribuída se baseia em threads e processos. Você acertou! E. a programação distribuída se baseia em processos. Por ser distribuída, ou seja, consistir de máquinas com memória distribuída, a programação distribuída se dá unicamente por meio de processos. Já a programação paralela, que ocorre em memória compartilhada, pode ser feita com processos e com threads. 2. A programação paralela e distribuída tem como parte fundamental para alcançar o paralelismo a forma como os processos ou threads vão se comunicar. Portanto, a comunicação é parte fundamental da programação paralela e distribuída. Com relação à comunicação, é correto afirmar que: Resposta incorreta. A. a comunicação de programas paralelos ocorre apenas pela troca de mensagens. Resposta incorreta. B. a comunicação de programas paralelos ocorre apenas pela memória compartilhada. Resposta incorreta. C. a comunicação de programas distribuídos ocorre apenas pela memória compartilhada. Resposta incorreta. D. a comunicação de programas distribuídos ocorre pela memória compartilhada e pela troca de mensagens. Você acertou! E. a comunicação de programas distribuídos ocorre pela troca de mensagens. A comunicação de programas distribuídos ocorre apenas pela troca de mensagens, pois são máquinas distribuídas, cada uma com sua própria memória local. Já programas paralelos, por estarem numa única máquina com memória compartilhada, podem se comunicar pela troca de mensagens ou por memória compartilhada. 3. A programação paralela tem uma série de plataformas para sua implementação em diversas linguagens. Qual das alternativas a seguir se refere a uma plataforma exclusiva de programação paralela? Resposta incorreta. A. PVM. Resposta incorreta. B. MPI. Você acertou! C. OpenMP. OpenMP é uma plataforma construída especificamente para programação paralela em arquiteturas de memória compartilhada. PVM é uma biblioteca utilizada para trocar mensagens entre processos num ambiente distribuído, assim como o MPI, um padrão definido pela academia e indústria para uma interface de programação. Já Spark e Hadoop são plataformas distribuídas para o processamento paralelo de grandes volumes de dados. Resposta incorreta. D. Spark. Resposta incorreta. E. Hadoop. 4. A programação paralela e distribuída é feita principalmente por dois conceitos básicos: processos e threads. Sabe-se que processos são mais pesados que threads. Por que isso acontece? Resposta incorreta. A. Processos realizam um número maior de comunicações. Resposta incorreta. B. Threads se comunicam por memória compartilhada, que é rápida. Resposta incorreta. C. Processos se comunicam apenas por mensagens, portanto são mais lentos. Resposta incorreta. D. Threads alocam menos memória do que processos. Você acertou! E. Threads vivem dentro de um processo já existente e têm acesso à sua memória. Threads são mais leves do que processos, pois pertencem a um processo já inicializado e já têm um endereçamento de memória alocado para ele. Essas threads têm acesso ao endereçamento de memória de forma compartilhada, por isso são mais leves, pois inicializam muito mais rápido. Threads não são mais rápidas por alocar menos memória; na verdade não alocam memória, e sim processos. Processos não se comunicam apenas pela troca de mensagens. Threads se comunicam pela memória compartilhada, mas não é esse o motivo que as deixa mais leves. Processos não necessariamente realizam mais comunicações do que threads. 5. Em programação paralela, o principal meio de comunicação entre threads/processos é a memória compartilhada. Qual das técnicas a seguir pode ser utilizada para controlar a concorrência em memória compartilhada? Resposta incorreta. A. Particionamento de dados. Resposta incorreta. B. Particionamento de tarefas. Resposta incorreta. C. Heartbeats. Você acertou! D. Locks. Na programação paralela com memória compartilhada, a técnica utilizada para controlar a concorrência são os locks, que controlam o acesso a recursos, evitando que dois processos/threads acessem um recurso ao mesmo tempo. A troca de mensagens se relaciona a outra técnica de comunicação entre processos. Heartbeats são uma técnica de comunicação em sistemas distribuídos. Particionamento de dados e tarefas diz respeito à forma como o paralelismo vai ocorrer. Resposta incorreta. E. Troca de mensagens.