Първа най-кратка работа (SJF): превантивен, непревантивен пример

⚡ Умно обобщение

Най-краткото изпълнение на задачи (SJF) е алгоритъм за планиране на процесора, който избира процеса с най-малко време за изпълнение, който да се изпълни следващият. Той може да бъде превантивен или непревантивен и значително намалява средното време на изчакване за процесите.

  • Определение: Процесът с най-кратко време за изпълнение се избира за следващото изпълнение.
  • 🔀 Два вида: SJF може да бъде непревантивно или превантивно (първо най-кратко оставащо време).
  • 📉 Основно предимство: Това дава най-ниското средно време на изчакване за даден набор от процеси.
  • 🏭 Най-добро използване: Идеален за пакетни системи, където времето за изпълнение на задачите е предварително известно.
  • Основно ограничение: Времето за избухване трябва да се знае предварително, което е трудно да се предвиди.
  • ⚠️ риска: Дългите процеси може да „остават“, ако продължават да пристигат краткосрочни задачи.

Планиране на работа по най-кратки срокове (SJF)

Какво представлява най-краткият график за първа работа?

Първа най-кратка работа (SJF) е алгоритъм, при който процесът с най-малко време за изпълнение се избира за следващо изпълнение. Този метод на планиране може да бъде изпреварващ или неизпреварващ. Това значително намалява средното време на изчакване за други процеси, чакащи изпълнение. Пълната форма на SJF е Shortest Job First.

Основно има два типа 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 (First In First Out - Първи влязъл, първи излязъл).
  • Методът SJF дава най-ниското средно време на изчакване за специфичен набор от процеси.
  • Подходящо е за задания, изпълнявани в пакет, където времето за изпълнение е известно предварително.
  • За пакетната система за дългосрочно планиране, оценка на времето за избухване може да бъде получена от описанието на длъжността.
  • За краткосрочно планиране трябва да предвидим стойността на следващото време на импулс.
  • Вероятно е оптимално по отношение на средното време за изпълнение.

Недостатъци/против на SJF

Ето някои недостатъци/минуси на алгоритъма SJF:

  • Времето за завършване на работата трябва да се знае по-рано, но е трудно да се предвиди.
  • Често се използва в пакетна система за дългосрочно планиране.
  • SJF не може да бъде приложен за График на процесора за краткосрочен план. Това е така, защото няма конкретен метод за предсказване на продължителността на предстоящия взрив на процесора.
  • Този алгоритъм може да причини много дълго време за изпълнение или глад.
  • Изисква знания за това колко дълго ще се изпълнява процес или работа.
  • Това води до гладуване, което не намалява средното време за изпълнение.
  • Трудно е да се знае дължината на предстоящата заявка за процесора.
  • Изминалото време трябва да се записва, което води до по-голямо натоварване на процесора.

Въпроси и Отговори

SRTF (Shortest Remaining Time First - Първо с най-кратко оставащо време) е просто превантивната версия на SJF. В SJF, изпълняваната задача завършва, преди да бъде избрана следващата. В SRTF, новопристигнала задача с по-кратко оставащо време може да преванти изпълняващия се процес.

SJF винаги предпочита най-кратката задача. Ако кратки процеси продължават да пристигат, един дълъг процес може никога да не получи процесора и да чака неопределено време. Това е гладуване. За предотвратяване на това се използва стареене, което бавно повишава приоритета на чакащата задача.

Да. SJF е доказуемо оптимален, защото произвежда минимално възможно средно време на изчакване за даден набор от процеси. Това обаче е вярно само ако времената за пакетни изпълнения са предварително известни, което рядко е възможно на практика.

Изкуственият интелект и машинното обучение могат да анализират историята на даден процес, характеристиките на кода и миналите изпълнения, за да оценят времето за натоварване на процесора. По-добрите прогнози правят SJF по-точен, намалявайки времето за изчакване в сравнение с традиционните оценки с експоненциално осредняване.

Потенциално. SJF се затруднява за краткосрочно планиране, защото времената за импулси са неизвестни. Изкуственият интелект, който предсказва импулси в реално време, би могъл да направи SJF използваем, но разходите за прогнозиране и грешките трябва да останат достатъчно ниски, за да се запази решението за планиране полезно.

Обобщете тази публикация с: