Координація операційною системою дій ЕОМ
ОС координує виконання прикладних програм, утиліт і власних програмних елементів.
Однією з найбільш фундаментальних концепцій у сучасних ОС є розмежування між програмою та діяльністю, пов'язаною з її виконанням. Перша являє собою статистичний набір інструкцій, тоді як друга – динамічну діяльність, властивості які змінюються в часі. Ця діяльність називається процесом. Процес охоплює поточний стан роботи, який зветься станом процесу. Цей стан включає поточну позицію виконуваної програми (значення лічильника адреси), а також значення інших регістрів центрального процесора і тих чарунок пам'яті, до яких робиться звертання. Стан процесу– це стан машини у певний момент часу.
Задачі, пов'язані з координацією процесів, розв'язуються планувальни- ком та диспетчером, що входять до складу ОС. Планувальник веде записи про процеси, що присутні в обчислювальній системі, вводить відомості про нові процеси і видаляє інформацію про ті, що завершилися. Для відстеження стану всіх процесів планувальник організує в основній пам'яті блок інформації, що називається таблицею процесів. Щоразу, коли машині дається нове завдання, планувальник створює процес для цього завдання за допомогою занесення нового запису до таблиці процесів. Цей запис містить відомості про обсяг виділеної процесові пам'яті, про наданий йому пріоритет, а також про те, чи перебуває процес у стані готовності чи очікування. Процес перебуває в стані готовності, якщо його розвиток може продовжуватися, і переводиться до стану очікування, коли його розвиток припиняється, доти, доки не відбудуться певні зовнішні події, наприклад, завершиться процедура доступу до диска чи надійде повідомлення від іншого процесу.
Диспетчер – це компонента ядра, що відповідає за те, щоб заплановані процеси виконувалися. Як уже раніше говорилося, задача розв'язується за допомогою розбивки часу процесора на короткі інтервали - кванти. Кожному процесу надається можливість безупинного виконання лише протягом одного кванта часу (Рис.13.3) Процедура зміни одного процесу іншим називається переключенням процесів.
Рис.14.4
Щоразу, коли процесу надається черговий квант часу, диспетчер ініціює ланцюг таймера, підготовляючи його до вимірювання тривалості наступного кванта. Після закінчення встановленого кванта ланцюг таймера генерує сигнал, який називається перериванням. Центральний процесор реагує на цей сигнал так само, як і людина, яку зупиняють під час виконання певного завдання. Людина припиняє свою роботу, записує поточний стан задачі і звертає увагу на те, що її відвернуло. При одержанні сигналу переривання центральний процесор завершує поточний і машинний цикл, зберігає своє положення в поточному процесі і починає виконувати програму, яка називається оброблювачем переривань (частиною диспетчера), розміщену в наперед визначеному місці в основній , пам'яті.
Таким чином, результатом надходження сигналу переривання є припинення поточного процесу і передача управління диспетчеру. У цей момент диспетчер дозволяє планувальнику обновити стан таблиці процесів (наприклад, можливо, що пріоритет процесу, який щойно відпрацював свій квант часу, слід знизити, а пріоритети інших процесів - підвищити). Потім з таблиці процесів диспетчер вибирає процес з найвищим пріоритетом з числа процесів, що перебувають в стані готовності, заново ініціалізує ланцюг таймера, після чого дозволяє обраному процесові використовувати новий квант часу.
Головною умовою успішної роботи системи з поділом часу є її здатність зупинити, а потім повторно запустити процес. Якщо нас переривають під час читання книги, то можливість продовжити читання пізніше залежить від вашої здатності згадати, на чому ви зупинилися, і що відбулося до цього моменту. Ми повинні мати можливість відтворити ситуацію такою, якою вона була безпосередньо в момент перериваний. Стосовно процесу ця ситуація є його станом. Машини, розроблені для систем з поділом часу, включають засоби, що дозволяють зберегти цю інформацію як реакцію центрального процесора на сигнал переривання. Крім того, машинна мова таких процесорів зазвичай включає спеціальні команди для перезавантаження раніше збереженої інформації про збереження.