PROGRAMAÇÃO PARALELA
1. Na abstração em programação concorrente, cada processo ou thread é considerada estar operando sobre seu próprio processador, executando seu próprio programa. Somente temos que considerar a possível interação em dois casos:
Contenção: (explicar o que é) Dois processos/threads competem para o mesmo recurso: recursos de computação em geral, ou acesso a uma particular célula de memória ou canal em particular.
Comunicação: (explique o que é) Dois processos/threads podem necessitar se comunicar causando a informação ser passada de um para o outro. Processo/threads podem se sincronizar (concordam que certo evento ocorreu) para se comunicarem.
2. Descreva o que é o problema da exclusão mútua ?
N threads estão executando sobre um loop infinito uma sequência de instruções que podem ser divididas em subseqüências: a seção crítica e a seção não-crítica. O programa deve satisfazer a propriedade de exclusão mútua: instruções de uma seção critica não devem ser intercaladas.
A forma de solução para exclusão mútua:
Loop
Seção Não-Crítica; Pre-Protocolo; instruções adicionais que são executadas por threads desejando entrar sua seção crítica. Seção Crítica; Pos-Protocolo; instruções adicionais que são executadas por threads desejando deixar sua seção crítica. Seção Não-Crítica;
End loop;
Uma thread pode parar em sua seção não-crítica, mas não pode parar durante a execuação de seus protocolos e seção crítica. Se uma thread parar em sua seção não-crítica, ela não deve interferir com outras threads.
O programa concorrente não deve ter deadlock. Se alguma thread está tentando entrar em sua seção crítica, então uma delas deve eventualmente (num tempo finito, mas não especificado) ser bem sucedida.
Não deve haver nenhum starvation de uma das threads. Se uma thread indica sua