INE5645 – PROGRAMAÇÃO PARALELA E DISTRIBUIDA - LISTA DE EXERCÍCIOS 1
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 é)
Comunicação: (explique o que é)

2. Caracterize o que é um monitor; o que são locks; e o que é um semáforo.

3. Exclusão Mútua: Programação Concorrente serve para resolver o problema
da exclusão mútua entre processos/threads, para o qual você estudou três mecanismos importantes: semáforos, monitores e locks. Qual o seu sentimento com relação ao uso destes mecanismos, ao realizar as três tarefas práticas, no que tange a vantagem/desvantagem de um mecanismo sobre o outro, ou características de cada mecanismo que mostre as vantagens do uso de um em relação ao outro.

4. Descreva o que é o problema da exclusão mútua ?

5. Esquematize usando pseudo-código a forma de solução para exclusão mútua.

6. O que starvation ?

7. Exclusão mútua com semáforos:

S: Semaphore := 1;

Task P1 is

Begin

Loop

Non_Critical_Section_1;
wait(S);
Critical_Section_1;
signal(S);
end loop;

End P1;

Task P2 is

Begin

Loop

Non_Critical_Section_2;
wait(S);
Critical_Section_2;
signal(S);
end loop;

End P2;

Para o pseudo-código ilustrando o problema da exclusão mútua com semáforos. Estude a seguindo as páginas 48 e 49 do capítulo de semáforos postado na página (Cap. 4 Semaphoree, M. Bem-Ari, Principles of Concurrent and Distributed Programming) as provas que:

A propriedade da exclusão mútua é satisfeita.

O programa não tem deadlock.

O programa não apresenta nenhum starvation.

Sugestão: inicie pela página 48, seção 4.2 sobre propriedades invariantes de semáforos. Examine o códig. Estude os três teoremas da página 49.

8. Emule um semáforo S usando a construção de um monitor, considerando as operações Semaforo-Wait e Semaforo_Signal. Use pseudo-linguagem, definindo uma variável C, tipo condition.