Diferença entre Agendamento Preemptivo e Não Preemptivo em Sistemas Operacionais Diferença entre

Anonim

Processar Scheduling (ou CPU Scheduling ) determina quais processos são atribuídos e removidos da CPU, com base em modelos de agendamento, como Preemptivo e Não -Preemptive Scheduling (também conhecido como Co-operative Scheduling ).

Os sistemas mais antigos poderiam operar em modos autônomos simples, mas com o aumento Necessidade de sistemas flexíveis e responsivos, bem como a virtualização, gerenciando o processamento múltiplo de forma eficiente, fornece uma resposta rápida a todos os pedidos de processamento de tarefas.

As unidades de agendamento são muitas vezes referidas como uma tarefa e é o trabalho do Agendador para executar e gerenciar essas tarefas sempre que necessário; o Agendador seleciona a tarefa a ser removida e atribuída à CPU para processamento, acordo para o modelo de agendamento utilizado.

Como o Agendador sabe quais tarefas são prioritárias?

O Agendador precisa executar um processo de seleção justo e eficiente, levando em consideração solicitações de processamento variáveis ​​e dinâmicas e aproveitando ao máximo os ciclos da CPU.

As tarefas podem ser em dois estados durante o processamento:

  1. Em uma CPU Burst onde a CPU está executando cálculos para processar a tarefa (o período para uma CPU Burst varia de tarefa para tarefa e programa para programar).
  2. Em uma Entrada / Saída (E / S) Burst esperando que os dados sejam recebidos ou enviados pelo sistema.

Quando a CPU está ociosa, o Agendador lê a fila Preparada e seleciona a próxima tarefa a ser executada. Então, é o Dispatcher que dá o controle de tarefa selecionado da CPU, por isso precisa ser rápido! Qualquer tempo assumido pelo Dispatcher é conhecido como Latência de Despacho .

Existem diferentes estruturas e parâmetros personalizados para definir a fila Ready, bem como vários métodos que podem ser usados ​​para gerenciar as complexidades do processo de agendamento.

Geralmente, trata-se de otimizar e maximizar a utilização da CPU, o throughput, etc.

O Agendador deve tomar uma decisão durante uma das seguintes etapas:

  1. Quando a Tarefa muda de Executando para um Estado de espera (por exemplo, esperando durante uma solicitação de E / S).
  2. Quando a Tarefa muda de Executando para Pronto (por exemplo, respondendo a uma interrupção).
  3. Quando a Tarefa muda de Esperando para Pronto (por exemplo, uma solicitação de E / S está concluída).
  4. Quando a Tarefa

Uma nova Tarefa deve ser selecionada se o estágio 1 ou 4 for necessário para garantir a utilização total da CPU, e em ambos os estágios 2 e 3, a tarefa pode continuar em execução ou uma nova é selecionado.

Depois de entender como uma tarefa é processada, vejamos dois modelos de agendamento que lidam com interrupções da CPU.

Ambos têm recursos semelhantes com tarefas, estados de tarefa, filas e prioridades (estáticas ou dinâmicas):

  • Agendamento não-Preemptivo é quando uma tarefa é executada até que ela pára (voluntariamente) ou finaliza. O Windows® teve o Agendamento Não Preemptivo até o Windows 3. x, após o qual ele mudou para Preemptivo a partir do Windows 95.
  • Agendamento Preemptivo é onde uma tarefa pode ser suspensa à força por uma interrupção da CPU, ao contrário de Não-Preemptiva, onde o A tarefa é executada até liberar o controle da CPU.

Agendamento não préemptivo

Tarefas dentro de um sistema não-preventivo serão executadas até serem concluídas.

O Agendador verifica os estados de todas as tarefas e agende a próxima tarefa de prioridade mais alta com um estado Pronto.

Com Agendamento Não Preemptivo, uma vez que uma tarefa tem sua atribuição à CPU, ela não pode ser removida, mesmo que tarefas curtas tenham que aguardar tarefas mais longas para serem concluídas.

O gerenciamento de agendamento em todas as tarefas é "justo" e os tempos de resposta são previsíveis, pois as tarefas de alta prioridade não podem colidir as tarefas em espera na fila.

O Agendador garante que cada tarefa obtenha o "compartilhamento da CPU", evitando qualquer atraso em qualquer tarefa. A "quantidade de tempo" atribuída à CPU pode não ser necessariamente igual, pois depende da duração da tarefa para completar.

Preemptive Scheduling

Este modelo de agendamento permite que as tarefas sejam interrompidas - em contraste com o Agendamento não-Preemptivo que possui uma abordagem "run-to-completion".

As interrupções, que podem ser iniciadas a partir de chamadas externas, invocam o Agendador para pausar uma tarefa em execução para gerenciar outra tarefa de maior prioridade, de modo que o controle da CPU pode ser antecipado.

A tarefa de maior prioridade em um estado Ready é executada, permitindo uma resposta rápida aos eventos em tempo real.

Alguns dos contras com Agendamento Preemptivo envolvem o aumento de despesas gerais nos recursos ao usar interrupções e os problemas podem ocorrer com duas tarefas compartilhando dados, uma vez que pode ser interrompido ao atualizar estruturas de dados compartilhadas e pode afetar negativamente a integridade dos dados.

Por outro lado, é prático poder pausar uma tarefa para gerenciar outra que possa ser crítica.

No resumo

Muitas variações e dependências em diferentes políticas podem ser definidas, como usar uma "Round Robin Policy [i]" em que cada tarefa (com igual prioridade) é executada uma vez e, em seguida, colocado no final da fila, para o próximo ciclo.

Outras políticas incluem Primeiro-Em-Primeiro-Fora , Mais curto-Trabalho-Primeiro , Menor trabalho-Próximo , Tempo restante mais curto , etc.

A análise de dados históricos pode fornecer informações sobre aspectos, como a taxa em que as novas tarefas chegam, a CPU e as Ráfagas de E / S, etc. assim, as distribuições de probabilidade podem calcular as características dos tempos de espera das tarefas, assim, armar administradores com dados relevantes para definir modelos de agendamento.