-
Notifications
You must be signed in to change notification settings - Fork 2
Algoritmos de escalonamento
Abaixo segue a descrição de alguns algoritmos de escalonamento. Todos implementados nesse repositório
É um algoritmo de escalonamento para estruturas de dados do tipo fila. Apresenta o seguinte critério: o primeiro elemento a ser retirado é o primeiro que tiver sido inserido, é um algoritmo de escalonamento não preemptivo que entrega a CPU os processos pela ordem de chegada. Ele executa o processo como um todo do inicio ao fim não interrompendo o processo executado até ser finalizado, então quando um novo processo chega e existe um ainda em execução ele vai para uma fila de espera. Esta fila de espera nada mais é do que uma fila que organiza os processos que chegam até eles serem atendidos pela CPU.
O algoritmo FIFO não garante um tempo de resposta rápido pois é extremamente sensível a ordem de chegada de cada processo e dos antecessores (se existirem) e se processos que tendem a demorar mais tempo chegarem primeiro o tempo médio de espera e o turnaround acabam sendo aumentados.
É uma política de escalonamento que seleciona para ser executado o processo com o menor tempo de execução. SJF é um algoritmo não preemptivo. O escalonamento SJF é vantajoso por sua simplicidade e também porque minimiza o tempo médio que cada processo leva desde quando ele é criado até o fim de sua execução, incluindo aqui o tempo de espera entre o momento em que ele é criado e o momento em que é selecionado para executar.
Exemplo da execução do SJF
No entanto, essa estratégia pode levar a inanição de processos com longos tempos de execução caso processos curtos sejam continuamente adicionados ao escalonador. Uma outra desvantagem do SJF é a necessidade de saber previamente os tempos para execução dos processo.
Round-robin é um dos algoritmos preemptivos empregados por escalonadores de processo e de rede, em computação. Como o termo é geralmente usado, fatias de tempo (também conhecidas como quanta de tempo) são atribuídas a cada processo em partes iguais e em ordem circular, manipulando todos os processos sem prioridade (também conhecido como executivo cíclico). O escalonamento Round-robin é simples, fácil de implementar e livre de inanição. O escalonamento Round-robin também pode ser aplicado a outros problemas de escalonamento, como o escalonamento de pacotes de dados em redes de computadores.
Os algoritmos de escalonamento dinâmicos não atribuem prioridades fixas aos processos. As decisões de escalonamento são tomadas em tempo de execução e as prioridades dos processos podem mudar. Os critérios para essas decisões variam de algoritmo para algoritmo. O algoritmo de escalonamento dinâmico mais utilizado é o “prazo mais curto primeiro” (Earliest Deadline First – EDF).
O EDF escolhe na fila de prontos o processo que tenha o prazo de vencimento (deadline) mais curto. Se chegar na fila um processo que tenha um prazo menor ainda, ocorrerá preempção.