Até agora estávamos agendando os processos de acordo com o horário de chegada (no agendamento FCFS). Porém, o algoritmo de escalonamento SJF escalona os processos de acordo com seu tempo de burst.
No escalonamento SJF, o processo com menor tempo de burst, dentre a lista de processos disponíveis na fila de prontos, será escalonado em seguida.
No entanto, é muito difícil prever o tempo de rajada necessário para um processo, portanto este algoritmo é muito difícil de implementar no sistema.
exemplo de substring java
Vantagens do SJF
- Taxa de transferência máxima
- Tempo médio mínimo de espera e resposta
Desvantagens do SJF
- Pode sofrer com o problema da fome
- Não é implementável porque o tempo exato de Burst de um processo não pode ser conhecido antecipadamente.
Existem diferentes técnicas disponíveis pelas quais o tempo de pico da CPU do processo pode ser determinado. Iremos discuti-los mais tarde em detalhes.
Exemplo
No exemplo a seguir, existem cinco trabalhos denominados P1, P2, P3, P4 e P5. A hora de chegada e o tempo de burst são fornecidos na tabela abaixo.
PID | Tempo de chegada | Tempo de explosão | Tempo de conclusão | Tempo de resposta | Tempo de espera |
---|---|---|---|---|---|
1 | 1 | 7 | 8 | 7 | 0 |
2 | 3 | 3 | 13 | 10 | 7 |
3 | 6 | 2 | 10 | 4 | 2 |
4 | 7 | 10 | 31 | 24 | 14 |
5 | 9 | 8 | vinte e um | 12 | 4 |
Desde então, nenhum processo chega no tempo 0; haverá um espaço vazio no gráfico de Gantt do tempo 0 a 1 (o momento em que chega o primeiro processo).
De acordo com o algoritmo, o SO escalona o processo que apresenta o menor tempo de burst dentre os processos disponíveis na fila de prontos.
Até agora, temos apenas um processo na fila de prontos, portanto, o escalonador irá agendá-lo para o processador, independentemente do tempo de burst.
Isso será executado até 8 unidades de tempo. Até então, temos mais três processos chegando na fila de prontos, portanto o escalonador escolherá o processo com menor tempo de burst.
converter uma data em uma string
Dentre os processos indicados na tabela, o P3 será executado em seguida por apresentar o menor tempo de burst dentre todos os processos disponíveis.
Então é assim que o procedimento continuará em trabalho mais curto primeiro (SJF) algoritmo de agendamento.
Tempo médio de espera = 27/5