Agendamento Preemptivo e Não Preemptivo

Principais diferenças entre agendamento preemptivo e não preemptivo

  • No escalonamento preemptivo, a CPU é alocada para os processos por um período de tempo específico, e a CPU de escalonamento não preemptivo é alocada para o processo até que ele termine.
  • No agendamento preemptivo, as tarefas são alternadas com base na prioridade, enquanto no agendamento não preemptivo não ocorre nenhuma alternância.
  • O algoritmo preemptivo tem a sobrecarga de mudar o processo do estado pronto para o estado em execução, enquanto o agendamento não preemptivo não tem essa sobrecarga de mudança.
  • O agendamento preemptivo é flexível, enquanto o agendamento não preemptivo é rígido.
Agendamento Preemptivo x Não Preemptivo
Agendamento Preemptivo x Não Preemptivo

O que é Agendamento Preemptivo?

O agendamento preemptivo é um método de agendamento em que as tarefas são atribuídas principalmente com suas prioridades. Às vezes é importante executar uma tarefa com prioridade mais alta antes de outra tarefa com prioridade mais baixa, mesmo que a tarefa com prioridade mais baixa ainda esteja em execução.

Nesse momento, a tarefa de menor prioridade é mantida por algum tempo e reinicia quando a tarefa de maior prioridade termina sua execução.

O que é Agendamento Não Preemptivo?

Neste tipo de método de escalonamento, a CPU foi alocada para um processo específico. O processo que mantém a CPU ocupada irá liberá-la alternando o contexto ou encerrando.

É o único método que pode ser usado para diversas plataformas de hardware. Isso porque ele não precisa de hardware especializado (por exemplo, um timer), como o agendamento preemptivo.

O escalonamento não preemptivo ocorre quando um processo entra voluntariamente no estado de espera ou termina.

Agendamento Preemptivo versus Não Preemptivo: Tabela de Comparação

Aqui estão as comparações diretas entre agendamento preemptivo e não preemptivo. As principais diferenças entre agendamento preemptivo e não preemptivo no sistema operacional são as seguintes:

Agendamento Preemptivo Agendamento não preventivo
Um processador pode ser impedido de executar os diferentes processos no meio de qualquer execução de processo atual. Uma vez que o processador inicia sua execução, ele deve terminá-la antes de executar o outro. Não pode ser pausado no meio.
A utilização da CPU é mais eficiente em comparação com o agendamento não preemptivo. A utilização da CPU é menos eficiente em comparação com o agendamento preemptivo.
O tempo de espera e resposta do agendamento preemptivo é menor. O tempo de espera e de resposta do método de agendamento não preemptivo é maior.
O agendamento preventivo é priorizado. O processo de maior prioridade é aquele que é utilizado atualmente. Quando qualquer processo entra no estado de execução, o estado desse processo nunca é excluído do agendador até que ele termine seu trabalho.
O agendamento preventivo é flexível. O agendamento não preemptivo é rígido.
Exemplos: – Tempo restante mais curto primeiro, Round Robin, etc. Exemplos: Primeiro a chegar, primeiro a servir, trabalho mais curto primeiro, agendamento prioritário, etc.
O algoritmo de agendamento preemptivo pode ser antecipado, ou seja, o processo pode ser agendado No processo de agendamento não preemptivo não pode ser agendado
Neste processo, a CPU é alocada aos processos por um período de tempo específico. Neste processo, a CPU é alocada para o processo até que ele termine ou mude para o estado de espera.
O algoritmo preemptivo tem a sobrecarga de mudar o processo do estado pronto para o estado em execução e vice-versa. O agendamento não preemptivo não tem essa sobrecarga de mudar o processo da execução para o estado pronto.

Vantagens do agendamento preventivo

Aqui estão os prós/benefícios do método de agendamento preemptivo:

  • O método de escalonamento preemptivo é mais robusto, abordagem para que um processo não possa monopolizar a CPU
  • Escolha da tarefa em execução reconsiderada após cada interrupção.
  • Cada evento causa interrupção das tarefas em execução
  • O sistema operacional garante que o uso da CPU seja o mesmo para todos os processos em execução.
  • Neste, o uso da CPU é o mesmo, ou seja, todos os processos em execução farão uso da CPU igualmente.
  • Este método de agendamento também improvisa o tempo médio de resposta.
  • O agendamento preemptivo é benéfico quando o usamos para o ambiente de multiprogramação.

Vantagens do agendamento não preemptivo

Aqui estão os prós/benefícios do método de agendamento não preemptivo:

  • Oferece baixa sobrecarga de agendamento
  • Tende a oferecer alto rendimento
  • É um método conceitualmente muito simples
  • Menos necessidade de recursos computacionais para agendamento

