Diferença entre Agendamento Preemptivo e Não Preemptivo em Sistemas Operacionais Diferença entre
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:
- 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).
- 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:
- Quando a Tarefa muda de Executando para um Estado de espera (por exemplo, esperando durante uma solicitação de E / S).
- Quando a Tarefa muda de Executando para Pronto (por exemplo, respondendo a uma interrupção).
- Quando a Tarefa muda de Esperando para Pronto (por exemplo, uma solicitação de E / S está concluída).
- 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.