Buscar

Aula 8 - Questionário SO

Prévia do material em texto

8.1. O que são aplicações concorrentes?
-São aplicações que trabalham em uma mesma tarefa cooperando entre si, mas concorrendo pelos mesmos recursos (arquivos, registros, dispositivos de E/S, áreas de memória).
8.2. Explique o que são race conditions com suas palavras.
- Race Condition é uma falha num sistema ou processo que ocorre quando diferentes processos ou threads em execução dependem de um estado compartilhado, e o resultado depende do escalonamento dos processos. Por exemplo, supondo que duas threads estejam utilizando uma variável global X com valor 0 para a realização de uma operação, e ambas queiram incrementar em 1 o valor dessa variável antes da utilização da mesma, a variável X passará a ter o valor igual a 2, e não 1 conforme o esperado, fazendo com que o resultado da operação seja errado.
8.3. O que fazem as chamadas fork e join?
-Quando um programa A está sendo executado e encontra o comando FORK é criado um novo processo para execução de um programa B, concorrentemente ao programa A. O comando JOIN permite que o programa A se sincronize com o programa B, dando continuidade no processamento do programa A somente após ter terminado a execução do programa B.
8.4. O que acontece com o código que fica entre os comandos PARBEGIN e PAREND? Forneça um exemplo.
-O comando PARBEGIN específica que a sequência de comandos seja executada concorrentemente em uma ordem imprevisível, através da criação de um processo para cada comando. O comando PAREND define um ponto de sincronização, onde o processamento só continuará quando todos os processos ou threads criados já tiverem terminado suas execuções. Um exemplo é a expressão “X := SQRT (1024) + (35.4 * 0.23) – (302/7)”, onde o cálculo final de X só será realizado quando todas as variáveis dentro da estrutura tiverem sido calculadas, funcionando da seguinte forma:
PROGRAM Expressao;
	Var X, Temp1, Temp2, Temp3 : REAL;
BEGIN
	PARBEGIN
		Temp1 := SQRT (1024);
		Temp2 := 35.4 * 0.23;
		Temp3 := 302/7
	PAREND;
	X := Temp1 + Temp2 - Temp3;
WRITELINE := ‘X = ‘, X);
END.
8.5. O que é exclusão mútua?
-É uma técnica usada em programação concorrente para evitar que dois processos ou threads tenham acesso simultaneamente a um recurso compartilhado.
8.6. O que é a região crítica?
-É uma área de código de um algoritmo que acessa um recurso compartilhado que não pode ser acedido concorrentemente por mais de uma linha de execução, tendo como objetivo tornar Atômica a operação sobre o recurso compartilhado.
8.7. O que é starvation, ou “espera indefinida”, no contexto de exclusão mútua?
-É uma situação que ocorre quando dois ou mais processos esperam por um mesmo recurso alocado. Caso o sistema escolha o processo aleatoriamente quando o recurso é liberado, um processo pode nunca ser escolhido. Starvation ocorre quando um processo nunca consegue executar sua região crítica e acessar o recurso compartilhado
8.8. Explique com suas palavras os dois mecanismos de exclusão mútua implementados em hardware.
Desabilitar Interrupções: um processador sinaliza aos demais que as interrupções devem ser habilitadas ou desabilitadas. Ineficiente em arquiteturas de múltiplos processadores devido ao tempo de propagação da sinalização entre os processadores. Pode comprometer a multiprogramação, tendo em vista que a concorrência entre processos tem como base o uso de interrupções.
Instrução test-and-set: Armazena um valor em uma variável lógica sinalizando se o recurso está em uso ou não. Através de uma instrução de máquina, o processador pode ler o conteúdo dessa variável, e caso o valor de bloqueio seja falso, o processo poderá alterá-lo para ter acesso a um recurso de forma exclusiva. Após o termino do processo, o valor da variável deve ser alterado para falso novamente para que o recurso fique livre novamente, podendo ser utilizado por outros processos.

Continue navegando