Контекст і дескриптор процесу. Перемикання процесів

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

Контекст і дескриптор процесу

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

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

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

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

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

  • створити інформаційні структури, що описують даний процес, тобто його дескриптор і контекст;
  • уключити дескриптор нового процесу в чергу готових процесів;
  • завантажити кодовий сегмент процесу в оперативну чи пам'ять в область свопинга.


Перемикання процесів

Перемикання процесу може відбутися в будь-який момент, коли керування від процесу, що виконується переходить до операційної системи.

Причини, за якими може бути здійснено перемикання процесу:

1. Причина зовнішня по відношенню до виконання поточної команди. Механізм: перепин. Використовується виклик на зовнішню асинхронну подію.

2. Причина пов’язана з виконанням поточної команди. Механізм: Пастка. Використовується обробка помилки або виключної (исключительной) ситуації.

3. Запит додатка. Механізм: Виклик супервізора. Використовується виклик функції операційної системи.

Розглянемо системні перепини. Існує два види перепинів.

1. Звичайні перепини.

2. Пастки (ловушки) (trap).

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

Приклад. Завершення операції вводу-виводу, просте натиснення клавіші на клавіатурі.

Другий тип. Пастки пов’язані з помилкою або виключною ситуацією, що виникла внаслідок виконання поточного процесу.

Приклад. Спроба одержання несанкціонованого доступу до файлу, папки /root.

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

Приклади звичайних перепинів:

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

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

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

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

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

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

11Безымянный1.JPG

Рис. Виконання операції розблокування процесу.

Розглянемо, як в реальності може виникати операція розблокування процесу, чекаючого вводу-виводу (див. малюнок 2.2). При виконанні процесором деякого процесу (на малюнку — процес 1) виникає перепин від пристрою вводу-виводу, сигналізуює про закінчення операцій на пристрої. Над процесом, що виконується, здійснюється операція припинення. Далі, операційна система розблоковує процес, що ініціював запит на ввод-вивід (на малюнку — процес 2), і здійснює запуск припиненого або нового процесу, вибраного при виконанні планування (на малюнку був вибраний розблокований процес). Як бачимо, в результаті обробки інформації про закінчення операції вводу-виводу можлива зміна процесу, що знаходиться в стані виконання.

Для коректного перемикання процесора з одного процесу на іншій необхідно зберегти контекст процесу, що виконувався, і відновити контекст процесу, на який буде перемкнутий процесор. Така процедура збереження/відновлення працездатності процесів називається перемиканням контексту.Час, витрачений на перемикання контексту, не використовується обчислювальною системою для здійснення корисної роботи і є накладними витратами, що знижують продуктивність системи. Він змінюється від машини до машини і звичайно знаходиться в діапазоні від 1 до 1000 мікросекунд. Істотно скоротити накладні витрати в сучасних операційних системах дозволяє розширена модель процесів, що включає поняття threads of execution (потоки виконання або просто потоки).