
2 . Стани процесів
Під час виконання процесу його стан змінюється. Під станом процесу розуміють його біжучий режим або статус. В середовищі UNIX процес може перебувати в одному з наступних станів:
виконання;
працездатності (готовності);
зомбі;
очікування (блокування);
зупинки.
Стан процесу змінюється при певних умовах, які створюються існуванням процесу або операційною системою. Під зміною стану, або переходом з одного стану в інший, розуміють обставини, заставляють процес змінити свій стан. На рис. 4 показано діаграму станів для середовища UNIX. Діаграма станів містить вузли та напрямлені ребра, що з’єднують ці вузли. Кожен вузол відображає стан процесу, а напрямлені ребра між вузлами – переходи з одного стану в інший. Можливі зміни стані (з анотацією) описано в табл. 1. На рис. 4 і табл. 1 показано, що між станами дозволені лише певні переходи. Наприклад, між станами готовності і виконання існує перехід (ребро діаграми), а між станами очікування і виконання – немає. Це означає, що можливі обставини, які заставляють процес перейти з стану готовності в стан виконання, але немає обставин, які можуть заставити процес перейти в стан виконання з стану очікування.
К
оли
процес тільки створюється, від готовий
до виконання своїх інструкцій, але
повинен очікувати свого
часу до тих пір,
доки не звільниться процесор. Кожному
процесу персонально дозволяється
використати процесор в межах
дискретного часового інтервалу, який
називаємо квант часу (time slice). Процеси,
які очікують використання процесора,
займають
чергу, тобто переміщуються в чергу
готових процесів. Тільки з таких черг
планувальник вибирає процес, який буде
використовувати процесорний час.
Процеси, які знаходяться в чергах готових
процесів, перебувають в працездатному
стані. Коли процесор
Таблиця 1. |
Переходи процесів з одного стану в інший |
|
Переходи між станами |
Опис |
|
ОЧІКУЄ ВИКОНУЄТЬСЯ (завантаження) |
Процес призначається процесору |
|
ВИКОНУЄТЬСЯ ГОТОВИЙ (кінець кванту часу) |
Квант часу процесу, якій призначений процесу закінчився |
|
ВИКОНУЄТЬСЯ ГОТОВИЙ (дострокове вивантаження) |
Процес вивантажується до закінчення його кванту часу. (Це можливе у випадку, якщо став готовим процес з більш високим пріоритетом). Вивантажений процес розміщується знову в чергу процесів |
|
ВИКОНУЄТЬСЯ ОЧІКУЄ (блокування) |
Процес відмовляється від процесора до закінчення його кванту часу. Процесу, можливо, необхідно почекати наставання деякої події, або він викликає системну функцію, наприклад, робить запит на ввід-вивід. Процес розміщується в чергу процесів, які очікуються |
|
ОЧІКУЄ ГОТОВИЙ (розблокування) |
Подія, настання якої очікував процес, відбулася, або завершилося виконання системної функції, наприклад, задоволено запит на ввід-вивід даних |
|
ВИКОНУЄТЬСЯ ЗУПИНЕНИЙ |
Процес відмовився від процесора отримавши сигнал зупинити |
|
ЗУПИНЕНИЙ ГОТОВИЙ |
Процес отримав сигнал продовжити і повертається знову в чергу готових процесів |
|
ВИКОНУЄТЬСЯ ЗОМБІ |
Процес припинений і очікує, доки батьківський процес не добуде з таблиці процесів його статус завершення |
|
ЗОМБІ ВИХІД |
Батьківський процес здобуває з таблиці процесів статус завершення і процес-зомбі покидає систему |
|
ВИКОНУЄТЬСЯ ВИХІД |
Процес завершено, але від покидає систему після того як батьківський процес добуде з таблиці процесів статус завершення |
стає доступним, диспетчер (dispatcher) призначає його працездатному (готовому) процесу, який займає його на протязі свого кванту часу. По закінченню цього кванту часу процес залишає процесор, незалежно від того, чи виконав він свої інструкції, чи ні. Цей процес знову розміщується в чергу готових процесів (як в зал очікування) очікувати наступного сеансу роботи процесора. Тим часом з черги вибирається новий процес, якому виділяється його квант процесорного часу. Системні процеси не вивантажуються, тобто отримавши процесор, вони виконуються до повного завершення. Якщо квант часу ще не завершився, але процес не в стані продовжити виконання, він може добровільно відмовитися від процесорного часу. Причини відмови можуть бути різними. Наприклад, процес може зробити запит на отримання доступу до пристроїв ввід-вивід, викликати системну функцію, або йому необхідно почекати звільнення об’єкту (змінної) синхронізації. Процеси, які не можуть продовжити виконання тому що очікують деякої події, засинають, тобто переходять в стан очікування. Після настання події, яка очікується вони видаляються з цієї черги і повертаються в чергу готових процесів. Біжучий процес, тобто процес, який займає процесорний час, може бути позбавлений його ще до завершення кванту часу, якщо оголосить про свою готовність процес з більш високим пріоритетом (наприклад, системний процес). Вивантажений достроково процес зберігає статус працездатного і тому знову розміщується в чергу готових процесів.
Процес, який виконується, може отримати повідомлення зупинити виконання. Стан зупинки відрізняється від стану очікування, тому що при цьому не був вичерпаний квант часу і процес не подав ніякого системного запиту. Процес міг отримати повідомлення зупинитися або в наслідок перебування в процесі налагодження, або із-за виникнення особливої ситуації в системі. Отримавши повідомлення зупинитися, процес переходить в стан, виконання в стані зупинитися. Пізніше процес може бути розбуджений або ліквідований.
Виконавши всі свої інструкції, процес залишає систему. В цьому випадку процес видаляється з таблиці процесів, його БУП-блок руйнується, і всі ресурси, які він використовував, повертаються в системний пул доступних ресурсів. Процес, який нездатний продовжити виконання, але при цьому не може вийти з системи, вважається зомбованим. Зомбований процес не використовує ніяких системних ресурсів, але зберігає свою структуру в таблиці процесів. Якщо в таблиці процесів виявиться надто багато зомбованих процесів це негативно вплине на продуктивність системи і може викликати її перезавантаження.