Пріоритетне переривання виконання
Вимушена зупинка виконання одного потоку з ціллю надання ресурсів центрального процесора називається пріоритетним перериванням (preemption), а відповідний метод планування – планування з пріоритетним перериванням (preemptive scheduling, або преємптивне планування). Функція преємптивного переривання цілком покладається на ядро операційної системи, яке періодично змінює потоки, які виконуються процесором, шляхом переключення контекстів (context switch). Сигналом, по якому буде проходити переключення контекстів, може виступати, наприклад, системний таймер або ж прямий виклик функції ядра системи. В першому випадку кожному потоку виділяється проміжок часу виконання центральним процесором. По закінченню цього часу потік штучно переривається, і ресурси передаються наступному. Якщо ж потік сам вирішив передати повноваження своїм конкурентам, він викликає спеціальну функцію ядра системи, яка і виконує переключення потоків. Таким чином, коли поступає сигнал на переключення контекстів, ядро вибирає черговий потік з черги, а перерваний потік вертає назад очікувати наступну можливість використовувати ресурси процесора.
Перерахуємо основні переваги багатозадачності з пріоритетним перериванням.
- Передбачуваність. Потік „знає” з деякою точністю, коли він буде виконуватися в наступний раз. Наприклад, враховуючи можливості ядра, потік може бути настроєним на його запуск раз в секунду. Програміст може бути цілком впевнений, що виконання потоку буде сплановано таким чином.
- Стабільність. У потоків нема. Ніякої можливості монополізувати використання ресурсів центрального процесора. А потік, який увійшов в нескінченний цикл (простіше „який завис”), ніяк не впливає на виконання інших потоків.
Звичайно, розглянутий метод планування має і свої недоліки, які перераховані нижче.
- Менша ефективність.В порівнянні з методом виконання до повного завершення, багатозначність з перериванням не є такою ефективною, так як потребує більш частішого переключення контекстів. Процесор витрачає більше часу, ніж якщо б він виконував їх без всяких переривань до повного завершення.
- Складність прикладних програм. Оскільки потік може бути перерваним практично в любий момент, це покладає на програміста певну відповідальність. Програмний код повинен буди розроблений таким чином, щоб запобігти втрату даних під час переривання виконання.
Керування пам’яттю
Операційна система також виконує управління оперативною пам’яттю комп’ютера. Зазвичай пам’ять розділяється на різноманітні частини: одна частина використовується для розміщення коду (інструкцій, які виконується центральним процесором), інша – для програмних даних. Вільна область пам’яті, з якої система може динамічно виділяти області для чергового використання, отримала назву кучі (heap)/
Деякі операційні системи дозволяють процесам адресувати більший простір пам’яті, ніж фізично встановлене в комп’ютері, - це так звана віртуальна пам’ять (virtual memory). Механізм віртуальної пам’яті дозволяє розширити область доступної пам’яті за рахунок використання додаткового носія, такого як жорсткий диск. Використання віртуальної пам’яті базується на апаратній особливості деяких процесорів, в середині яких міститься так званий блок управління пам’яттю (memory map unit – MMU). Механізм MMU автоматично переадресовує запроси або до оперативної пам’яті (random access memory – RAM), або до додаткового носія (жорсткий диск), в залежності від того, де в дійсності знаходяться дані, які запитуються. Використання механізму MMU також дозволяє захищати фрагменти пам’яті, позначуючи їх атрибутом „тільки для читання” або взагалі виключаючи з операцій з картою пам’яті.
Віртуальна пам’ять має також і інші переваги: механізм MMU може бути запрограмований таким чином, щоб відділяти області пам’яті різноманітних процесів один від одного. Таким чином, запобігається доступ до пам’яті одного процесу зі сторони інших.
Маючи всі свої переваги, віртуальна пам’ять не дається системі „даром”. Платити приходиться продуктивністю. Саме по цій причині система IOS не використовує механізм віртуальної пам’яті в повній мірі, як ми помачимо далі.
Переривання
Операційні системи зазвичай виконують обробку переривань центрального процесору. Переривання – це апаратна подія, по якій виконання поточного набору інструкцій призупиняється, а управління передається спеціальній програмі. Ця спеціальна програма – обробник переривання (interrupt handler) – виконує необхідні дії, зв’язані з природою переривання, і повертає процесор до виконання припиненого набору інструкцій. Часто переривання генерується пристроями-контролерами, які потребують уваги зі сторони системи. Однак і сам центральний процесор може генерувати переривання. Операційна система, яка підтримує обробку переривань, містить різноманітного роду обробників для всіх видів можливих переривань.
Дата добавления: 2016-05-05; просмотров: 508;