Разлика между предварително и непредпазливо планиране в операционните системи

Планиране на процесори (или Планиране на процесора) определя на кои процеси са присвоени и премахнати от процесора въз основа на модели за планиране като Изпреварваща и Непредвиден график (също известен като Планиране на кооперацията).

По-старите системи могат да работят в прости автономни режими, но с нарастващата нужда от отзивчиви, гъвкави системи, както и от виртуализация, ефективното управление на мулти обработката осигурява бърз отговор на всички заявки за обработка на задачи.

Единиците за планиране често се наричат ​​a задача и задачата на планиращия е да изпълнява и управлява тези задачи, когато е необходимо; Scheduler избира задачата, която трябва да бъде премахната и назначена на процесора за обработка, според използвания модел за планиране.

Как планиращият знае кои задачи са приоритетни?

Планировникът трябва да стартира справедлив и ефикасен процес на подбор, като взема предвид променливите, динамични заявки за обработка и се възползва максимално от процесорните цикли.

Задачите могат да бъдат в две състояния по време на обработка:

  1. В CPU Burst където CPU извършва изчисления за обработка на задачата (периодът за CPU Burst варира от задача до задача и програма за програмиране).
  2. В ан Вход / изход (I / O) Burst изчакване за получаване или изпращане на данни от системата.

Когато процесорът е в режим на празен ход, Scheduler чете Готова опашка, и избира следващата задача, която трябва да се изпълни. Тогава е диспечер което дава контрол на избраната задача на процесора, така че той трябва да бъде бърз! Всеки път, поет от диспечера, е известен като Закъснение за изпращане.

Има различни структури и персонализирани параметри за определяне на Готова опашка, както и няколко метода, които могат да се използват за управление на сложността на процеса на планиране.

Като цяло, за оптимизиране и максимално използване на процесора, пропускателна способност и т.н..

Графикът трябва да вземе решение на един от следните етапи:

  1. Когато задачата се промени от a Работещи до a Изчакваща държава (например, чакане по време на I / O заявка).
  2. Когато задачата се промени от Работещи да се Готов (например в отговор на прекъсване).
  3. Когато задачата се промени от Очакване да се Готов (например заявка за I / O е завършена).
  4. Когато задача

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

След като разберем как се обработва дадена задача, нека разгледаме два модела на планиране, които се занимават с прекъсвания на процесора.

И двете имат сходни функции със задачи, състояния на задачи, опашки и приоритети (статични или динамични):

  • Непредвиден график е, когато задача работи, докато спре (доброволно) или приключи. Windows® имаше Непревантивно планиране до Windows 3.x, след което се промени на Preemptive от Windows 95.
  • Предварително планиране е къде дадена задача може да бъде принудително спряна от прекъсване на процесора, за разлика от Non-Preemptive, където задачата работи, докато не освободи контрола върху процесора.

Непредвиден график

Задачите в непредпазлива система ще се изпълняват, докато не бъдат завършени.

Планировчикът след това проверява състоянията на всички задачи и планира следващата задача с най-висок приоритет с a Готов състояние.

При непредпазливо планиране, след като задачата има задание към процесора, тя не може да бъде отнета, дори ако кратките задачи трябва да изчакат да приключат по-дългите задачи.

Управлението на планирането за всички задачи е „справедливо“ и времената за реакция са предвидими, тъй като задачите с висок приоритет не могат да прехвърлят чакащите задачи по-надолу на опашката.

Планировчикът гарантира, че всяка задача получава своя дял от процесора, като избягва забавяне с всяка задача. „Времето“, отредено на процесора, не е задължително да е равно, тъй като зависи от това колко време ще отнеме задачата.

Предварително планиране

Този модел на планиране позволява да се прекъсват задачите - за разлика от Непредприемащото планиране, което има подход „изпълнение до завършване“.

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

Задачата с най-висок приоритет в a Готов състояние се изпълнява, което позволява бързо реагиране на събития в реално време.

Някои от минусите на Preemptive Scheduling включват увеличаване на режийните разходи за ресурси при използване на прекъсвания и проблеми могат да възникнат с две задачи за споделяне на данни, тъй като една може да бъде прекъсната при актуализиране на споделени структури от данни и може да повлияе негативно на целостта на данните.

От друга страна, е практично да можете да поставите на пауза задача, за да управлявате друга, която може да бъде критична.

В обобщение

Могат да бъдат дефинирани много отклонения и зависимости в различни политики, като например използване на a „Политика за закръгляване на Робин [i]“ където всяка задача (с равен приоритет) се изпълнява веднъж и след това се поставя в края на опашката, за следващия цикъл.

Други политики включват Първо-In-First-Out, Най-къс-Job-Първи, Най-къс-Job-Next, Най-кратко оставащо време, и т.н..

Анализът на исторически данни може да предостави информация за аспекти, като скоростта, с която пристигат нови задачи, CPU и I / O Bursts и т.н., така че разпределенията на вероятностите могат да изчислят характеристиките на чакащите задачи, като по този начин въоръжават администраторите с подходящи данни за определяне на модели за планиране..