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.