next up previous
Next: Gerência de Memória Up: Sistemas Operacionais Previous: Introdução

Gerência de Processos

1.
O que é ``race condition"?

2.
No código que exemplifica o problema produtor-consumidor (Fig. 2-23 do livro texto (Modern Operating Systems de Tanenbaum/2001/segunda edição) há duas ``race conditions" parecidas e que ocorrem quando um dos 2 processos decide bloquear, mas é interrompido pelo S. O. antes que possa chamar a rotina de sistema "sleep". Nestes casos um sinal de "wakeup" enviado pelo outro processo é perdido. Na verdade, existe ainda uma terceira "race condition" naquele exemplo. Que condição é esta? (Dica: considere um recurso compartilhado pelos dois processos.)

3.
Discuta o que é o problema de inversão de prioridades. Se o escalonamento tipo Round Robin for usado invés de escalonamento por prioridades tal problema continua existindo? Por que?

4.
Considere o caso de um S. O. no qual a mudança de contexto (troca de processos) seja feita de forma instantânea (overhead é zero). Se um determinado processo que só usa CPU gasta T segundos para ser executado quando não há outros processos no sistema, quanto tempo seria necessário para ele terminar quando compartilhasse a CPU com outros N processos iguais? Considere que o quantum de tempo atribuído a cada processo é T/N.

5.
Demonstre porque o tempo médio para escalonamento "tarefas pequenas primeiro" é menor que para o caso de escalonamento aleatório de tarefas.

6.
Explique o que são algoritmos para garantir mútua exclusão. Em que tipos eles podem ser classificados? Explique o funcionamento de pelo menos dois algoritmos de cada tipo.

7.
Suponha que o tempo médio de execução de processos, antes de um bloqueio para entrada/saída de dados, seja de T segundos e que a CPU gaste S segundos para mudar de um processo para o outro (overhead S < T). Considerando escalonamento tipo Round Robin com quantum Q, proponha e discuta fórmulas que calculem a eficiência da CPU quando Q > T e quando S < Q < T. Assuma que os processos são longos e necessitam de uma grande quantidade de quanta antes de terminarem.

8.
Em escalonamento Round Robin, qual seria a vantagem de se usar um quantum grande? E qual seria a vantagem de se usar um quantum pequeno?

9.
Qual a diferença entre mútua exclusão com espera ocupada e com espera bloqueada? Qual das duas é mais atrativa do ponto de vista prático? Em qual delas se enquadra a instrução TSL (Test and Set Lock, também conhecida como TAS na família 68000 da Motorola)? Explique em detalhes o funcionamento desta instrução TSL.

10.
Semáforos são baseados em duas operações importantes: up(&semaforo) e down(&semaforo). Com base nas tarefas que estas operações têm que cumprir, escreva um exemplo de código que implemente cada uma delas. Agora, analise seu código e justifique porque ele está ou não imune aos problemas relacionados a ``condições de corrida''.

11.
É possível implementar operações sobre semáforos (up e down) usando a instrução especial TSL (test and set lock). Mostre como isso pode ser feito e explique as vantagens/desvantagens dessa abordagem.

12.
Mostre como um S. O. pode implementar operações seguras sobre semáforos por meio de desabilitação de interrupções.

13.
Explique a diferença entre redirecionamento de entrada/saída (< ou >) e pipe.
14.
Quais são os mecanismos básicos de criação de processos? E quais são as diferenças entre eles?
15.
Descreve o significado, finalidade, vantagens e desvantagens de preemptive scheduling.

16.
Qual é a condição necessária para que um esquema de preemptive scheduling possa ser implementado? Justifique.
17.
Quais são os estados pelos quais um processo pode passar desde sua criação até seu término em um sistema multiprogramado? Explique o significado de cada estado.

18.
Explique porque mesmo nos computadores modernos, pelo menos parte dos códigos manipuladores de interrupções é ainda escrita em assembly.

19.
Pode uma thread em execução ser interrompida (por uma interrupção de relógio) para a execução de outra thread do mesmo processo ou de outro processo? Se sim, em que circunstâncias? Se não, por que não?

20.
Suponha que uma das threads de um processo multi-threaded está aguardando uma entrada de dados via teclado. Se este processo criar um processo-filho com a chamada fork, passaremos a ter duas threads aguardando a mesma entrada do teclado, o que é um problema a ser resolvido. Este problema também aconteceria se o processo tivesse uma única thread de execução? Por que?

21.
Um servidor de arquivos simples gasta 15 ms para responder uma requisição de leitura de um bloco do disco, caso este bloco esteja previamente armazenado em memória RAM (em um cache de blocos lidos anteriormente), fato que ocorre em 2/3 das requisições. Caso o bloco solicitado não esteja em cache, o servidor gasta 75 ms extras para trazer o bloco do disco para o cache e em seguida responder a requisição. Durante estes 75 ms o processo (ou thread) é colocado para dormir (fica bloqueado), esperando a resposta do disco. Quantas requisições por segundo de blocos este servidor pode atender se tiver apenas uma thread? E se tiver um número muito grande de threads?

22.
Escalonadores Round-Robin mantêm uma lista de todos os processos prontos para execução e cada processo aparece na lista uma única vez. O que ocorreria se um processo aparecesse mais de uma vez nesta lista? Existe alguma situação prática em que isto deva ocorrer? Qual? Por que?

23.
Suponha que cinco processos (de A a E) foram disparados simultaneamente em um sistema. O tempo de execução estimado para cada um isoladamente é de 10, 6, 2, 4 e 8 minutos, respectivamente. As prioridades de cada um foram estabelecidas como 3, 5, 2, 1 e 4, respectivamente, sendo 5 a prioridade mais alta. Ignorando o tempo gasto com troca de processos, determine o tempo médio de espera pelo término de todos eles quando cada um dos seguintes algoritmos de escalonamento é usado:

(a) Round-Robin (sistema multiprogramado; cada processo obtém uma mesma fatia de tempo da CPU)

(b) Escalonamento por prioridade (sistema monoprogramado)

(c) First-come, first-served (sistema monoprogramado, processos executados na ordem A-B-C-D-E)

(d) Processos mais curtos primeiro (sistema monoprogramado)


next up previous
Next: Gerência de Memória Up: Sistemas Operacionais Previous: Introdução
Marco A. Amaral Henriques
2007-02-14