Стани процесу

(Перенаправлено з Стан процесу)

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

Різноманіття станів процесу зображено на діаграмі станів. Стрілками позначено можливі переходи між станами. Деякі з процесів зберігаються в основній пам'яті(жовтий колір), інші — в додатковій (swap-пам'яті, зелений колір)

Основні стани процесів ред.

Наведені нижче стани дійсні для будь-якого типу комп'ютерів. Переважна більшість процесів у цих станах знаходиться у основній пам'яті. 

Створений (Created) ред.

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

Готовність або очікування (Ready) ред.

Процеси у стані готовності завантажуються до основної пам'яті і переводяться в стан очікування виконання на ЦП(чекають на зміну стану диспетчером чи планувальником ОС). Одночасно може бути багато процесів у стані готовності в певний момент роботи системи, наприклад, в однопроцесорній системі тільки один процес може виконуватися в конкретний момент часу, а всі решта процеси, які виконуються «паралельно» очікують на виконання.

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

Працює (Running) ред.

Процес переходить в стан «Працює» тоді, коли його обрано планувальником або диспетчером для виконання. Команди процесу виконуються на одному з процесорів(або процесорних ядер) системи. На кожному процесорі чи ядрі завжди виконується не більше одного процесу одночасно. Процес може виконуватися у двох режимах: у режимі користувача(User mode) і  режимі ядра(Kernel mode).

Kernel mode ред.

  • Процеси в цьому режимі мають доступ до адресного простору як ядра, так і користувача
  • Kernel mode надає необмежений доступ до апаратного забезпечення, включаючи привілейовані інструкції.
  • Деякі команди(наприклад, введення/виведення або переривання) є привілейованими інструкціями, які можуть виконуватися виключно в Kernel mode
  • Для переходу в цей режим необхідний системний виклик від користувача

User mode ред.

  • Процеси мають доступ лише до своїх власних інструкцій та адресного простору
  • Коли система виконує інструкції від імені користувача, це означає, що вона знаходиться в User mode. У випадку, якщо програма у режимі користувача запитує дані операційної системи(за допомогою системних викликів), система мусить переходити у kernel mode для виконання запиту.
  • User mode запобігає різним небажаним ситуаціям:
    • Віртуальний адресний простір є ізольованим для кожного процесу.
    • У режимі користувача кожен процес гарантовано виконуватиметься окремо від інших процесів, що виключає можливість впливу на роботу інших інструкцій.
    • Прямий доступ до апаратного забезпечення є забороненим

Заблокований (Blocked) ред.

Процес, заблокований певною подією(наприклад, операціями введення/виведення чи спеціальним сигналом) може приймати стан Blocked з різних причин, як, наприклад, надмірне навантаження на ЦП або вичерпання процесорного часу.

Зупинено (Terminated) ред.

Процес може бути зупинено(переведено в стан «Terminated» із стану «Running») після завершення його роботи або у випадку його умисного завершення. В обох випадках процес переходить до стану «Terminated». Програма, що відповідає цьому процесу, більше не виконується, але сам процес залишається у таблиці процесів як процес-зомбі, допоки процес, який його викликав не виконає системний виклик wait для виходу, після якого процес буде прибрано з таблиці процесів, що завершить процес його життєдіяльності. Якщо батьківський процес не виконує wait, то ресурси продовжуватимуть споживатися, що може призвести до витоку ресурсів.


Додаткові стани процесу ред.

В системах, що підтримують віртуальну пам'ять, можливі ще два додаткові стани. В обох цих станах процес «знаходиться» у вторинній пам'яті (переважно — жорсткому диску).

Вивантажений і очікуючий ред.

(Інша назва — призупинений і очікуючий). В системах які підтримують віртуальну пам'ять процес може бути вивантажений з основної пам'яті та поміщений у віртуальну пам'ять середньотерміновим планувальником. Звідти процес може бути вивантажений у стан «очікуючий».

Вивантажений і блокований ред.

(Інша назва — призупинений і блокований). Процеси які є заблокованими можуть також бути вивантажені. В цьому випадку процес є «вивантажений і очікуючий» і може бути вивантажений у тих же випадках, що і вивантажений і очікуючий процес (хоча в цьому випадку процес буде у блокованому стані і може все ще очікувати доки ресурс стане доступним).

Посилання ред.

  • Stallings, William (2005). Operating Systems: internals and design principles (5th edition). Prentice Hall. ISBN 0-13-127837-1. 
Particularly chapter 3, section 3.2, «process states», including figure 3.9 «process state transition with suspend states»