Você está na página 1de 7

Faculdade de Tecnologia, Universidade de Brasília, Campus Universitário Darcy Ribeiro, Gleba A, Avenida L3 Norte, CEP 70.

910-900, Brasília-DF
Caixa Postal 4386, fone +55 61 3307 2300, fone/fax +55 61 3273 8893, ftd@unb.br, www.ft.unb.br

Lista de exercícios 3 – Sistemas Operacionais de Rede

1. Explique o que é preempção. Explique a diferença entre preempção e cooperação.


R: A preempção é o ato de interromper temporariamente uma tarefa (ex: processo, thread, etc.) sendo
resolvida por um sistema computacional, sem precisar de sua cooperação, e com a intenção de retomar
a tarefa depois.

2. Quais os critérios de escalonamento orientado ao usuário e desempenho? Explique.


R: Um algoritmo de escalonamento orientado ao usuário e desempenho deve levar em consideração o
tempo de uso da CPU, o tempo de resposta (tempo entre uma requisição e o início da resposta), prazos
para execução das tarefas (deadlines) e previsibilidade.

3. Quais os critérios desejáveis (critérios de otimização) para escalonadores de curto prazo? Explique.
R: Máxima utilização de CPU, Máxima vazão, Mínimo tempo de turnaround, Mínimo tempo de
espera, Mínimo tempo de resposta.

4. Considere três processos A,B e C, cada qual com picos de CPU de 24,9,3, respectivamente. Escalone os
processos segundo o algoritmo FCFS, considerando que o processo B foi o primeiro a chegar, seguido do
processo A e, por fim, o processo C. Calcule o tempo médio de espera.
R: Tempo médio de espera = (0 + 9 + 33)/3 = 14 ut.

5. Escalone os processos descritos no exercício anterior segundo o algoritmo SJF. Calcule o tempo média de
espera. O que pode acontecer se um chegar um quarto processo D com pico de CPU 2 logo após o término
de processamento do processo C? Calcule o tempo médio de espera neste caso.

R: Tempo médio de espera: (0 + 3 + 12)/3 = 5 ut


Tempo médio de espera: (0 + 3 + 5 + 14)/4 = 5.5 ut

6. No algoritmo de escalonamento com prioridade pode ocorrer inanição. Explique o que é inanição e como
pode ser evitada.
R: Inanição ocorre quando um processo de baixa prioridade nunca é executado. Diz-se que este
processo “morre de fome”. A inanição pode ser evitada pelo algoritmo de envelhecimento, que
aumenta a prioridade dos demais processos a medida que o atual processo de prioridade maior é
escalonado para execução.

7. Explique o algoritmo de escalonamento Round-Robin.


R: O algoritmo de escalonamento Round-Robin seleciona o processo a partir de uma fila circular, que
“liga” o último elemento ao primeiro. Cada processo executa dentro de uma janela de tempo pré-
definida (quantum). Ao término do quantum, o algoritmo seleciona o próximo da fila para execução, e
assim sucessivamente.

8. Considere os processos da questão 4 e um quantum de 1000 u.t. Escalone os processos segundo o algoritmo
Round-Robin.
R: O resultado é o mesmo escalonamento da questão 4, já que todos os processos terminarão
colaborativamente em menos de 1000 u.t.
Faculdade de Tecnologia, Universidade de Brasília, Campus Universitário Darcy Ribeiro, Gleba A, Avenida L3 Norte, CEP 70.910-900, Brasília-DF
Caixa Postal 4386, fone +55 61 3307 2300, fone/fax +55 61 3273 8893, ftd@unb.br, www.ft.unb.br

9. Considere os processos da questão 4 e um quantum de 1 u.t. Escalone os processos segundo o algoritmo


Round-Robin.
R:

B A C B A C B A C B A B A B A B A B A B A ... A
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 36

10. Compare as respostas dos exercícios 8 e 9. Explique.


R: Tempo do quantum muito grande: FCFS. Tempo do quantum muito pequeno: Overhead de trocas
de contexto.

11. Explique o esquema de escalonamento com Filas em vários níveis.


R: No escalonamento com Filas em vários níveis, cada fila pode executar segundo um algoritmo de
escalonamento diferente e, também, implementar ou não prioridades. Além disso, os processos podem
migrar entre as filas em tempo de execução de acordo com algum critério que indique (justifique) a
mudança de fila. Este esquema de filas em vários níveis confere melhor uso dos recursos do sistema e
prioriza os processos conforme sua natureza, ou seja, processos de chamada de sistema (system calls)
são enfileirados na fila de maior prioridade, enquanto que processos de estudantes podem ser
enfileirados na fila de menor prioridade.
Faculdade de Tecnologia, Universidade de Brasília, Campus Universitário Darcy Ribeiro, Gleba A, Avenida L3 Norte, CEP 70.910-900, Brasília-DF
Caixa Postal 4386, fone +55 61 3307 2300, fone/fax +55 61 3273 8893, ftd@unb.br, www.ft.unb.br

