Você está na página 1de 2

⇒ EXERCÍCIO: faça os exercícios nº 4.2, 4.4, 4.7, 4.

8 do livro-texto do autor
SILBERSCHATZ (9ª ed., pág.s 191-192 do cap. 4).

4.2 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?
R: Os threads de nível de usuário utilizam uma biblioteca no espaço do usuário sem suporte do
kernel o que resulta em uma chamada de função local (tornando-os mais rápidos e eficientes),
enquanto que os threads de nível de kernel invocam uma biblioteca do nível do kernel com suporte
direto do sistema operacional e isso resulta em uma chamada de sistema para o kernel, resultando
em um desempenho mais baixo (mais lento) deste tipo de thread. Outra diferença seria que threads
de nível usuário são desconhecidos pelo kernel, tornando a biblioteca responsável pelo
particionamento da CPU do processo entre os diversos threads existentes, enquanto que o thread
em modo kernel é conhecido pelo sistema operacional podendo ser escalonados individualmente.
O thread de usuário pode ser implementado por um sistema operacional que não tenha suporte a
abstração de threads, enquanto o thread de kernel não. Já o thread de kernel é ideal para eventos
assíncronos.
4.4 Que recursos são usados quando um thread é criado? Em que eles diferem daqueles usados
quando um processo é criado?
R: A quantidade de recursos usados na criação do thread geralmente é menor que na criação de
processos. Para criar um processo é necessário um bloco de controle de processos, onde são
incluídos estados de processos, contador do programa, registradores da CPU, lista de arquivos
abertos, informações de gerenciamento da memória e informações de scheduling da CPU, e isso
tudo requer uma estrutura de dados grande. Já a criação de um thread envolve uma estrutura de
dados menor onde são mantidos um conjunto de registradores, uma pilha, um contador de
programa e um ID de thread

4.7 Sob que circunstâncias uma solução com múltiplos threads, usando múltiplos threads de
kernel, fornece melhor desempenho do que uma solução com um único thread em um sistema
com apenas um processador?
R: Por exemplo quando acontece um erro de paginação do thread do kernel outro thread do kernel
pode usar o tempo de intercalação de forma útil. Se é um thread único, ele não será capaz de
realizar sua tarefa quando o erro acontecer, já em cenários em que ocorre esse tipo de falha ou
que precisa aguardar outros eventos do sistema, a solução multithread teria um desempenho
melhor mesmo em um sistema com apenas um processador.

4.8 Qual dos seguintes componentes de estado de um programa são compartilhados pelos threads
em um processo com múltiplos threads?
a) Valores do registrador
b) Memória do heap
c) Variáveis globais
d) Memória da pilha
R: b, c.

Você também pode gostar