Buscar

AD1_2021-1_Gabarito_SistemasOperacionais

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Curso de Tecnologia em Sistemas de Computação
Disciplina de Sistemas Operacionais
Professores: Claudio Micelli de Farias e Diego L. C. Dutra
Assistente: Alexandre H. L. Porto e Davi Brilhante
AD1 - Primeiro Semestre de 2021
Atenção: Cada aluno é responsável por redigir suas próprias respostas.
Provas iguais umas às outras terão suas notas diminuídas. As
diminuições nas notas ocorrerão em proporção à similaridade entre as
respostas. Exemplo: Três alunos que respondam identicamente a uma
mesma questão terão, cada um, 1/3 dos pontos daquela questão.
Nome -
Assinatura - _______________________________________________
1. (2,0) Em um ambiente computacional monoprocessado, suponha
que um programa A, que precisa executar no processador por 8x
ms, faça uma operação de E/S, com duração de a ms, após
executar por 1/4 do seu tempo de execução. Suponha ainda que
um programa B, no mesmo ambiente computacional, que precisa
executar no processador por 10x ms, faça uma operação de E/S,
com duração de b ms, após executar por 3/5 do seu tempo de
execução. Considere que a multiprogramação seja usada
somente para evitar a ociosidade do processador quando
operações de E/S são feitas. Qual será a ociosidade do
processador se A e B alternarem as suas execuções e se, mesmo
com o uso da multiprogramação, existir ociosidade antes de cada
programa terminar a sua execução? Justifique a sua resposta.
Resp.: Inicialmente vamos mostrar como será o fluxo de
execução dos programas A e B. Pelo enunciado, vemos que o
programa A executará por 2x ms antes de fazer a sua operação
de E/S com duração de a ms, e por mais 6x ms após o término
dessa operação. Já o programa B executará por 6x ms antes de
fazer a sua operação de E/S com duração de b ms, e por mais 4x
ms depois de fazer essa operação. A figura a seguir ilustra esse
comportamento de A e de B.
2x ms a ms 6x ms
A E/S A
6x ms b ms 4x ms
B E/S B
Primeiramente, vamos lembrar que o enunciado diz que os
programas A e B precisam alternar as suas execuções no
processador, e que deve existir ociosidade do processador antes
de cada programa terminar a sua execução. Como a ordem inicial
de execução dos programas não foi dada, precisaremos
considerar dois casos, A iniciar antes de B e B iniciar antes de A.
Se A foi o primeiro a iniciar, então a primeira parte da execução de
B poderá ser usada para evitar parte da ociosidade durante a
operação de E/S feita por A, e a segunda parte da execução de A
poderá ser usada para evitar parte da ociosidade durante a
operação de E/S feita por B. Logo, o tempo 6x da primeira parte
da execução de B deverá ser menor do que o tempo a da
operação de E/S de A, para garantir que exista ociosidade antes
de A terminar a sua execução. Além disso, o tempo 6x da
segunda parte da execução de A deverá ser menor do que b − (a
− 6x), que é o tempo restante da operação de E/S de B (note que,
por (a − 6x) ms, as operações de E/S de A e de B serão feitas de
modo concorrente), para garantir que exista ociosidade antes de B
terminar a sua execução. Nessa primeira ordem, mostrada na
figura a seguir, o tempo de ociosidade do processador será de a −
6x + b − a = (b − 6x) ms.
2x ms 6x ms a-6x ms 6x ms b -a 4x ms
A B Ocioso A Ocioso B
|---------------a-------------|
|----------------------b-------------------|
Agora, quando B for o primeiro a iniciar, então a primeira parte da
execução de A poderá ser usada para evitar parte da ociosidade
durante a operação de E/S feita por B, e a segunda parte da
execução de B poderá ser usada para evitar parte da ociosidade
durante a operação de E/S feita por A. Logo, o tempo 2x da
primeira parte da execução de A deverá ser menor do que tempo
b da operação de E/S de B, para garantir que exista ociosidade
antes de B terminar a sua execução. Além disso, o tempo 4x da
segunda parte da execução de B deverá ser menor do que a − (b
− 2x), que é o tempo restante da operação de E/S de A (agora
devido a as operações serem feitas concorrentemente por (b − 2x)
ms), para garantir que exista ociosidade antes de A terminar a sua
execução. Nessa segunda ordem, mostrada na figura a seguir, o
tempo de ociosidade será de b − 2 x + a − b − 2x = (a − 4x) ms.
6x ms 2x ms b-2x ms 4x ms a-b-2xms 6x ms
B A Ocioso B Ocioso A
|---------------b-------------|
|----------------------a-------------------|
2. (1,0) Considere a hierarquia de diretórios dada a seguir, e
suponha que você está no diretório /usr/files/. Com relação a
esse diretório, existirá algo no diretório cujo caminho relativo é
../../etc/../home/docs/../../usr/exec/../local/bin/../../../home/files/,
supondo que “..” indica o diretório pai do diretório atual durante o
percurso? Qual será o caminho relativo mais sucinto ao mesmo
diretório final a partir do mesmo diretório inicial? E qual será o
caminho absoluto ao mesmo diretório final?
Resp.:
Caminho mais sucinto: ../../home/files/
Caminho absoluto: /home/files/
3. (2,0) Suponha que o sistema operacional esteja executando
diretamente sobre o hardware de um computador onde cada
operação de E/S demore 0,75 ms. Suponha ainda que um
processo tenha executado por 15.250 ms e que, durante a sua
execução, tenha feito 3.000 operações de E/S. Se o sistema
operacional agora executar sobre uma máquina virtual que reduza
a velocidade do processador em 40% e a velocidade das
operações de E/S em x%, e se além disso forem feitas somente a
metade das operações de E/S feitas sobre o hardware, qual será
o valor de x se o tempo de execução do processo na máquina
virtual for de 27.250 ms? Justifique a sua resposta.
Resp.: Como o tempo total de execução é de 15.250 ms, e como
o processo faz 3.000 operações de E/S com duração de 0,75 ms
cada, então 2.250 ms dos 15.250 ms são gastos com operações
de E/S quando a execução ocorre sobre o hardware do
computador. Logo, o processo executa no processador desse
hardware por 13.000 ms (15.250 − 2.250). Note que a velocidade
do processador ser reduzida em 40% significa que a velocidade
do processador virtual é 60% da velocidade do processador real, o
que por sua vez significa que, durante os 13.000 ms, somente
60% das instruções poderão ser executadas. O tempo necessário
para executar 100% das instruções sobre a máquina virtual será
de 13000/0,6 ms. Agora, como o processo fez a metade das
operações de E/S, ou seja, 1.500 operações, na máquina virtual, e
como o novo tempo de cada operação de E/S é de
0,75/((100-x)/100) = 75/(100-x) ms (já que, similarmente à redução
da velocidade do processador, a redução da velocidade de cada
operação de E/S em x% significa que no mesmo tempo podemos,
na máquina virtual, executar somente (100 − x)% das operações
de E/S originais), então 1500 × 75/(100-x) = 112500/(100-x) ms
dos 27.250 ms de execução do processo na máquina virtual serão
gastos com E/S. Logo, o tempo de execução do processo no
processador virtual será de:
(27.250 ms - 112500/(100-x)) ms.
Usando 13000/0,6 ms = (27.250 - 112500/(100-x)) ms, temos que:
13000/0,6 = 27250 - 112500/(100-x)
27250 - 13000/0,6 = 112500/(100-x)
27250*0,6 - 13000 = 0,6*112500/(100-x)
3350*(100-x) = 67500
335000 - 3350x = 67500
x = 267500/3350
x = 79,850746269
Logo, a redução de velocidade das operações de E/S sobre
máquina virtual será de 79,85%.
4. (1,0) Suponha que tenha ocorrido uma interrupção do disco
enquanto um processo estava em execução. Um aluno de
sistemas operacionais disse que a figura a seguir mostra a ordem
correta das ações realizadas quando essa interrupção foi tratada
pelo sistema operacional. Se você acha que a figura do aluno está
correta basta responder que sim mas, se você acha que ela está
errada, então indique quais são os erros na figura do aluno.
Resp.: A figura do aluno está errada porque somente a sequência
das ações de 6 até 9 está correta. A sequência correta das ações
de 1 até 6, já renumeradas, é dada a seguir. Após a ação 1,
quando o processo foi suspenso para o tratamento da interrupção
do disco, a ação 2, “Inıćio do procedimentoem assembly”, e,
dentro do procedimento em assembly, a ação 3, “Inıćio do
procedimento em C”, são executadas em sequência, com o
objetivo de fazer as tarefas necessárias para salvar o contexto do
processo que estava executando e preparar para a execução do
tratador do disco. Após a ação 3, o escalonador é chamado para
escolher o “Tratador do disco” para ser executado e tratar a
interrupção. Logo, a próxima ação 4, “Escalonador”, dada na parte
esquerda da figura, é executada para fazer exatamente isso. Após
o término da ação 4, as ações 5, “Fim do procedimento em C”, e
6, “Fim do procedimento em assembly”, são executadas, em
ordem, para fazer as finalizações necessárias para executar o
tratador do disco. Finalmente, após a ação 6 ser finalizada, a
sequência das ações restantes é a mesma dada pelo aluno. A
seguir está a figura com as ações executadas na ordem correta.
5. (2,0) Suponha que três processos, A, B e C, compartilhem uma
pilha, inicialmente cheia, que pode armazenar até p números, e
uma fila, inicialmente vazia, que pode armazenar até f números. O
processo A continuamente insere x números no topo da pilha. Já o
processo B continuamente remove três números do topo da pilha
e, quando consegue obter com sucesso esses números, adiciona
a soma deles ao topo da pilha e o produto deles no final da fila.
Finalmente, o processo C remove y números do inıćio da fila e os
imprime na tela. Como quatro semáforos de contagem e dois
semáforos binários podem ser usados para garantir que os
processos executem sem condições de corrida ou impasses?
Justifique a sua resposta. Suponha que a pilha possua um
procedimento InsereTopo(a) para inserir a no topo da pilha e a
função RemoveTopo() para remover e retornar o número que está
no topo da pilha, e que a fila possua um procedimento
InsereFinal(b) para inserir b no final da fila e a função
RemoveInicio() para remover e retornar o número que está no
inıćio da fila.
Resp.: A seguir mostramos como seis semáforos, dois binários e
quatro de contagem, podem ser usados para implementar os
códigos dos processos. O primeiro semáforo binário, chamado
AcessoPilha, é usado para garantir o acesso exclusivo à pilha. Já
o segundo semáforo binário, chamado de AcessoFila, é usado
para garantir o acesso exclusivo à fila. O primeiro semáforo de
contagem, chamado LivresPilha, conta a quantidade de números
que ainda podem ser inseridos na pilha, e é usado para bloquear
A quando x números adicionais não puderem ser inseridos na
pilha (note que B não precisa usar esse semáforo porque ele
remove três números da pilha antes de adicionar a soma ao topo
da pilha). O segundo semáforo de contagem, chamado
UsadosPilha, conta a quantidade de números presentes na pilha,
e é usado para bloquear B quando a pilha possui menos do que
três números. O terceiro semáforo de contagem, chamado
LivresFila, conta a quantidade de números que ainda podem ser
inseridos na fila, e é usado para bloquear B quando a fila está
cheia. Finalmente, o quarto semáforo de contagem, chamado
UsadosFila, conta a quantidade de números presentes na fila, e é
usado para bloquear C quando a fila não possui pelo menos y
números. Como inicialmente a pilha está cheia, a fila está vazia, e
ambas não estão sendo usadas, então os valores iniciais dos
semáforos, AcessoPilha, AcessoFila, LivresPilha, UsadosPilha,
LivresFila e UsadosFila, são respectivamente, 1, 1, 0, p, f e 0. A
seguir mostramos os códigos para os processos A, B e C.
6. (2,0) Suponha que dois processos, A e B, que não fazem
operações de E/S, estejam em execução no sistema operacional,
precisando executar por, respectivamente, a ms e b ms no
processador, sendo a e b inteiros, a ıḿpar, b par, a > 1 e b > 2.
Suponha ainda que o sistema operacional use o escalonamento
por prioridades, em que a prioridade do processo em execução é
reduzida em 1 unidade a cada 1 ms, e em que o processo em
execução somente seja suspenso quando um outro processo
passa a ter a maior prioridade. Se as prioridades iniciais de A e de
B forem os seus tempos de execução, qual será a ordem de
execução de A e de B no processador? E quais serão os tempos
decorridos entre o inıćio e o término de A e de B? Justifique a sua
resposta.
Resp.: Pelo enunciado, vemos que os processos A e B precisam
executar por, respectivamente, a ms e b ms, e que as prioridades
iniciais deles são de, respectivamente, a e b. Como a é ıḿpar e b
é par, então precisaremos avaliar apenas dois casos, a < b e a >
b, já que a = b não é possivel. Se a < b, inicialmente B executará
consecutivamente no processador por b − (a − 1) = b − a + 1
vezes, porque a prioridade será reduzida em 1 a cada 1 ms, e
porque A, cuja prioridade é a, somente poderá executar quando a
prioridade de B for a − 1. Depois disso, A executará duas vezes,
reduzindo a sua prioridade de a para a − 2, B por mais duas
vezes, reduzindo a sua prioridade de a − 1 para a − 3, e assim
sucessivamente, até B terminar a sua execução, o que ocorrerá
após A e B terem executado, como explicado, por (a−1)/2 vezes.
Agora, como A somente terá executado por a − 1 vezes, então
precisará executar por mais uma vez. A ordem de execução
referente a este primeiro caso é mostrada na figura a seguir.
Nesta figura damos também, abaixo do nome do processo, a
prioridade dele antes de executar no processador. Pela figura,
vemos que os tempos decorridos entre o inıćio e o término de A e
de B serão de, respectivamente, 2a − 2 + 1 = (2a − 1) ms e b − a +
1 + 2a − 2 = (a + b − 1) ms.
Porém, se a > b, inicialmente A executará consecutivamente no
processador por a − (b − 1) = a − b + 1 vezes, porque a prioridade
será reduzida em 1 a cada 1 ms, e porque B, cuja prioridade é b,
somente poderá executar quando a prioridade de A for b − 1.
Depois disso, B executará duas vezes, reduzindo a sua prioridade
de b para b − 2, A por mais duas vezes, reduzindo a sua
prioridade de b − 1 para b − 3, e assim sucessivamente, até faltar
somente 1 ms para A terminar, o que ocorrerá após B e A terem
executado, como explicado, por (b−2)/2 vezes. Agora, como A terá
executado por a − 1 vezes e B por b − 2 vezes, e como as
prioridades de A e de B, após as execuções anteriores, serão 1 e
2, B executará por mais duas vezes adicionais, seguidas por mais
uma execução de A. A ordem de execução, referente a este
segundo caso, é mostrada na figura a seguir, na qual também
mostramos a prioridade do processo antes de ele executar,
sempre abaixo do seu nome. Pela figura, vemos que os tempos
decorridos entre o inıćio e o término dos processos serão de,
respectivamente, (a+b) ms e 2b−4+2 = (2b−2) ms.

Outros materiais