Programação preemptiva vs. não preemptiva: Principais diferenças

Índice:

Anonim

O que é agendamento preventivo?

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

Nesse momento, a tarefa de prioridade mais baixa é mantida por algum tempo e é retomada quando a tarefa de prioridade mais alta termina sua execução.

Neste tutorial do sistema operacional, você aprenderá:

  • O que é agendamento preventivo?
  • O que é programação não preventiva?
  • Diferença entre programação preemptiva e não preemptiva no sistema operacional
  • Vantagens do agendamento preventivo
  • Vantagens da programação não preemptiva
  • Desvantagens do agendamento preventivo
  • Desvantagens da programação não preemptiva
  • Exemplo de programação não preemptiva
  • Exemplo de programação preventiva

O que é programação não preventiva?

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 ao alternar o contexto ou ao encerrar.

É o único método que pode ser usado para várias plataformas de hardware. Isso porque ele não precisa de hardware especializado (por exemplo, um cronômetro) como o agendamento preventivo.

O agendamento não preemptivo ocorre quando um processo entra voluntariamente no estado de espera ou é encerrado.

Diferença entre programação preemptiva e não preemptiva no sistema operacional

Aqui, estão o agendamento preventivo e não preemptivo no sistema operacional

Agendamento preventivo Programação não preemptiva
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 finalizá-la antes de executar a outra. 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 preventivo.
O tempo de espera e de resposta da programação preemptiva é menor. O tempo de espera e de resposta do método de programação não preemptiva é 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 planejador até que seu trabalho seja concluído.
O agendamento preventivo é flexível. A programação não preemptiva é rígida.
Exemplos: - Menor tempo restante primeiro, round robin, etc. Exemplos: atendimento por ordem de chegada, trabalho mais curto primeiro, programação prioritária, etc.
O algoritmo de agendamento preventivo pode ser antecipado, ou seja, o processo pode ser agendado No processo de agendamento não preemptivo não pode ser agendado
Nesse processo, a CPU é alocada aos processos por um período de tempo específico. Nesse processo, a CPU é alocada ao processo até que ele seja encerrado ou passe para o estado de espera.
O algoritmo preventivo tem a sobrecarga de alternar o processo do estado pronto para o estado de execução e vice-versa. O agendamento não preemptivo não tem tal sobrecarga de mudar o processo de execução para o estado pronto.

Vantagens do agendamento preventivo

Aqui, estão os prós / benefícios do método de Agendamento preventivo:

  • O método de agendamento preventivo é mais robusto, abordagem para que um processo não monopolize a CPU
  • Escolha de 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 em todos os processos em execução.
  • Nisto, 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 preventivo é benéfico quando o usamos para o ambiente de multiprogramação.

Vantagens da programação não preemptiva

Aqui, estão os prós / benefícios do método de programação não preemptiva:

  • Oferece baixa sobrecarga de programação
  • Tende a oferecer alto rendimento
  • É um método conceitualmente muito simples
  • Menos recursos computacionais necessários para agendamento

Desvantagens do agendamento preventivo

Aqui, estão os contras / desvantagens do método de programação preemptiva:

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

Desvantagens da programação não preemptiva

Aqui, estão os contras / desvantagens do método de programação não preemptiva:

  • Isso pode levar à fome, especialmente para as tarefas em tempo real
  • Bugs podem fazer com que a máquina congele
  • Pode dificultar o agendamento em tempo real e prioritário
  • Tempo de resposta ruim para processos

Exemplo de programação não preemptiva

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

Considere os cinco processos a seguir, 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.

Etapa 1) No tempo = 1, o processo P3 chega. Mas, P4 ainda precisa de 2 unidades de execução para ser concluído. Ele continuará a execução.

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

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

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

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

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

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

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

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

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

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

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

Exemplo de programação preventiva

Considere os três processos a seguir no Round-robin

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

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

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

Etapa 3) No tempo = 4, P2 é antecipado e adicionado no final da fila. P3 começa a executar.

Etapa 4) No tempo = 6, P3 é antecipado e adicionado no final da fila. P1 começa a executar.

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

Etapa 6) P2 tem um burst time de 3. Já foi executado por 2 intervalos. No tempo = 9, P2 conclui a execução. Em seguida, P3 inicia a execução até que seja concluída.

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

Wait timeP1= 0+ 4= 4P2= 2+4= 6P3= 4+3= 7

PRINCIPAIS DIFERENÇAS

  • No escalonamento preemptivo, a CPU é alocada para os processos por um período de tempo específico, e a CPU do 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 o Agendamento não preemptivo nenhuma alternância ocorre.
  • O algoritmo preemptivo tem a sobrecarga de alternar o processo do estado pronto para o estado de execução, enquanto o agendamento não preemptivo não tem essa sobrecarga de alternância.
  • A programação preemptiva é flexível, enquanto a programação não preemptiva é rígida.