Algoritmo de Escalonamento por Prioridade: Preemptivo, Não Preemptivo
⚡ Resumo Inteligente
O escalonamento por prioridade é um método de escalonamento de CPU que seleciona processos com base na prioridade, executando primeiro as tarefas de maior prioridade. Pode ser preemptivo ou não preemptivo, e os processos com prioridade igual são tratados por ordem de chegada ou em esquema de rodízio.

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
O agendamento por prioridade divide-se 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
Nesse tipo de método de escalonamento, a CPU é alocada a um processo específico. O processo que mantém a CPU ocupada a libera, seja trocando de contexto ou encerrando-se. É o único método que pode ser usado em diversas plataformas de hardware, pois não requer hardware especial (como um temporizador), como ocorre no escalonamento 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 a prioridade.
- Nesse tipo de algoritmo de escalonamento, se um processo mais recente chegar com prioridade maior que o processo em execução, então o processo em execução é preemptado.
Exemplo de agendamento prioritário
Considere os cinco processos a seguir, de P1 a P5. Cada processo possui sua prioridade, tempo de execução e tempo de chegada únicos.
| Processo | 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 instante t = 0, os processos P1 e P2 chegam. P1 tem prioridade maior que P2. A execução começa com o processo P1, que tem tempo de execução 4.
Passo 1) No instante t = 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 instante 3, nenhum novo processo chega, então você pode continuar com P1. O processo P2 ainda está na fila de espera.
Passo 4) No tempo 4, P1 finalizou sua execução. P2 inicia a execução.
Passo 5) No instante t = 5, nenhum novo processo chega, então continuamos com P2.
Passo 6) No instante t = 6, P3 chega. P3 tem prioridade mais alta (1) em comparação com P2, que tem prioridade (2). P2 é preemptado e P3 inicia sua execução.
| Processo | 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 7) No instante 7, nenhum novo processo chega, então continuamos com P3. P2 está na fila de espera.
Passo 8) No instante t = 8, nenhum novo processo chega, então podemos continuar com P3.
Passo 9) No instante t = 9, nenhum novo processo surge, então podemos continuar com P3.
Passo 10) No intervalo de tempo 10, nenhum novo processo surge, então continuamos com P3.
Passo 11) No instante t = 11, P4 chega com prioridade 4. P3 tem prioridade maior, então continua sua execução.
| Processo | 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 instante t = 12, P5 chega. P3 tem prioridade mais alta, então continua a execução.
Passo 13) No instante t = 13, P3 conclui sua execução. Temos P2, P4 e P5 na fila de prontos. P2 e P5 têm a mesma prioridade. O tempo de chegada de P2 é anterior ao de P5, portanto P2 inicia sua execução.
| Processo | 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 instante t = 14, o processo P2 terminou sua execução. P4 e P5 estão em estado de espera. P5 tem a prioridade mais alta e inicia sua execução.
Passo 15) No instante t = 15, P5 continua a execução.
Passo 16) No instante t = 16, P5 termina sua execução. P4 é o único processo restante. Ele inicia sua execução.
Passo 17) No instante t = 20, P4 concluiu sua execução e não há mais processos restantes.
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 = 0 - 0 = 0 P2 = 4 - 0 + 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/vantagens de usar o método de agendamento por prioridade:
- Método de agendamento fácil de usar.
- Os processos são executados com base na prioridade, portanto, os de alta prioridade não precisam esperar muito, o que economiza tempo.
- Este método oferece um bom mecanismo para definir com precisão a importância relativa de cada processo.
- Adequado para aplicações com requisitos flutuantes de tempo e recursos.
Desvantagens do agendamento prioritário
Aqui estão as desvantagens do agendamento por prioridade:
- 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.


