12. As condições de corrida podem ocorrer em muitos sistemas de computação. Considere um sistema bancário
com duas funções: deposit(amount) e withdraw(amount). A quantia (amount) a ser depositada em uma conta
bancária ou retirada dela é o parâmetro passado para essas duas funções. Suponha que exista uma conta
bancária compartilhada por um marido e sua esposa e que o marido chame a função withdraw() enquanto a
esposa chama deposit() concorrentemente. Descreva como uma condição de corrida pode ocorrer e o que
pode ser feito para impedir que ela ocorra.

Sem semáforo Com semáforo

13. Os servidores podem ser projetados para limitar a quantidade de conexões abertas. Por exemplo, um servidor
pode querer possuir apenas N conexões de socket em um determinado momento. Assim que N conexões
forem estabelecidas, ele não aceitará outra conexão até que uma conexão existente seja liberada. Explique
como os semáforos podem ser usados por um servidor na limitação da quantidade de conexões concorrentes.
R: A variável que contabiliza a quantidade de conexões estabelecidas pode ser implementada como um
semáforo inteiro. A cada vez que uma conexão estiver prestes a ser estabelecida, o processo (ou
thread) executa sem_wait(&sem) na variável semáforo correspondente. Sendo assim, a partir do ponto
que esta variável atingir zero, novos pedidos de conexão serão bloqueados. Novos pedidos só voltarão a
ser aceitos quando o processo (ou thread) executar sem_post(&sem) na variável semáforo, permitindo
o estabelecimento de novas conexões.
Faculdade de Tecnologia, Universidade de Brasília, Campus Universitário Darcy Ribeiro, Gleba A, Avenida L3 Norte, CEP 70.910-900, Brasília-DF
Caixa Postal 4386, fone +55 61 3307 2300, fone/fax +55 61 3273 8893, ftd@unb.br, www.ft.unb.br

14. Demonstre que, se as operações de semáforo wait() e signal() não forem executadas atomicamente, a
exclusão mútua pode ser violada.

Considerando o exemplo do exercício 12 (depósito e saque de uma conta compartilhada), o valor a ser
sacado pode ser retirado da conta antes que o depósito seja efetuado. Este problema fica mais evidente
em baixo nível:

Depósito Saque
R1 = conta.saldo R3 = conta.saldo
R2 = valor; R4 = valor;
R1 = R1 + R2 R3 = R3 – R4
conta.saldo = R1 conta.saldo = R3

Supondo que saldo = 1000 , valor saque (VS) = 100, valor deposito (VD) = 200
#PASSO Operação Valor
0 DEP executa R1 = conta.saldo R1 = 1000
1 DEP executa R2 = VD R2 = 200
2 executa R1 = R1 + R2 R1 = 1200
3 SAQ executa R3 = conta.saldo R3 = 1000
4 SAQ executa R4 = VS R4 = 100
5 SAQ executa R3 = R3 – R4 R3 = 900
6 DEP executa conta.saldo = R1 Saldo = 1200
7 SAQ executa conta.saldo = R3 Saldo = 900

15. Considere o deadlock de tráfego mostrado na Figura abaixo. Demonstre que as quatro condições necessárias
para ocorrência do deadlock estão presentes nesse exemplo. Além disso, defina uma regra simples para
evitar deadlock nesse sistema.

Condições:
1. Exclusão Mútua: Pelo menos um recurso deve estar de posse de um processo. Se outro processo
solicitá-lo, o processo solicitante deve ser adiado (bloqueado) até o recurso ter sido liberado. No
caso da figura acima, os recursos compartilhados (cruzamentos) estão sendo usados por pelo
menos um processo (carro/caminhão), bloqueando o uso pelos demais processos.
2. Posse e espera: Um processo deve estar de posse de, pelo menos, um recurso e esperando para
adquirir recursos adicionais que estejam sendo concorrentemente usados por outros processos. Na
figura acima, podemos ver que existe um processo (veículo) em cada cruzamento, logo este
processo está de posse de, pelo menos, um recurso. Além disso, este processo está esperando para
Faculdade de Tecnologia, Universidade de Brasília, Campus Universitário Darcy Ribeiro, Gleba A, Avenida L3 Norte, CEP 70.910-900, Brasília-DF
Caixa Postal 4386, fone +55 61 3307 2300, fone/fax +55 61 3273 8893, ftd@unb.br, www.ft.unb.br

