Самое короткое задание сначала (без вытеснения) с примером планирования прогнозирования на будущее - PullRequest
0 голосов
/ 04 апреля 2019

Я понимаю, как работает планирование первоочередного (не упреждающего) задания.По сути, когда процессор завершит текущее задание, он выберет самое короткое задание в очереди для выполнения следующим.

Это пример, который я нашел в Интернете.

SJF (non preemptive example)

Я пытаюсь понять, как будет выглядеть этот пример, если этодля SJF с будущим прогнозом.Есть много примеров того, как вычислить следующий прогноз [пример] .Но я не могу найти пример, который иллюстрирует, как прогнозируемое время загрузки ЦП будет использоваться для выбора следующего задания для выполнения.

Скажем, Tn - это прогнозируемое время пакета для n-го задания.tn - фактическое время взрыва.Первоначальный прогноз T1 = 5, а = 0,5.

Используя приведенный выше пример, P1 - это первое задание, поэтому ЦП будет загружаться немедленно.Но когда P2 достигает 2, как мы вычисляем T2?

Это T2 = 0,5 * T1 + 0,5 * t1?Но в 2, P1 еще не закончил, как мы узнаем фактическое время t1 для P1?

Редактировать: Как упомянуто @Zain Arshad, T2 может быть вычислено, когда P1 заканчивается в 7. Но в 7,оба P2 и P3 прибыли.То есть Т2 = 0,5 * Т1 + 0,5 * Т1 и Т3 = 0,5 * Т1 + 0,5 * Т1?Тогда какой из P2 и P3 выполнить следующим?

Или у моего понимания есть фундаментальная проблема?

1 Ответ

0 голосов
/ 04 апреля 2019

Ваше понимание верно до сих пор:

Но в 2, P1 еще не закончил, как мы узнаем фактическое время взрыва t1 для P1?

Процессор не подхватит сразу, в этом примере он выберет после 7 , потому что для этого нужно сначала выполнить задание.Вы используете SJF Non-Preemptive, термин Non-Preemptive является самоописательным, поскольку ЦП не будет вытеснять текущий процесс, поэтому ему не нужно будет вычислять значение 2 , вместо этого он будет ждатьпроцесс завершен.

...