Buscar

Lista 02 Processos e Threads (v01 2020S)

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

Prévia do material em texto

UNIVERSIDADE FEDERAL DA BAHIA 
INSTITUTO DE MATEMÁTICA E ESTATÍSTICA 
DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO 
SISTEMAS OPERACIONAIS (MATA58 E MAT566) / PROFESSOR: DR. ALIRIO SÁ 
LISTA DE EXERCÍCIOS 02 
 
Questões traduzidas / adaptadas de: 
• Tanenbaum, A. S. "Modern Operating Systems" (Chapter 2), 3rd ed, Pearson Hall, 2008. 
• Mazeiro, C. A. “Sistemas Operacionais: Conceitos e Mecanismos”, DINF – UFPR, 2019. 
Página 1/2 
 
 
1. Relacione as afirmações abaixo aos respectivos estados no 
ciclo de vida das tarefas (N: Nova, P: Pronta, E: Executando, S: 
Suspensa, T: Terminada): 
a. [ ] O código da tarefa está sendo carregado. 
b. [ ] A tarefas são ordenadas por prioridades. 
c. [ ] A tarefa sai deste estado ao solicitar uma 
operação de entrada/saída. 
d. [ ] Os recursos usados pela tarefa são devolvidos ao 
sistema. 
e. [ ] A tarefa vai a este estado ao terminar seu 
quantum. 
f. [ ] A tarefa só precisa do processador para poder 
executar. 
g. [ ] O acesso a um semáforo em uso pode levar a 
tarefa a este estado. 
h. [ ] A tarefa pode criar novas tarefas. 
i. [ ] Há uma tarefa neste estado para cada 
processador do sistema. 
j. [ ] A tarefa aguarda a ocorrência de um evento 
externo. 
2. Na Figura abaixo, três estados de processo são apresentados. 
Na teoria, com três estados, poderiam existir seis possíveis 
transições de estado, dois para cada estado. Entretanto, 
apenas quatro transições são mostradas. Existe alguma 
circunstância na qual alguma ou ambas das transições que 
faltam possam ocorrer? 
 
Figura 1 - Diagrama de Estados de um Processo (Fonte: Tanenbaum, 2008. 
Modern Operating Systems, 3rd ed.) 
3. Explique o que é, para que serve e o que contém um TCB ( 
Task Control Block). 
4. O que são threads e para que servem? 
5. Quais as principais vantagens e desvantagens de threads em 
relação a processos? 
6. Qual a principal vantagem de implementar threads no espaço 
de usuário? E qual a maior desvantagem? 
7. Forneça dois exemplos de problemas cuja implementação 
multi-thread não tem desempenho melhor que a respectiva 
implementação sequencial. 
8. Em todos os computadores modernos, pelo menos parte dos 
manipuladores de interrupção são escritos em linguagem de 
montagem. Por quê? 
9. Na Figura abaixo, o conjunto de registradores é listado por 
thread ao invés de por processo. Por quê? Afinal, todas 
máquinas possuem apenas um conjunto de registradores. 
 
Figura 2 - Coluna 1, itens compartilhados por todos os threads de um processo. 
Coluna 2, itens privativos de cada thread (Fonte: Tanenbaum, 2008. Modern 
Operating Systems, 3rd ed.) 
10. Quando uma interrupção ocorre ou quando uma chamada de 
sistema transfere o controle para o SO, uma área da pilha do 
kernel separada da pilha do processo interrompido é 
geralmente usada. Por quê? 
11. Se um processo multithread realiza um fork, um problema pode 
ocorrer se os processos filhos obtêm uma cópia de cada um 
dos threads do processo pai. Por exemplo, suponha que um 
dos threads do processo original estava esperando por uma 
entrada pelo teclado. Agora, após o fork, duas threads estão 
aguardando por uma entrada pelo teclado, uma em cada 
processo. Este problema acontecer em processos de thread 
única (i.e. single-thread)? 
12. Desenhe o diagrama de tempo da execução do código a 
seguir, informe qual a saída do programa na tela (com os 
valores de x) e calcule a duração aproximada de sua 
execução. 
 
