Сначала самое короткое задание (SJF): пример с вытеснением и без вытеснения

Что такое планирование кратчайшего первого задания?

Кратчайшее задание сначала (SJF) — алгоритм, в котором для следующего выполнения выбирается процесс, имеющий наименьшее время выполнения. Этот метод планирования может быть упреждающим или невытесняющим. Это значительно сокращает среднее время ожидания других процессов, ожидающих выполнения. Полная форма SJF — «Сначала короткая работа».

Существует два основных типа методов SJF:

  • Невытесняющий SJF
  • Упреждающий SJF

Характеристики планирования SJF

  • Он связан с каждым заданием как единица времени для завершения.
  • Этот метод алгоритма полезен для пакетной обработки, когда ожидание завершения заданий не является критическим.
  • Это может повысить производительность процесса, гарантируя, что более короткие задания выполняются в первую очередь, что, возможно, обеспечивает короткое время выполнения.
  • Это повышает производительность труда, предлагая более короткие задания, которые следует выполнять в первую очередь, которые обычно имеют более короткое время выполнения.

Невытесняющий SJF

При невытесняющем планировании, как только цикл ЦП выделяется для процесса, процесс удерживает его до тех пор, пока не достигнет состояния ожидания или не завершится.

Рассмотрим следующие пять процессов, каждый из которых имеет свое уникальное время пакета и время прибытия.

Очередь процесса Время взрыва Время прибытия
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Шаг 0) В момент времени = 0 прибывает P4 и начинает выполнение.

Невытесняющий SJF

Шаг 1) В момент времени = 1 прибывает процесс P3. Но для завершения P4 по-прежнему требуется 2 исполнительных блока. Он продолжит выполнение.

Невытесняющий SJF

Шаг 2) В момент времени =2 прибывает процесс P1 и добавляется в очередь ожидания. P4 продолжит выполнение.

Невытесняющий SJF

Шаг 3) В момент времени = 3 процесс P4 завершит свое выполнение. Сравнивается время пакетной передачи P3 и P1. Процесс P1 выполняется, поскольку время его пакета меньше, чем у P3.

Невытесняющий SJF

Шаг 4) В момент времени = 4 прибывает процесс P5 и добавляется в очередь ожидания. P1 продолжит выполнение.

Невытесняющий SJF

Шаг 5) В момент времени = 5 прибывает процесс P2 и добавляется в очередь ожидания. P1 продолжит выполнение.

Невытесняющий SJF

Шаг 6) В момент времени = 9 процесс P1 завершит свое выполнение. Сравнивается время пакетной передачи P3, P5 и P2. Процесс P2 выполняется, поскольку его время пакета наименьшее.

Невытесняющий SJF

Шаг 7) В момент времени = 10 выполняется P2, а P3 и P5 находятся в очереди ожидания.

Невытесняющий SJF

Шаг 8) В момент времени = 11 процесс P2 завершит свое выполнение. Сравнивается время пакетной передачи P3 и P5. Процесс P5 выполняется, поскольку время его пакета меньше.

Невытесняющий SJF

Шаг 9) В момент времени = 15 процесс P5 завершит свое выполнение.

Невытесняющий SJF

Шаг 10) В момент времени = 23 процесс P3 завершит свое выполнение.

Невытесняющий SJF

Шаг 11) Давайте рассчитаем среднее время ожидания для приведенного выше примера.

Wait time 
P4= 0-0=0
P1=  3-2=1
P2= 9-5=4
P5= 11-4=7
P3= 15-1=14
Average Waiting Time= 0+1+4+7+14/5 = 26/5 = 5.2

Упреждающий SJF

При упреждающем планировании SJF задания помещаются в очередь готовности по мере их поступления. Процесс с наименьшим временем пакета начинает выполнение. Если прибывает процесс с еще более коротким временем пакета, текущий процесс удаляется или вытесняется из выполнения, а цикл ЦП выделяется более короткому заданию.

Рассмотрим следующие пять процессов:

Очередь процесса Время взрыва Время прибытия
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Шаг 0) В момент времени = 0 прибывает P4 и начинает выполнение.

Очередь процесса Время взрыва Время прибытия
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Упреждающий SJF

Шаг 1) В момент времени = 1 прибывает процесс P3. Но у P4 более короткое время серийной съемки. Он продолжит выполнение.

Упреждающий SJF

Шаг 2) В момент времени = 2 процесс P1 прибывает с временем пакета = 6. Время пакета больше, чем у P4. Следовательно, P4 продолжит выполнение.

Упреждающий SJF

Шаг 3) В момент времени = 3 процесс P4 завершит свое выполнение. Сравнивается время пакетной передачи P3 и P1. Процесс P1 выполняется, поскольку время его пакета меньше.

Упреждающий SJF

