List 1
Quais são as principais atividades de um sistema operacional em relação ao gerenciamento: de memória e de processos.
Diferencie os termos processos, threads e programas.
Explique a diferença entre criar um processo e criar um thread. O que é compartilhado entre os threads de um processo.
Descreva as ações realizadas pelo núcleo de um SO para uma mudança de contexto: · entre threads e entre processos.
Um programa pode gerar múltiplos processos. Dê um exemplo de um problema que pode ser resolvido fazendo-se várias computações independentemente.
Faça um esquema que represente os estados de um processo e explique como cada estado pode ocorrer.
Cite e explique os estados dos threads.
Para que servem as “systems calls”?
Qual a função do gerenciamento de memória em um sistema operacional?
Quais são as vantagens do uso de threads sobre o uso de múltiplos processos? Qual a maior desvantagem que apresentam? Sugira uma aplicação que se beneficiaria do uso de threads e uma que não se beneficiaria.
Qual é a diferença fundamental entre escalonamento preemptivo e escalonamento não preemptivo?
Qual o tipo de escalonamento feito nos sistemas Linux e Solaris?
Como funciona o escalonamento Round Robin?
A maioria dos escalonadores Round Robin usa um quantum de tamanho fixo. Pense em algum argumento em favor de um quantum pequeno. Agora pense em um argumento que justifique um quantum grande.
Explique o que é race condition.
O que é deadlock? Quais são as quatro condições necessárias para que o deadlock ocorra? Como ele pode ser evitado?
Explique o que é busy wait (espera ocupada) e por que os algoritmos que empregam essa técnica são considerados ineficientes. Qual a diferença com bloqueio?
Explique cada um dos mecanismos de sincronização abaixo apontando vantagens e desvantagens: - exclusão mútua - variáveis de condição - semáforos
Utilizando o programa do exercício 3 da prática 4 (produtor/consumidor), faça a implementação utilizando semáforos.
Explique o conceito de atomicidade de uma transação. Mostre que, se as operações wait e signal não forem executadas atomicamente, não se pode garantir a exclusão mútua.
O problema do Barbeiro Dorminhoco. Uma barbearia consiste de uma sala de espera com N cadeiras, e a sala do barbeiro com a cadeira do mesmo. Se não há clientes a serem servidos, o barbeiro vai dormir. Se um cliente entra na barbearia e todas as cadeiras estão ocupadas, então o cliente deixa a barbearia. Se o barbeiro está ocupado, mas há cadeiras disponíveis, então o cliente senta em uma das cadeiras livres. Se o barbeiro está dormindo, então o cliente acorda o barbeiro. Escreva um programa que represente a situação acima, coordenando o barbeiro e os clientes. Dicas: crie um processo barbeiro e um cliente e use semáforos na sincronização.
A solução adotada no exercício anterior pode ser generalizada para o caso de mais de um barbeiro? Se sim, mostre como.
Considere 5 (cinco) filósofos que passam a vida comendo e pensando. Eles ficam todos em uma mesa circular com cinco cadeiras, sendo cada cadeira pertencente ao um filósofo. Uma travessa de espaguete fica no cento da mesa, que é posta com cinco pratos e cinco garfos usados pelos filósofos para comer o espaguete. Quando fica pensando, um filósofo não interage com seus colegas. De vez em quando, um filósofo fica com fome e tenta pegar dois garfos próximos a ele (que estão entre ele e seus vizinhos à direita e à esquerda). Um filósofo pode pegar apenas um garfo por vez. Obviamente, ele não pode pegar um garfo que já esteja na mão de outro filósofo. Quando um filósofo consegue pegar os dois garfos, ele come sem largá-los. Quando termina de comer, ele coloca os garfos nos seus lugares e volta a pensar. Faça o algoritmo para resolver o problema dos filósofos usando semáforos.
Mostre que as quatro condições necessárias à ocorrência de deadlocks estão presentes no problema do jantar dos filósofos.
Suponha que dois processos P1 e P2 contenham, cada qual, os seguintes comandos de linguagem de alto nível em um loop: Num = Num + 1
if Num = 50 then
Num = 0
Suponha também que ambos compartilham a variável Num e estejam ativos. Mesmo com apenas uma CPU, explique como Num pode nunca ser igual a 0 (zero).
Quais as vantagens na utilização de sockets? Explique as diferenças entre stream sockets e datagram sockets. Dê exemplos de onde cada tipo pode ser melhor aplicado.