Dica: Para uma breve descrição sobre como construir de um diagrama 
de tempo, acesse: 
http://wiki.inf.ufpr.br/maziero/doku.php?id=so:diagrama_de_tempo. 
 
 
Figura 3 - (Fonte: Mazeiro, 2019 - Sistemas Operacionais: Conceitos e Mecanismos) 
13. Indique quantas letras “X” serão impressas na tela pelo 
programa abaixo quando for executado com a seguinte linha 
de comando: 
a.out 4 3 2 1 
O comando a.out resulta da compilação do programa a seguir: 
 
Figura 4 - (Fonte: Mazeiro, 2019 - Sistemas Operacionais: Conceitos e Mecanismos) 
http://wiki.inf.ufpr.br/maziero/doku.php?id=so:diagrama_de_tempo
 
UNIVERSIDADE FEDERAL DA BAHIA 
INSTITUTO DE MATEMÁTICA E ESTATÍSTICA 
DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO 
SISTEMAS OPERACIONAIS (MATA58 E MAT566) / PROFESSOR: DR. ALIRIO SÁ 
LISTA DE EXERCÍCIOS 02 
 
Questões traduzidas / adaptadas de: 
• Tanenbaum, A. S. "Modern Operating Systems" (Chapter 2), 3rd ed, Pearson Hall, 2008. 
• Mazeiro, C. A. “Sistemas Operacionais: Conceitos e Mecanismos”, DINF – UFPR, 2019. 
Página 2/2 
 
 
14. Associe as afirmações a seguir aos seguintes modelos de 
threads: a) muitos-para-um (N:1); b) um-para-um (1:1); c) 
muitos-para-muitos (N:M): 
a. Tem a implementação mais simples, leve e eficiente. 
b. Multiplexa os threads de usuário em um pool de 
threads de núcleo. 
c. Pode impor uma carga muito pesada ao núcleo. 
d. Não permite explorar a presença de várias CPUs 
pelo mesmo processo. 
e. Permite uma maior concorrência sem impor muita 
carga ao núcleo. 
f. Geralmente implementado por bibliotecas. 
g. É o modelo implementado no Windows NT e seus 
sucessores. 
h. Se um thread bloquear, todos os demais têm de 
esperar por ele. 
i. Cada thread no nível do usuário tem sua 
correspondente dentro do núcleo. 
j. É o modelo com implementação mais complexa. 
15. O modelo da Figura abaixo é adequado para implementar um 
servidor de arquivos com cache em memória? Por quê? Seria 
possível que cada processo tivesse sua cache? 
 
Figura 5 - Três processos, cada um com seu próprio thread (Fonte: Tanenbaum, 
2008. Modern Operating Systems, 3rd ed.) 
16. A Figura abaixo apresenta um Servidor Web multithread. Se a 
única forma de leitura de um arquivo web for a partir de um 
procedimento read implementado como uma chamada de 
sistema bloqueante, então a implementação do servidor web 
seria mais adequada usando threads no nível do usuário ou no 
nível do kernel? Por quê? 
 
Figura 6 - Servidor Web Multithread (Fonte: Tanenbaum, 2008. Modern Operating 
Systems, 3rd ed.) 
17. Considerando as implementações de threads N:1 e 1:1 para o 
trecho de código a seguir: 
a. Desenhe os diagramas de execução; 
b. Informe as durações aproximadas de execução; 
c. Indique a saída do programa na tela. Considere a 
operação sleep() como uma chamada de sistema 
(syscall). A chamada thread_create cria um thread, 
thread_exit encerra o thread corrente e thread_join 
espera o encerramento do thread informado como 
parâmetro. 
 
 
Figura 7 - (Fonte: Maziero, C. A. Sistemas Operacionais: Conceitos e Mecanismos, 
2019)

Continue navegando