4. Cite duas razões que tornam os caches úteis. Que problemas eles resolvem? Que
problemas eles causam? Se um cache pode ser aumentado até o tamanho do
dispositivo para o qual está armazenando (por exemplo, um cache tão extenso quanto
um disco), por que não lhe dar esse tamanho e eliminar o dispositivo?
6. Qual é o objetivo das interrupções? Em que uma interrupção difere de uma exceção?
As exceções podem ser geradas intencionalmente por um programa de usuário? Caso
possam, com que propósito?
11. Liste cinco serviços fornecidos por um sistema operacional e explique como cada um
deles é conveniente para os usuários. Em que casos seria impossível que programas
de nível de usuário fornecessem esses serviços? Explique sua resposta.
12. Como um sistema poderia ser projetado para permitir a escolha de sistemas
operacionais a partir dos quais realizar a inicialização? O que o programa bootstrap
teria de fazer?
13. Os serviços e funções fornecidos por um sistema operacional podem ser divididos em
duas categorias principais. Descreva resumidamente as duas categorias e discuta em
que elas diferem.
14. Quais são os dois modelos de comunicação entre processos? Quais são os pontos forte
e fracos das duas abordagens?
Capítulo 3 - Processos
18. Descreva as diferenças entre o scheduling de curto prazo, de médio prazo e de longo
prazo.
19. Descreva as ações executadas por um kernel para a mudança de contexto entre
processos.
20. Incluindo o processo-pai inicial, quantos processos são criados pelo programa mostrado
no código abaixo?
#include <stdio.h>
#include <unistd.h>
int main()
{
int i;
for (i = 0; i < 4; i++)
fork();
return 0;
}
Prática: Construa uma árvore de processos no seu sistema operacional. Para obter
informações sobre processos do sistema UNIX ou Linux, use o comando ps —ael. Use o
comando man ps para obter mais informações sobre o comando ps. O gerenciador de
tarefas, nos sistemas Windows, não fornece a ID do processo-pai, mas a ferramenta
monitor de processos, disponível em technet.microsoft.com, fornece uma ferramenta de
árvore de processos.
Capítulo 4 - Threads
22. Forneça dois exemplos de programação em que a criação de múltiplas threads não
proporciona melhor desempenho do que uma solução com uma única thread.
23. Cite duas diferenças entre threads de nível de usuário e threads de nível de kernel. Sob
que circunstâncias um tipo é melhor do que o outro?
24. Que recursos são usados quando um thread é criada? Em que eles diferem daqueles
usados quando um processo é criado?
25. Considere um sistema multicore e um programa com múltiplos threads escrito com o
uso do modelo muitos-para-muitos de criação de threads. Faça o número de threads de
nível de usuário no programa ser maior do que o número de núcleos de processamento
no sistema. Discuta as implicações de desempenho dos cenários a seguir.
a. O número de threads do kernel alocados ao programa é menor do que o número de
núcleos de processamento.
b. O número de threads do kernel alocados ao programa é igual ao número de núcleos de
processamento.
c. O número de threads do kernel alocados ao programa é maior do que o número de
núcleos de processamento, porém menor do que o número de threads de nível de
usuário.