Algoritmo de escalonamento de prioridade: preemptivo, não preemptivo EXEMPLO

Índice:

Anonim

O que é agendamento prioritário?

O agendamento prioritário é um método de agendamento de processos baseado na prioridade. Neste algoritmo, o escalonador 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.

Neste tutorial do sistema operacional, você aprenderá:

  • O que é agendamento prioritário?
  • Tipos de agendamento prioritário
  • Características da Programação Prioritária
  • Exemplo de agendamento prioritário
  • Vantagens do agendamento prioritário
  • Desvantagens do agendamento prioritário

Tipos de agendamento prioritário

Agendamento prioritário dividido em dois tipos principais:

Agendamento preventivo

No Agendamento preventivo, 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. A tarefa de prioridade mais baixa é mantida por algum tempo e recomeça quando a tarefa de prioridade mais alta termina sua execução.

Programação Não Preemptiva

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 alternando o contexto ou encerrando. É o único método que pode ser usado para várias plataformas de hardware. Isso porque ele não precisa de hardware especial (por exemplo, um cronômetro) como o agendamento preventivo.

Características da Programação Prioritária

  • Um algoritmo de CPU que agenda processos com base na prioridade.
  • É usado em sistemas operacionais para realizar processos em lote.
  • Se dois jobs com a mesma prioridade estiverem PRONTOS, ele funcionará em uma base de PRIMEIRA VINDA, PRIMEIRO SERVIDO.
  • Na programação de prioridade, um número é atribuído a cada processo que indica seu nível de prioridade.
  • Quanto menor o número, maior será a prioridade.
  • Nesse 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á interrompido.

Exemplo de agendamento prioritário

Considere seguir cinco processos P1 a P5. Cada processo tem sua prioridade única, tempo de burst e tempo de chegada.

Processar 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

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

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

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

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

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

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

Etapa 6) No tempo = 6, P3 chega. P3 está em prioridade mais alta (1) em comparação com P2 tendo prioridade (2). P2 é antecipado e P3 inicia sua execução.

Processar 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

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

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

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

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

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

Processar 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

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

Etapa 13) No tempo = 13, P3 conclui a execução. Temos P2, P4, P5 na fila de espera. P2 e P5 têm igual prioridade. A hora de chegada do P2 é antes do P5. Então P2 começa a execução.

Processar 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

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

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

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

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

Etapa 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 a próxima rajada

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

Vantagens do agendamento prioritário

Aqui, estão os benefícios / vantagens de usar o método de programação de prioridade:

  • Método de agendamento fácil de usar
  • Os processos são executados com base na prioridade, então 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 tempo variável e requisitos de recursos.

Desvantagens do agendamento prioritário

Aqui, estão os contras / desvantagens do agendamento de prioridade

  • Se o sistema eventualmente travar, todos os processos de baixa prioridade serão perdidos.
  • Se os processos de alta prioridade levarem muito tempo de CPU, os processos de baixa prioridade podem morrer de fome e serão adiados por um tempo indefinido.
  • Este algoritmo de escalonamento pode deixar alguns processos de baixa prioridade esperando 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 alta prioridade continuar entrando na fila de espera, o processo que está no estado de espera pode precisar aguardar 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 escalonador seleciona as tarefas para trabalhar de acordo com a prioridade.
  • Na Programação preventiva prioritária, as tarefas são geralmente 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, então a alta prioridade não precisa esperar muito, o que economiza tempo
  • Se os processos de alta prioridade levarem muito tempo de CPU, os processos de baixa prioridade podem morrer de fome e serão adiados por um tempo indefinido.