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.
Passo 1) No tempo = 1, nenhum novo processo chega. A execução continua com P1.
Passo 2) No tempo 2, nenhum processo novo chega, então você pode continuar com P1. P2 está na fila de espera.
Passo 3) No tempo 3, nenhum novo processo chega, então você pode continuar com P1. Processo P2 ainda em fila de espera.
Passo 4) No tempo 4, P1 finalizou sua execução. P2 inicia a execução.
Passo 5) No tempo = 5, nenhum processo novo chega, então continuamos com P2.
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 |
Etapa 7) Em no tempo 7, nenhum processo novo chega, então continuamos com P3. P2 está na fila de espera.
Passo 8) No tempo = 8, nenhum novo processo chega, então podemos continuar com P3.
Passo 9) No tempo = 9, nenhum novo processo ocorre, então podemos continuar com P3.
Passo 10) No intervalo de tempo 10, nenhum novo processo ocorre, 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.
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 |
Passo 12) No tempo=12, chega P5. P3 tem prioridade mais alta, então continua a execução.
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 |
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.
Passo 15) No tempo =15, P5 continua a execução.
Passo 16) No tempo= 16, P5 finaliza sua execução. P4 é o único processo restante. Inicia a execução.
Passo 17) No tempo =20, P5 concluiu a execução e nenhum processo resta.
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.