Відмінності між версіями «Контекст і дескриптор процесу. Перемикання процесів»
Рядок 32: | Рядок 32: | ||
<li>завантажити кодовий сегмент процесу в оперативну чи пам'ять в область свопинга. | <li>завантажити кодовий сегмент процесу в оперативну чи пам'ять в область свопинга. | ||
</ul> | </ul> | ||
+ | |||
+ | |||
+ | == '''Перемикання процесів''' == | ||
+ | |||
+ | Перемикання процесу може відбутися в будь-який момент, коли керування від процесу, що | ||
+ | виконується переходить до операційної системи. | ||
+ | |||
+ | '''Причини, за якими може бути здійснено перемикання процесу:''' | ||
+ | |||
+ | 1. Причина зовнішня по відношенню до виконання поточної команди. Механізм: перепин. | ||
+ | Використовується виклик на зовнішню асинхронну подію. | ||
+ | |||
+ | 2. Причина пов’язана з виконанням поточної команди. Механізм: Пастка. Використовується | ||
+ | обробка помилки або виключної (исключительной) ситуації. | ||
+ | |||
+ | 3. Запит додатка. Механізм: Виклик супервізора. Використовується виклик функції | ||
+ | операційної системи. | ||
+ | |||
+ | Розглянемо системні перепини. Існує два види перепинів. | ||
+ | |||
+ | 1. Звичайні перепини. | ||
+ | |||
+ | 2. Пастки (ловушки) (trap). | ||
+ | |||
+ | Перший вид перепинів відбуваються внаслідок подій визначеного типу, не пов’язаних з | ||
+ | процесом, що виконується, та такими, що є зовнішніми по відношенню до нього. | ||
+ | |||
+ | ''Приклад.'' Завершення операції вводу-виводу, просте натиснення клавіші на клавіатурі. | ||
+ | |||
+ | Другий тип. Пастки пов’язані з помилкою або виключною ситуацією, що виникла внаслідок | ||
+ | виконання поточного процесу. | ||
+ | |||
+ | ''Приклад.'' Спроба одержання несанкціонованого доступу до файлу, папки /root. | ||
+ | |||
+ | При звичайному перепині керування передається програмі-обробнику перепинів, яка | ||
+ | спочатку здійснює деякі підготовчі дії, а потім – функції операційної системи, що | ||
+ | відповідають за перепини даного виду. | ||
+ | |||
+ | ''Приклади звичайних перепинів:'' | ||
+ | |||
+ | 1. Перепини таймеру. Операційна система визначає, що поточний процес виконується на | ||
+ | протязі максимально дозволеного проміжку часу. Якщо це так, то даний процес потрібно | ||
+ | перемкнути в стан ГОТОВНОСТІ та передати керування іншому процесу. | ||
+ | |||
+ | 2. Перепини вводу-виводу. Операційна система визначає, що саме відбулося, і якщо це | ||
+ | саме та подія, яку чекають один або кілька процесів, операційна система переводить всі | ||
+ | відповідні блоковані процеси в стан ГОТОВНІСТЬ. Потім операційна система повинна | ||
+ | прийняти рішення: відновити виконання поточного процесу або передати керування | ||
+ | готовому до виконання процесу з більш високим приоритетом. | ||
+ | |||
+ | 3. Помилка відсутності блоку в пам’яті. Процесору треба звернутись до слова віртуальної | ||
+ | пам’яті, що в даний момент відсутнє в основній пам’яті. При цьому операційна система | ||
+ | повинна завантажити в основну пам’ять блок ( сторінку або сегмент), де знаходиться | ||
+ | адресоване слово. Одразу після запросу на завантаження блоку операційна система може | ||
+ | передати керування іншому процесу, а процес, для виконання якого потрібно завантажити | ||
+ | блок в основну пам’ять, переходить в блокований стан. Після завантаження необхідного | ||
+ | слова процес переходить в стан ГОТОВНІСТЬ. | ||
+ | |||
+ | У випадку виникнення пастки операційна система визначає, чи є помилка або виключа | ||
+ | ситуація фатальною. Якщо це так, то процес, що виконується в даний момент переходить в | ||
+ | стан завершення ( помирає), а керування переходить до іншого процесу. В супротивному | ||
+ | випадку дії операційної системи будуть залежать від характеру помилки, та від будови ОС. | ||
+ | Можливо будуть виконані спроби виконати відновлювальні дії або поставлено у відповідність | ||
+ | користувача про помилку. Саме цікаве, що операційна система може при цьому виконати | ||
+ | перемикання процесів, або ж залишити поточний процес активним. | ||
+ | |||
+ | Також перемикання процесу можливу у випадку активізації ОС викликом супервізора, що | ||
+ | йде від програми, що зараз знаходиться на виконанні. Наприклад, під час виконання програми | ||
+ | виникла необхідність оперції вводу-виводу, треба відкрити деякий файл. |
Версія за 19:40, 28 квітня 2011
Контекст і дескриптор процесу
Протягом існування процесу його виконання може бути багаторазово перерване і продовжено. Для того, щоб відновити виконання процесу, необхідно відновити стан його операційного середовища. Стан операційного середовища відображається станом регістрів і програмного лічильника, режимом роботи процесора, покажчиками на відкриті файли, інформацією про незавершені операції виводу-вводу-виводу, кодами помилок виконуваних даним процесом системних викликів і т.д. Ця інформація називається контекстом процесу.
Крім цього, операційній системі для реалізації планування процесів потрібно додаткова інформація: ідентифікатор процесу, стан процесу, дані про ступінь привілейованості процесу, місце перебування кодового сегмента й інша інформація. У деяких ОС (наприклад, в ОС UNIX) інформацію такого роду, використовувану ОС для планування процесів, називають дескриптором процесу.
Дескриптор процесу в порівнянні з контекстом містить більш оперативну інформацію, що повинна бути легко доступна підсистемі планування процесів. Контекст процесу містить менш актуальну інформацію і використовується операційною системою тільки після того, як прийнято рішення про поновлення перерваного процесу.
Черги процесів являють собою дескриптори окремих процесів, об'єднані в списки. Таким чином, кожен дескриптор, крім всього іншого, містить принаймні один покажчик на інший дескриптор, що сусідить з ним у черзі. Така організація черг дозволяє легко їх переупорядковувати, включати і виключати процеси, переводити процеси з одного стану в інше.
Програмний код тільки тоді почне виконуватися, коли для нього операційною системою буде створений процес. Створити процес — це значить:
- створити інформаційні структури, що описують даний процес, тобто його дескриптор і контекст;
- уключити дескриптор нового процесу в чергу готових процесів;
- завантажити кодовий сегмент процесу в оперативну чи пам'ять в область свопинга.
Перемикання процесів
Перемикання процесу може відбутися в будь-який момент, коли керування від процесу, що виконується переходить до операційної системи.
Причини, за якими може бути здійснено перемикання процесу:
1. Причина зовнішня по відношенню до виконання поточної команди. Механізм: перепин. Використовується виклик на зовнішню асинхронну подію.
2. Причина пов’язана з виконанням поточної команди. Механізм: Пастка. Використовується обробка помилки або виключної (исключительной) ситуації.
3. Запит додатка. Механізм: Виклик супервізора. Використовується виклик функції операційної системи.
Розглянемо системні перепини. Існує два види перепинів.
1. Звичайні перепини.
2. Пастки (ловушки) (trap).
Перший вид перепинів відбуваються внаслідок подій визначеного типу, не пов’язаних з процесом, що виконується, та такими, що є зовнішніми по відношенню до нього.
Приклад. Завершення операції вводу-виводу, просте натиснення клавіші на клавіатурі.
Другий тип. Пастки пов’язані з помилкою або виключною ситуацією, що виникла внаслідок виконання поточного процесу.
Приклад. Спроба одержання несанкціонованого доступу до файлу, папки /root.
При звичайному перепині керування передається програмі-обробнику перепинів, яка спочатку здійснює деякі підготовчі дії, а потім – функції операційної системи, що відповідають за перепини даного виду.
Приклади звичайних перепинів:
1. Перепини таймеру. Операційна система визначає, що поточний процес виконується на протязі максимально дозволеного проміжку часу. Якщо це так, то даний процес потрібно перемкнути в стан ГОТОВНОСТІ та передати керування іншому процесу.
2. Перепини вводу-виводу. Операційна система визначає, що саме відбулося, і якщо це саме та подія, яку чекають один або кілька процесів, операційна система переводить всі відповідні блоковані процеси в стан ГОТОВНІСТЬ. Потім операційна система повинна прийняти рішення: відновити виконання поточного процесу або передати керування готовому до виконання процесу з більш високим приоритетом.
3. Помилка відсутності блоку в пам’яті. Процесору треба звернутись до слова віртуальної пам’яті, що в даний момент відсутнє в основній пам’яті. При цьому операційна система повинна завантажити в основну пам’ять блок ( сторінку або сегмент), де знаходиться адресоване слово. Одразу після запросу на завантаження блоку операційна система може передати керування іншому процесу, а процес, для виконання якого потрібно завантажити блок в основну пам’ять, переходить в блокований стан. Після завантаження необхідного слова процес переходить в стан ГОТОВНІСТЬ.
У випадку виникнення пастки операційна система визначає, чи є помилка або виключа ситуація фатальною. Якщо це так, то процес, що виконується в даний момент переходить в стан завершення ( помирає), а керування переходить до іншого процесу. В супротивному випадку дії операційної системи будуть залежать від характеру помилки, та від будови ОС. Можливо будуть виконані спроби виконати відновлювальні дії або поставлено у відповідність користувача про помилку. Саме цікаве, що операційна система може при цьому виконати перемикання процесів, або ж залишити поточний процес активним.
Також перемикання процесу можливу у випадку активізації ОС викликом супервізора, що йде від програми, що зараз знаходиться на виконанні. Наприклад, під час виконання програми виникла необхідність оперції вводу-виводу, треба відкрити деякий файл.