Lista 2 de sistemas operacionais
1) Considere uma aplicação que utilize uma matriz na memória principal para a comunicação entre vários processos concorrentes. Que tipo de problema pode ocorrer quando dois ou mais processos acessam uma mesma posição da matriz?
Pode ocorrer o problema da condição de corrida, podendo causar inconsistência dos dados.
2) Em uma aplicação que implementa concorrência utilizando múltiplas threads é possível que duas threads distintas acessem uma mesma variável em memória. Que tipo de problema pode ocorrer quando duas ou mais threads acessam uma mesma variável? Por que tais problemas podem ocorrer?
3) O que são condições de corrida (race conditions)?
È a situação em que dois ou mais processos querem partilhar um recurso (escrever e ler dados compartilhados) e o resultado final depende de quem executou quando (ordem de escalonamento).
4) O que é a região crítica (ou seção crítica)?
É a parte do programa em que a memória é compartilhada é acessada.
5) O que é exclusão mútua e como ela pode ser implementada?
Quando apenas um usuário executa o recurso, os demais são excluídos, evitando as condições de corrida, e a inconsistência dos dados.
6) Como seria possível resolver os problemas decorrentes do compartilhamento da matriz, apresentados no exercício 1, utilizando o conceito de exclusão mútua?
Utilizando semáfaros, travando os recursos enquanto esse está sendo utilizado.
7) Qual o problema com a solução que desabilita as interrupções para implementar a exclusão mútua? Em que situações o uso desta solução é adequado?
Desabilitando as interrupções, algum usuário pode monopolizar o uso da CPU. Adequados para processos do sist operacional
8) Quais as vantagens dos algoritmos de exclusão mútua usando espera bloqueada em relação aos algoritmos usando espera ocupada?
Com espera bloqueada, não usa a CPU enquanto o recurso não estiver livre.
Com espera ocupada, utiliza a CPU, tentando utilizar o recurso enquanto está