Desvantagens do agendamento preventivo

Following são as desvantagens do agendamento preventivo:

  • Precisa de recursos computacionais limitados para agendamento
  • O agendador leva mais tempo para suspender a tarefa em execução, mudar o contexto e despachar a nova tarefa recebida.
  • O processo de baixa prioridade precisa esperar mais tempo se alguns processos de alta prioridade chegarem continuamente.

Desvantagens do agendamento não preemptivo

Aqui estão os contras/desvantagens do método de agendamento não preemptivo:

  • Pode levar à fome, especialmente para tarefas em tempo real
  • Bugs podem fazer com que uma máquina congele
  • Ele pode fazer em tempo real e Agendamento prioritário difícil
  • Tempo de resposta ruim para processos

Exemplo de agendamento não preemptivo

No escalonamento SJF não preemptivo, uma vez que o ciclo da CPU é alocado para o processo, o processo o retém até atingir um estado de espera ou ser encerrado.

Considere o seguintewing cinco processos, cada um com seu próprio tempo de burst e tempo de chegada exclusivos.

Fila de Processo Tempo de explosão Tempo de chegada
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Passo 0) No tempo=0, P4 chega e inicia a execução.

Exemplo de agendamento não preemptivo

Passo 1) No tempo = 1, chega o Processo P3. Porém, P4 ainda precisa de 2 unidades de execução para ser concluído. Ele continuará a execução.

Exemplo de agendamento não preemptivo

Passo 2) No tempo =2, o processo P1 chega e é adicionado à fila de espera. P4 continuará a execução.

Exemplo de agendamento não preemptivo

Passo 3) No tempo = 3, o processo P4 finalizará sua execução. O tempo de burst de P3 e P1 é comparado. O processo P1 é executado porque seu tempo de burst é menor comparado ao P3.

Exemplo de agendamento não preemptivo

Passo 4) No tempo = 4, o processo P5 chega e é adicionado à fila de espera. P1 continuará a execução.

Exemplo de agendamento não preemptivo

Passo 5) No tempo = 5, o processo P2 chega e é adicionado à fila de espera. P1 continuará a execução.

Exemplo de agendamento não preemptivo

Passo 6) No tempo = 9, o processo P1 finalizará sua execução. O tempo de burst de P3, P5 e P2 é comparado. O processo P2 é executado porque seu tempo de burst é o menor.

Exemplo de agendamento não preemptivo

Passo 7) No tempo=10, P2 está em execução e P3 e P5 estão na fila de espera.

Exemplo de agendamento não preemptivo

Passo 8) No tempo = 11, o processo P2 finalizará sua execução. O tempo de burst de P3 e P5 é comparado. O processo P5 é executado porque seu tempo de burst é menor.

Exemplo de agendamento não preemptivo

Passo 9) No tempo = 15, o processo P5 finalizará sua execução.

Exemplo de agendamento não preemptivo

Passo 10) No tempo = 23, o processo P3 finalizará sua execução.

Exemplo de agendamento não preemptivo

Passo 11) Vamos calcular o tempo médio de espera para o exemplo acima.

Wait time 
P4= 0-0=0
P1=  3-2=1
P2= 9-5=4
P5= 11-4=7
P3= 15-1=14
Average Waiting Time= 0+1+4+7+14/5 = 26/5 = 5.2

Exemplo de agendamento preventivo

Considere este seguintewing três processos em Rodada

Fila de Processo Tempo de explosão
P1 4
P2 3
P3 5

Exemplo de agendamento preventivo

Passo 1) A execução começa com o processo P1, que possui tempo de burst 4. Aqui, cada processo é executado por 2 segundos. P2 e P3 ainda estão na fila de espera.

Exemplo de agendamento preventivo

Passo 2) No tempo =2, P1 é adicionado ao final da Fila e P2 começa a executar

Exemplo de agendamento preventivo

Passo 3) Em time=4 , P2 é preemptado e adicionado no final da fila. P3 começa a executar.

Exemplo de agendamento preventivo

Passo 4) Em time=6 , P3 é preemptado e adicionado no final da fila. P1 começa a executar.

Exemplo de agendamento preventivo

Passo 5) Em time=8 , P1 tem um tempo de burst de 4. Ele concluiu a execução. P2 inicia execução

Exemplo de agendamento preventivo

Passo 6) P2 tem tempo de burst de 3. Já foi executado por 2 intervalos. No tempo=9, P2 completa a execução. Então, P3 inicia a execução até terminar.

Exemplo de agendamento preventivo

Passo 7) Vamos calcular o tempo médio de espera para o exemplo acima.

Wait time 
P1= 0+ 4= 4
P2= 2+4= 6
P3= 4+3= 7