adquirir recursos adicionais (outros cruzamentos adiante) que já estão de posse de outros
processos.
3. Inexistência de preempção: Os recursos não podem ser interceptados; isto é, um recurso só pode
ser liberado voluntariamente pelo processo que o estiver usando. Na figura acima, obviamente não
é possível interceptar o recurso (cruzamento) para dá-lo a outro processo (veículo).
4. Espera circular: Deve haver um conjunto de processos em espera de tal modo que P0 esteja
esperando um recurso usado por P1, P1 esteja esperando um recurso usado por Pn, Pn esteja
esperando um recurso usado por P0. É trivial observar a espera circular no exemplo da figura.

Regra simples: em um cruzamento, todo motorista deve dar preferência aos motoristas que estão “à
direita”.

16. Considere a situação de deadlock que pode ocorrer no problema dos filósofos comensais quando os filósofos
pegam os “chopsticks” um de cada vez. Explique como as quatro condições necessárias para corrência do
deadlock estão presentes nessa situação. Discuta como os deadlocks poderiam ser evitados com o algoritmo
de reversão de arestas (SER).

Se cada um dos filósofos pegar (concorrentemente) o “chopstick” da esquerda:


1. Exclusão Mútua: Pelo menos um recurso deve estar de posse de um processo. Se outro processo
solicitá-lo, o processo solicitante deve ser adiado (bloqueado) até o recurso ter sido liberado. No
caso dos filósofos comensais, os recursos compartilhados (chopsticks) estão sendo usados por pelo
menos um filósofo, bloqueando o uso pelos demais filósofos. Ou seja, todos os filósofos terão o
recurso à sua esquerda, mas não terão o recurso à sua direita.
2. Posse e espera: Um processo deve estar de posse de, pelo menos, um recurso e esperando para
adquirir recursos adicionais que estejam sendo concorrentemente usados por outros processos. No
caso dos filósofos comensais, existe um filósofo de posso de um recurso. Além disso, cada filósofo
está esperando por um outro recurso.
3. Inexistência de preempção: Os recursos não podem ser interceptados; isto é, um recurso só pode
ser liberado voluntariamente pelo processo que o estiver usando. Supondo que não existe um
“árbitro” capaz de retirar “à força” o chopstick de um filósofo e dá-lo a outro, temos a ocorrência
desta condição.
4. Espera circular: Deve haver um conjunto de processos em espera de tal modo que P0 esteja
esperando um recurso usado por P1, P1 esteja esperando um recurso usado por Pn, Pn esteja
esperando um recurso usado por P0. No caso dos filósofos, todos aguardam pelo recurso à
esquerda.

Pela reversão de arestas, basta criar um grafo de alocação de recursos acíclico para que o algoritmo
SER possa entrar em operação, garantindo que não ocorram deadlocks.
Faculdade de Tecnologia, Universidade de Brasília, Campus Universitário Darcy Ribeiro, Gleba A, Avenida L3 Norte, CEP 70.910-900, Brasília-DF
Caixa Postal 4386, fone +55 61 3307 2300, fone/fax +55 61 3273 8893, ftd@unb.br, www.ft.unb.br

17. Considere um sistema consistindo de 4 recursos do mesmo tipo e que são compartilhados por 3 processos
P0,P1 e P2, os quais precisam de no máximo 2 recursos por vez. Mostre que o sistema é livre de deadlocks.

No pior caso em que cada processo tiver posse de um recurso, existirá um recurso disponível capaz de
atender à necessidade máxima de dois recursos por processo. Aquele que obtiver o recurso restante
poderá executar sua região crítica, liberando em seguida seus recursos. Sendo assim, os demais
processos também poderão executar.

18. Descreva como a decisão do escalonador pode influenciar na ocorrência de deadlocks, usando como base o
código abaixo:

O problema de deadlock só ocorre quando o escalonador realiza uma troca de contexto logo antes da
execução do segundo lock, para qualquer uma das threads que executar primeiro. Nesta situação, cada
thread terá um lock para um recurso e aguardará a liberação do outro, o que levará a um ciclo de
espera infinito.
Faculdade de Tecnologia, Universidade de Brasília, Campus Universitário Darcy Ribeiro, Gleba A, Avenida L3 Norte, CEP 70.910-900, Brasília-DF
Caixa Postal 4386, fone +55 61 3307 2300, fone/fax +55 61 3273 8893, ftd@unb.br, www.ft.unb.br

Se o escalonador não executasse a thread “do_work_two” até o término da thread “do_work_one”,


não haveria deadlock. No entanto, também não haveria concorrência ou paralelismo, visto que as
threads seriam serializadas (o que é melhor que deixar que algum deadlock ocorra).

Você também pode gostar