Programação concorrente
Revisão para Prova
1- Quem propôs usar uma variável inteira para contar o número de sinas de acordar e salvá-lo para uso futuro com o objetivo de resolver o problema de sincronização entre processos? Resposta: O conceito escrito acima, refere-se ao semáforo, algoritmo proposto por Dijkstra em 1965 (Aula 6 – Slide 3). 2- Em Programação Concorrente, o que vem a ser a Região Crítica? (0,5) Resposta: Parte do programa onde os recursos compartilhados estão sendo lidos ou atualizados e cujo processamento pode levar à ocorrência de condições de corrida (Aula 6 – Slide 4). 3- Em Programação Concorrente, o que vem a ser Condições de Corrida? (0,5) Resposta: É quando o resultado do processamento depende da ordem de execução entre os processos (ou threads) devido ao compartilhamento de recursos. (Aula 6 – Slide 4). 4- O que são Threads? Resposta: É uma das maneiras utilizadas por um processo para dividir a si mesmo em duas ou mais tarefas que podem ser executadas simultaneamente, em geral, em arquiteturas multiprocessadas (Aula 4 – Slide 3). 5- Quais são os tipos de suporte a Threads? Defina e dando as características de cada uma delas. Resposta: Kernel-Level Thread (KLT) – suporte provido pelo próprio sistema operacional (SO) O núcleo gerencia threads (incluindo criação e escalonamento) e o processo mantêm a Informação de contexto; o chaveamento de threads requer a intervenção do núcleo; se uma thread bloqueia, o núcleo pode executar outra thread do mesmo processo e o núcleo pode escalonar várias threads de um mesmo processo em processadores diferentes. User-Level Thread (ULT) – implementada através de uma biblioteca de uma determinada linguagem. Todo o gerenciamento é feito pela aplicação; o núcleo não conhece a existência de threads; o chaveamento não requer a intervenção do núcleo (execução em modo privilegiado); o escalonamento é específico da aplicação não passa pelo Kernel; chamadas de sistema normalmente bloqueiam o