Шаг 4) В момент времени = 4 прибудет процесс P5. Сравнивается время пакетной передачи P3, P5 и P1. Процесс P5 выполняется, поскольку его время пакета наименьшее. Процесс P1 вытесняется.

Очередь процесса Время взрыва Время прибытия
P1 осталось 5 из 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Упреждающий SJF

Шаг 5) В момент времени = 5 прибудет процесс P2. Сравнивается время пакетной передачи P1, P2, P3 и P5. Процесс P2 выполняется, поскольку его время пакета наименьшее. Процесс P5 вытесняется.

Очередь процесса Время взрыва Время прибытия
P1 осталось 5 из 6 2
P2 2 5
P3 8 1
P4 3 0
P5 осталось 3 из 4 4

Упреждающий SJF

Шаг 6) В момент времени =6 выполняется P2.

Упреждающий SJF

Шаг 7) В момент времени =7 P2 завершает свое выполнение. Сравнивается время пакетной передачи P1, P3 и P5. Процесс P5 выполняется, поскольку время его пакета меньше.

Очередь процесса Время взрыва Время прибытия
P1 осталось 5 из 6 2
P2 2 5
P3 8 1
P4 3 0
P5 осталось 3 из 4 4

Упреждающий SJF

Шаг 8) В момент времени =10 P5 завершит свое выполнение. Сравнивается время пакетной передачи P1 и P3. Процесс P1 выполняется, поскольку время его пакета меньше.

Упреждающий SJF

Шаг 9) В момент времени =15 P1 завершает свое выполнение. P3 — единственный оставшийся процесс. Он начнет выполнение.

Упреждающий SJF

Шаг 10) В момент времени =23 P3 завершает свое выполнение.

Упреждающий SJF

Шаг 11) Давайте рассчитаем среднее время ожидания для приведенного выше примера.

Wait time 
P4= 0-0=0
P1=  (3-2) + 6 =7
P2= 5-5 = 0
P5= 4-4+2 =2
P3= 15-1 = 14
Average Waiting Time = 0+7+0+2+14/5 = 23/5 =4.6

Преимущества компании SJF.

Вот преимущества/плюсы использования метода SJF:

  • SJF часто используется для долгосрочного планирования.
  • Это сокращает среднее время ожидания по алгоритму FIFO (первым пришел – первым обслужен).
  • Метод SJF дает наименьшее среднее время ожидания для определенного набора процессов.
  • Это подходит для пакетных заданий, где время выполнения известно заранее.
  • Для пакетной системы долгосрочного планирования оценку времени пакета можно получить из описания задания.
  • Для краткосрочного планирования нам нужно спрогнозировать значение времени следующего пакета.
  • Вероятно, оптимально с точки зрения среднего времени выполнения заказа.

Недостатки/минусы SJF

Вот некоторые недостатки/минусы алгоритма SJF:

  • Время завершения работы должно быть известно заранее, но его трудно предсказать.
  • Он часто используется в пакетной системе для долгосрочного планирования.
  • SJF не может быть реализован для Планирование ЦП на короткий срок. Это связано с тем, что не существует конкретного метода прогнозирования продолжительности предстоящего всплеска ЦП.
  • Этот алгоритм может привести к очень длительному времени обработки или голоданию.
  • Требуется знание того, как долго будет выполняться процесс или задание.
  • Это приводит к голоданию, что не сокращает среднее время выполнения работ.
  • Трудно узнать длину предстоящего запроса ЦП.
  • Необходимо записывать прошедшее время, что приводит к увеличению нагрузки на процессор.

Резюме

  • SJF — это алгоритм, в котором для следующего выполнения выбирается процесс, имеющий наименьшее время выполнения.
  • Планирование SJF связано с каждым заданием как единица времени для завершения.
  • Этот метод алгоритма полезен для пакетной обработки, когда ожидание завершения заданий не является критическим.
  • В основном существует два типа методов SJF: 1) невытесняющий SJF и 2) вытесняющий SJF.
  • При невытесняющем планировании, как только цикл ЦП выделяется для процесса, процесс удерживает его до тех пор, пока не достигнет состояния ожидания или не завершится.
  • При упреждающем планировании SJF задания помещаются в очередь готовности по мере их поступления.
  • Хотя начинается процесс с коротким временем пакета, текущий процесс удаляется или прерывается из выполнения, а задание, которое короче, выполняется первым.
  • SJF часто используется для долгосрочного планирования.
  • Это сокращает среднее время ожидания по алгоритму FIFO (первым пришел – первым обслужен).
  • При планировании SJF время завершения задания должно быть известно заранее, но его трудно предсказать.
  • SJF не может быть реализован для планирования ЦП в краткосрочной перспективе. Это связано с тем, что не существует конкретного метода прогнозирования продолжительности предстоящего всплеска ЦП.