Стани процесу
Матеріал з Вікіпедії — вільної енциклопедії.
В багатозадачній комп'ютерній системі процеси можуть приймати різні стани. Ці стани в дійсності можуть не розрізнятися ядром операційної системи, проте вони зручна абстракція для розуміння процесів.
Різні стани процесу відображені на діаграмі станів, на якій стрілками показано переходи між станами. Як видно, деякі процеси зберігаються в основній пам'яті, а інші у вторинній (віртуальній) пам'яті.
Зміст |
[ред.] Основні стани процесу
У всіх типах комп'ютерних систем процеси мають наступні стани.
[ред.] Створений
(Інша назва - новий). Коли процес створюється вперше, він потрапляє в стан "створений" чи "новий". В цьому стані він очікує входу в стан "готовий". В цьому стані процес може бути сприйнятий чи відкладений довготерміновим планувальником.
В більшості настільних комп'ютерних систем вибір виконується автоматично, проте в операційних системах реального часу вибір може бути відкладений. В системах реального часу перевід завеликого числа процесів в стан "готовий" може привести до переконкуренції за системні ресурси, що веде до неможливості завершення процесу до заданого терміну.
[ред.] Готовий
(Інша назва - очікуючий). "Готовий" процес уже завантажений в основну пам'ять і очікує на виконання центральним процесором (контекстне перемикання буде здійснене диспетчером чи короткотерміновим планувальником). В комп'ютерній системі може бути багато "готових" процесів. В однопроцесорній системі лише один процес буде виконуватися в конкретний момент часу, всі решта "одночасно виконуваних" процесів будуть очікувати на виконання.
[ред.] Запущений
(Інші назви - активний чи виконуваний). "Запущений" є той процес, який в даний момент виконується центральним процесором. Якщо процес вичерпає відведений йому інтервал часу, операційна система перемкне контекст процесу знову в стан "готовий". Перемикання контексту також може відбутися коли процес завершиться або коли від буде блокований потребуючи деякого ресурсу (наприклад вводу/виводу) і тоді він буде переміщений в стан "блокований".
[ред.] Блокований
Якщо процес "заблокується" на ресурсі (файлі, семафорі, пристрої тощо), він буде усунутий з процесора (так як процес не може продовжувати виконання) і переведений в блокований стан. Процес буде залишатися "заблокований" доки відповідний ресурс не стане доступний. Про розблокування ресурсу заблокований процес повідомляє операційна система (про доступність ресурсу сама операційна система повідомляється з допомогою переривання). Як тільки операційна система дізнається, що процес розблокований, він переводиться в стан "готовий", з якого він може бути переведений в стан "виконуваний", в якому він зможе використати заново доступний ресурс.
[ред.] Завершений
Процес може завершитися або коли в стані "виконуваний" завершить своє виконання, або коли буде явно "знятий" командою оператора. В обох випадках процес переходить в стан "завершений". Якщо процес не буде усунутий з пам'яті після входження в цей стан, то цей стан назвається "зомбі".
[ред.] Додаткові стани процесу
В системах які підтримують віртуальну пам'ять можливі ще два додаткові стани. В обох цих станах процес "знаходиться" у вторинній пам'яті (переважно - жорсткому диску).
[ред.] Вивантажений і очікуючий
(Інша назва - призупинений і очікуючий). В системах які підтримують віртуальну пам'ять процес може бути вивантажений з основної пам'яті та поміщений у віртуальну пам'ять середньотерміновим планувальником. Звідти процес може бути ввантажений у стан "очікуючий".
[ред.] Вивантажений і блокований
(Інша назва - призупинений і блокований). Процеси які є заблокованими можуть також бути вивантажені. В цьому випадку процес є "вивантажений і очікуючий" і може бути ввантажений у тих же випадках, що і вивантажений і очікуючий процес (хоча в цьому випадку процес буде у блокованому стані і може все ще очікувати доки ресурс стане доступним).
[ред.] Дивись також
- Багатозадачність
- Процес
- Потік
- Батьківський процес
- Синівський процес
- Зомбі процес
- Перемикання контексту
- Планувальник
- Віртуальна пам'ять
Це незавершена стаття про комп'ютери. Ви можете допомогти проекту, виправивши або дописавши її. |