Você está na página 1de 1

CMP4151 – Sistemas Operacionais I

Prof. Fernando Gonçalves Abadia


Referente a aula do dia 02/09/2019.
Lista de Exercício: Processos e threads

1 – O que é uma condição de corrida?

2 – Explique a diferença entre bloqueio e espera ocupada.

3 – Qual a principal vantagem e a desvantagem de implementar threads no espaço de


usuário?

4 – Em um sistema com threads, é necessário ter uma pilha por thread ou por processo?

5 – Descreva como um sistema operacional pode desabilitar as interrupções para


implementar semáforos.

6 – Em todos os computadores atuais, pelo menos parte do código de tratamento de


interrupção é escrito em linguagem de montagem. Explique.

7 – Suponha que você fosse projetar uma arquitetura de computador avançada que
realizasse chaveamento de processos em hardware, em vez de interrupções. De qual
informação a CPU precisaria? Descreva como o processo de chaveamento por hardware
poderia funcionar.

8 – Considere um sistema multiprogramado com grau de 6 (isto é, seis programas na


memória ao mesmo tempo). Presuma que cada processo passe 40% do seu tempo
esperando pelo dispositivo de E/S. Qual será a utilização da CPU?

9 – É possível que um thread seja antecipado por uma interrupção de relógio? Se a


resposta for afirmativa, em quais circunstâncias?

10 – Se um sistema tem apenas dois processos, faz sentido usar uma barreira para
sincronizá-los? Por que ou por que não?

11 – Cinco tarefas estão esperando para serem executadas. Seus tempos de execução
esperados são 9, 6, 3, 5 e X. Em qual ordem elas devem ser executadas para minimizar
o tempo de resposta médio? (Sua resposta dependerá de X.)

12 – Um sistema de tempo real precisa tratar de duas chamadas de voz onde cada uma
executa a cada 6 ms e consome 1 ms de tempo da CPU por surto, mais um vídeo de 25
quadros/s, com cada quadro exigindo 20 ms de tempo de CPU. Esse sistema é
escalonável?

13 – Implemente um programa para contar a frequência de palavras em um arquivo de


texto. O arquivo de texto é dividido em N segmentos. Cada segmento é processado por
um thread em separado que produz a contagem de frequência intermediária para esse
segmento. O processo principal espera até que todos os threads terminem, então ele
calcula os dados de frequência de palavras consolidados baseados na produção dos
threads individuais.