управління процесами

Протягом існування процесу його виконання може бути багаторазово перерване і продовжене. Для того, щоб відновити виконання процесу, необхідно відновити стан його операційного середовища. Стан операційного середовища відображається станом регістрів і програмного лічильника, режимом роботи процесора, покажчиками на відкриті файли, інформацією про незавершені операції введення-виведення, кодами помилок виконуваних даним процесом системних викликів і т.д. Ця називається контекстом процесу.

Крім цього, операційній системі для реалізації планування процесів потрібна додаткова інформація: ідентифікатор процесу, стан процесу, дані про ступінь привілейованості процесу, місце знаходження кодового сегмента й інша інформація. У деяких ОС (наприклад, в ОС UNIX) інформацію такого роду, використовувану ОС для планування процесів, називають дескриптором процесу.

Дескриптор процесу в порівнянні з контекстом містить більш оперативну інформацію, яка повинна бути легко доступна підсистемі планування процесів. Контекст процесу містить менш актуальну інформацію та використовується операційною системою тільки після того, як прийнято рішення про відновлення перерваного процесу.

Черги процесів являють собою дескриптори окремих процесів, об'єднані в списки. Таким чином, кожен дескриптор, крім усього іншого, містить принаймні один покажчик на інший дескриптор, що сусідить з ним в черзі. Така організація черг дозволяє легко їх змінювати порядок, включати і виключати процеси, переводити процеси з одного стану в інший.

Програмний код тільки тоді почне виконуватися, коли для нього операційною системою буде створений процес. Створити процес - це значить:

1. створити інформаційні структури, що описують даний процес, тобто його дескриптор і контекст;

2. включити дескриптор нового процесу в чергу готових процесів;

3. завантажити кодовий сегмент процесу в оперативну пам'ять або в область свопінгу.

10. Управління процесами. Алгоритми планування процесів.

Планування процесів включає в себе вирішення наступних завдань:

1. визначення моменту часу для зміни виконуваного процесу;

2. вибір процесу на виконання з черги готових процесів;

3. перемикання контекстів "старого" і "нового" процесів.

Перші два завдання вирішуються програмними засобами, а остання в значній мірі апаратно.

Існує безліч різних алгоритмів планування процесів, по різному вирішують перераховані вище завдання, які переслідують різні цілі і забезпечують різну якість мультипрограмування. Серед цієї безлічі алгоритмів розглянемо докладніше дві групи найбільш часто зустрічаються алгоритмів: алгоритми, засновані на квантуванні, і алгоритми, засновані на пріоритетах.

Відповідно до алгоритмами, заснованими на квантуванні, зміна активного процесу відбувається, якщо:

1. процес завершився і залишив систему,

2. сталася помилка,

3. процес перейшов в стан ОЧІКУВАННЯ,

4. вичерпаний квант процесорного часу, відведений даному процесу.

Процес, який вичерпав свій квант, переводиться в стан ГОТОВНІСТЬ і очікує, коли йому буде надано новий квант процесорного часу, а на виконання відповідно до визначеного правила вибирається новий процес з черги готових. Таким чином, жоден процес не займає процесор надовго, тому квантування широко використовується в системах поділу часу.

Кванти, що виділяються процесам, можуть бути однаковими для всіх процесів або різними. Кванти, що виділяються одному процесу, можуть бути фіксованої величини або змінюватися в різні періоди життя процесу. Процеси, які в повному обсязі використовували виділений їм квант (наприклад, через відхід на виконання операцій введення-виведення), можуть отримати або не одержати компенсацію у вигляді привілеїв при наступному обслуговуванні. По різному може бути організована черга готових процесів: циклічно, за правилом "перший прийшов - перший обслужився" (FIFO) або за правилом "останній прийшов - перший обслужився" (LIFO).

Інша група алгоритмів використовує поняття "пріоритет" процесу. Пріоритет - це число, що характеризує ступінь привілейованості процесу при використанні ресурсів обчислювальної машини, зокрема, процесорного часу: чим вище пріоритет, тим вище привілеї. Пріоритет може виражатися цілими чи дробовими, позитивним або негативним значенням. Чим вище привілеї процесу, тим менше часу він буде проводити в чергах. Пріоритет може призначатися директивно адміністратором системи в залежності від важливості роботи або внесеної плати, або обчислюватися самою ОС за певними правилами, він може залишатися фіксованим протягом усього життя процесу або змінюватися в часі відповідно до деякого законом. В останньому випадку пріоритети називаються динамічними.

Існує два різновиди пріоритетних алгоритмів: алгоритми, що використовують відносні пріоритети, і алгоритми, що використовують абсолютні пріоритети.

В обох випадках вибір процесу на виконання з черги готових здійснюється однаково: вибирається процес, який має найвищий пріоритет. По різному вирішується проблема визначення моменту зміни активного процесу. У системах з відносними пріоритетами активний процес виконується до тих пір, поки він сам не покине процесор, перейшовши в стан ОЧІКУВАННЯ. У системах з абсолютними пріоритетами виконання активного процесу переривається ще за однієї умови: якщо в черзі готових процесів з'явився процес, пріоритет якого вище пріоритету активного процесу. В цьому випадку перерваний процес переходить в стан готовності.

У багатьох операційних системах алгоритми планування побудовані з використанням як квантування, так і пріоритетів.

11. Управління процесами. Витісняють і невитісняючі алгоритми планування.

Існує два основних типи процедур планування процесів - витісняють і невитісняючі.

1. невитесняющая багатозадачність - це спосіб планування процесів, при якому активний процес виконується до тих пір, поки він сам, за власною ініціативою, не віддасть керування планувальнику ОС для того, щоб той вибрав з черги інший, готовий до виконання процес.

2. витісняє багатозадачність - це такий спосіб, при якому рішення про переключення процесора з виконання одного процесу на виконання іншого процесу приймається планувальником ОС, а не найактивнішою завданням.

Основною відмінністю між preemptive і non-preemptive варіантами багатозадачності є ступінь централізації механізму планування задач. При витісняє багатозадачності механізм планування задач цілком зосереджений в операційній системі, і програміст пише свій додаток, не піклуючись про те, що воно буде виконуватися паралельно з іншими завданнями. При цьому операційна система виконує наступні функції: визначає момент зняття з виконання активної задачі, запам'ятовує її контекст, вибирає з черги готових задач наступну і запускає її на виконання, завантажуючи її контекст.

При невитискаючої багатозадачності механізм планування розподілений між системою і прикладними програмами. Прикладна програма, отримавши управління від операційної системи, сама визначає момент завершення своєї чергової ітерації і передає керування ОС за допомогою будь-якого системного виклику, а ОС формує черги задач і вибирає відповідно до деякого алгоритму (наприклад, з урахуванням пріоритетів) наступну задачу на виконання. Такий механізм створює проблеми як для користувачів, так і для розробників.