Muitas políticas e algoritmos de agendamento de disco foram desenvolvidos ao longo dos anos, cada um com seus próprios pontos fortes e fracos. A melhor escolha depende muito da carga de trabalho específica e dos requisitos do sistema. Aqui estão alguns dos mais comuns:
Não preventivo (os pedidos são servidos para chegar): *
Primeiro a chegar, primeiro servido (FCFS): Abordagem mais simples; Os pedidos são servidos na ordem em que chegam. Muito simples de implementar, mas pode levar a uma degradação significativa de tempo e desempenho, especialmente com solicitações amplamente dispersas. É propenso a criar longos comboios de solicitações.
*
mais curto, busque o tempo primeiro (sstf): Seleciona a solicitação que minimiza o tempo de busca na posição atual da cabeça. Geralmente melhora o desempenho em relação aos FCFs, mas pode levar à fome de solicitações longe da posição atual da cabeça (o "efeito do elevador").
preventivo (os pedidos podem ser interrompidos e reordenados): *
Scan (algoritmo do elevador): A cabeça do disco se move em uma direção, atendendo solicitações ao longo do caminho. Quando chega ao fim, ele reverte a direção e continua a manutenção de solicitações na direção oposta. Mais justo que o SSTF, pois evita a fome.
*
c-scan (varredura circular): Semelhante à varredura, mas quando a cabeça chega ao fim, ele volta ao início sem atender às solicitações na viagem de volta. Isso fornece mais distribuição uniforme do serviço e menos variação nos tempos de resposta do que a varredura.
*
Olhe e C-LOOK: Essas são variações de varredura e c-scan, respectivamente. A diferença é que, em vez de se mover até o final do disco, eles chegam apenas a uma solicitação mais distante na direção atual. Isso reduz o movimento desnecessário da cabeça.
*
fScan: Uma variação que combina FCFs e varredura. Os serviços de TI solicitam a ordem do FCFS em cada ciclo de varredura.
*
programação de fila de vários níveis: Prioriza as solicitações com base em seu tipo (por exemplo, solicitações do sistema vs. solicitações de usuário). Diferentes algoritmos de agendamento podem ser usados para cada fila.
*
algoritmos de ponderação: Atribuir pesos a solicitações com base na importância ou prioridade. Solicitações de peso mais alto recebem preferência.
Outros algoritmos e considerações: *
PROGRAMENTO DE PROGRAMENTO: Prioriza os pedidos com base em seus prazos. Solicitações críticas são servidas primeiro para evitar a falta de prazos.
*
algoritmos adaptativos: Ajuste dinamicamente sua estratégia de agendamento com base no comportamento do sistema observado e nas características da carga de trabalho.
*
Filme completamente justo (CFQ): Um agendador de kernel Linux com o objetivo de fornecer alocação de largura de banda justa entre os processos. Não é estritamente um algoritmo de agendamento de disco, mas afeta significativamente o desempenho da E/S do disco.
*
Antecipação: Alguns algoritmos avançados tentam prever solicitações futuras com base em padrões passados e otimizam o movimento da cabeça de acordo.
Na prática, os sistemas operacionais modernos geralmente empregam uma combinação desses algoritmos e outras técnicas sofisticadas para otimizar o desempenho de E/S do disco. Os algoritmos específicos utilizados nem sempre podem ser documentados publicamente ou facilmente determinados. O melhor algoritmo depende de muitos fatores, incluindo características de disco, padrão de E/S e metas de desempenho.