Nosso objetivo é escrever um programa para simular o comportamento de um sistema de computação que executa tarefas (jobs) cuja duração é conhecida de antemão. Para cada tarefa, são dados:
Seu programa simulará o comportamento do sistema de computação para três algoritmos de escalonamento de tarefas:
Enquanto o sistema estiver ocupado executando uma tarefa, novas tarefas serão colocadas em uma fila de espera. Essa fila segue a disciplina FIFO, ou seja as tarefas são enfileiradas em ordem de chegada. Quando acabar a execução da tarefa atual, o sistema iniciará a execução da primeira tarefa da fila.
Aqui a única mudança em relação ao caso anterior é a disciplina empregada na fila de espera. Agora a fila segue a disciplina shortest job first, ou seja, quando acabar a execução da tarefa atual, o sistema iniciará a execução da tarefa mais curta da fila.
Como no caso FIFO, porém a tarefa atual pode permanecer no
estado ``em execução'' por no máximo unidades de
tempo. Transcorrido esse intervalo (que é a ``fatia de tempo''
alocada a cada tarefa), a tarefa atual vai para o final da fila
de espera e o sistema passa a executar a primeira tarefa dessa
fila. Essa mudança no estado da tarefa que foi para o final da
fila -- de ``em execução'' para ``em espera'' -- é denominada
preempção.