Algoritmo de agendamento de prioridade: EXEMPLO preemptivo e não preemptivo

O que é agendamento prioritário?

Agendamento prioritário é um método de agendamento de processos baseado em prioridade. Neste algoritmo, o agendador seleciona as tarefas para trabalhar de acordo com a prioridade.

Os processos com prioridade mais alta devem ser executados primeiro, enquanto os trabalhos com prioridades iguais são executados em rodízio ou FCFS. A prioridade depende dos requisitos de memória, requisitos de tempo, etc.

Tipos de agendamento prioritário

Agendamento prioritário dividido em dois tipos principais:

Agendamento Preemptivo

No Agendamento Preemptivo, 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. A tarefa de menor prioridade é mantida por algum tempo e continua quando a tarefa de maior prioridade termina sua execução.

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á liberar a CPU trocando de contexto ou encerrando. É o único método que pode ser usado para diversas plataformas de hardware. Isso porque não precisa de hardware especial (por exemplo, um temporizador), como agendamento preemptivo.

Características do agendamento prioritário

  • Um algoritmo de CPU que agenda processos com base na prioridade.
  • É usado em Operasistemas para executar processos em lote.
  • Se dois trabalhos com a mesma prioridade estiverem PRONTOS, ele funciona em um PRIMEIRO A CHEGAR, PRIMEIRO A SER SERVIDO base.
  • No escalonamento de prioridade, é atribuído um número a cada processo que indica seu nível de prioridade.
  • Quanto menor o número, maior será a prioridade.
  • Neste tipo de algoritmo de escalonamento, se chegar um processo mais novo, que tenha uma prioridade mais alta do que o processo em execução no momento, o processo em execução no momento será preemptado.

Exemplo de agendamento prioritário

Considere seguir cinco processos P1 a P5. Cada processo tem sua prioridade, tempo de burst e horário de chegada exclusivos.

Extração Prioridade Tempo de explosão Tempo de chegada
P1 1 4 0
P2 2 3 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Passo 0) No tempo = 0, chegam os processos P1 e P2. P1 tem prioridade mais alta que P2. A execução começa com o processo P1, que possui tempo de burst 4.

Agendamento prioritário

Passo 1) No tempo = 1, nenhum novo processo chega. A execução continua com P1.

Agendamento prioritário

Passo 2) No tempo 2, nenhum processo novo chega, então você pode continuar com P1. P2 está na fila de espera.

Agendamento prioritário

Passo 3) No tempo 3, nenhum novo processo chega, então você pode continuar com P1. Processo P2 ainda em fila de espera.

Agendamento prioritário

Passo 4) No tempo 4, P1 finalizou sua execução. P2 inicia a execução.

Agendamento prioritário

Passo 5) No tempo = 5, nenhum processo novo chega, então continuamos com P2.

Agendamento prioritário

Passo 6) No tempo=6, chega P3. P3 tem prioridade mais alta (1) em comparação com P2 que tem prioridade (2). P2 é preemptado e P3 inicia sua execução.

Extração Prioridade Tempo de explosão Tempo de chegada
P1 1 4 0
P2 2 1 de 3 pendentes 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Agendamento prioritário

Etapa 7) Em no tempo 7, nenhum processo novo chega, então continuamos com P3. P2 está na fila de espera.

Agendamento prioritário

Passo 8) No tempo = 8, nenhum novo processo chega, então podemos continuar com P3.

Agendamento prioritário

Passo 9) No tempo = 9, nenhum novo processo ocorre, então podemos continuar com P3.

Agendamento prioritário

Passo 10) No intervalo de tempo 10, nenhum novo processo ocorre, então continuamos com P3

Agendamento prioritário

Passo 11) No tempo=11, P4 chega com prioridade 4. P3 tem maior prioridade, então continua sua execução.

Extração Prioridade Tempo de explosão Tempo de chegada
P1 1 4 0
P2 2 1 de 3 pendentes 0
P3 1 2 de 7 pendentes 6
P4 3 4 11
P5 2 2 12

Agendamento prioritário

Passo 12) No tempo=12, chega P5. P3 tem prioridade mais alta, então continua a execução.

Agendamento prioritário

Passo 13) No tempo=13, P3 conclui a execução. Nós temos P2, P4, P5 em fila de prontos. P2 e P5 têm prioridade igual. O horário de chegada do P2 é antes do P5. Então P2 inicia a execução.

Extração Prioridade Tempo de explosão Tempo de chegada
P1 1 4 0
P2 2 1 de 3 pendentes 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Agendamento prioritário

Passo 14) No tempo =14, o processo P2 finalizou sua execução. P4 e P5 estão em estado de espera. P5 tem a prioridade mais alta e inicia a execução.

Agendamento prioritário

Passo 15) No tempo =15, P5 continua a execução.

Agendamento prioritário

Passo 16) No tempo= 16, P5 finaliza sua execução. P4 é o único processo restante. Inicia a execução.

Agendamento prioritário

Passo 17) No tempo =20, P5 concluiu a execução e nenhum processo resta.

Agendamento prioritário

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

Tempo de espera = hora de início – hora de chegada + tempo de espera para o próximo burst

P1 = o - o = o
P2 =4 - o + 7 =11	
P3= 6-6=0
P4= 16-11=5
Average Waiting time = (0+11+0+5+2)/5 = 18/5= 3.6

Vantagens do agendamento prioritário

Aqui estão os benefícios/prós de usar o método de agendamento prioritário:

  • Método de agendamento fácil de usar
  • Os processos são executados com base na prioridade, portanto a alta prioridade não precisa esperar muito, o que economiza tempo
  • Este método fornece um bom mecanismo onde a importância relativa de cada processo pode ser definida com precisão.
  • Adequado para aplicações com requisitos flutuantes de tempo e recursos.

Desvantagens do agendamento prioritário

Aqui estão os contras/desvantagens do agendamento prioritário

  • Se o sistema eventualmente travar, todos os processos de baixa prioridade serão perdidos.
  • Se os processos de alta prioridade consumirem muito tempo de CPU, os processos de prioridade mais baixa poderão morrer de fome e serão adiados por tempo indefinido.
  • Este algoritmo de escalonamento pode deixar alguns processos de baixa prioridade aguardando indefinidamente.
  • Um processo será bloqueado quando estiver pronto para ser executado, mas terá que esperar pela CPU porque algum outro processo está em execução no momento.
  • Se um novo processo de prioridade mais alta continuar chegando na fila de prontidão, então o processo que está no estado de espera pode precisar esperar por um longo período de tempo.

Resumo

  • O agendamento prioritário é um método de agendamento de processos baseado na prioridade. Neste algoritmo, o agendador seleciona as tarefas para trabalhar de acordo com a prioridade.
  • No Agendamento Preemptivo Prioritário, as tarefas são em sua maioria atribuídas com suas prioridades.
  • No método de escalonamento prioritário não preemptivo, a CPU foi alocada para um processo específico.
  • Os processos são executados com base na prioridade, portanto a alta prioridade não precisa esperar muito, o que economiza tempo
  • Se os processos de alta prioridade consumirem muito tempo de CPU, os processos de prioridade mais baixa poderão morrer de fome e serão adiados por tempo indefinido.