Comparação entre algoritmos de escalonamento de processos
O escalonamento de processos é uma tarefa crucial em sistemas operacionais multitarefa (multiprogramados).
Esse escalonamento ocorre de acordo com alguns algoritmos. Dentre eles temos, por exemplo
- FCFS (Favorece o processo há mais tempo na fila de prontos)
- SJF (Favorece o processo com menor previsão da duração de uso de UCP)
- Prioridade (Favorece o com mais alta prioridade)
- Prioridade com aging (Como o anterior, mas a prioridade do processo é incrementada com o passar do tempo)
- Prioridade com preempção (Como o prioridade, mas um processo com prioridade mais alta que entre na fila de prontos pode interromper o que está em execução)
- Circular ou Round Robin (Preemptivo e estabelece um tempo máximo para um processo ficar na UCP)
Estes algoritmos são avaliados por alguns critérios
- Uso de UCP
- Throughput (Quantidade de processos atendidos em uma unidade de tempo)
- Turnaround (Tempo médio da admissão ao término dos processos)
- Tempo de espera (Tempo médio no qual os processos ficam na fila de prontos)
- Tempo de resposta (Tempo médio até que os processos comecem a emitir saída de processamento)
Para comparar estes algoritmos, desenvolvi uma planilha com uma linha de tempo para cada algoritmo. Para ter acesso a esta planilha, faça o download do comparativo de algoritmos de escalonamento de processos (em A3),
Um dos grandes desafios hoje em dia é aplicar tais algoritmos em um ambiente real, em que muitas outras variáveis entram em jogo, como a presença de interrupções (que podem preemptar o processo atual), tempo que demora para escolher a próxima tarefa, tempo em que a preempção fica desabilitada dentro do kernel, presença de arquitetura SMP, etc, etc.
Pelo o que pude ver no seu blog, você é professor. Eu tive uma boa experiência quando era aluno de passar da parte puramente teórica para a implementativa. Comecei com o minix, fazendo um novo algoritmo de escalonamento para ele e terminei minha graduação propondo mudanças para o algoritmo de tempo real do Linux. Acho que seria interessante desafiar seus alunos a começarem a implementar esses e outros (talvez mais simples) algoritmos em sistemas operacionais em uso hoje. Poderia até dar pontos extras pra quem fizer, ou substituir provas, trabalhos, etc.
Bom, não te conheço (cheguei aqui pelo site br-linux), então não sei se você já faz algo do tipo, mas gostaria de deixar a dica.
Parabéns pelo trabalho.