OS SISTEMAS OPERACIONAIS
Por: barcelos.ibn • 26/11/2017 • Exam • 469 Palavras (2 Páginas) • 597 Visualizações
ATIVIDADE DA SEMANA 03
Exercício 1 (3 pontos)
Explique o grande problema da solução de exclusão mútua de desabilitar as interrupções. Apesar dos problemas existentes com esta solução, explique o porquê de ela ser considerada útil em sistemas uniprocessados.
O grande problema de desabilitar as interrupções é que um processo pode esquecer de reabilitar as interrupções e nunca ser finalizado.
Para um sistema uniprocessado esta solução de exclusão mútua pode ser considerada útil, pois atende grande parte dos pre-requisitos para programação concorrente.
Exercício 2 (2 pontos)
Explique como a solução da Passagem de Mensagem resolve o problema da memória compartilhada.
Quando se utiliza memória compartilhada deve-se garantir que dois processos não gravem dados no mesmo local simultaneamente. Assim, a solução da passagem de mensagem foi desenvolvida especificamente para se utilizar a exclusão mutua onde temos processadores compartilhando o mesmo espaço de memória. Para isso, os processos enviam e recebem mensagens ao invés de ler e escrever em variáveis compartilhadas.
send(destino, &mensagem):Primitiva usada para o envio de mensagens.
receive(fonte, &mensagem): Primitiva usada para o recebimento de mensagens.
Exercício 3 (2 pontos)
Por que a solução usando monitores é bastante usada pelos desenvolvedores de softwares paralelos e/ou concorrentes?
Porque se trata de uma primitiva de alto nível para sincronizar processos cuja utilização é muito fácil podendo ser implementado em JAVA.
Exercício 4 (3 pontos)
Considere a solução a seguir para o problema da exclusão mútua envolvendo dois processos P0 e P1. Presuma que a variável turn seja inicializada para 0. O código do processo P0 é apresentado a seguir.
/*Outro código*/
while (turn != 0) {} /* Não fazer nada e esperar */
Critical Section /* ... */
turn = 0;
/* Outro código */
Para o processo P1, substitua 0 por 1 no código anterior. Determine se a solução atende a todas as condições exigidas para uma solução de exclusão mútua.
Substituindo 0 por 1 no processo P1 teremos:
/*Outro código*/
while (turn != 1) {} /* Não fazer nada e esperar */
Critical Section /* ... */
turn = 1;
/* Outro código */
Numa primeira análise vemos que o processo P0 entra na região crítica quando a variável turn é 0. Já o processo P1 entra na região crítica quando a variável turn é 1.
...