
- •1 Предмет і завдання курсу
- •2 Короткий нарис історії ос
- •3 Класифікація ос
- •3.1 За призначенням.
- •3.2 За характером взаємодії з користувачем.
- •2 Ефективність
- •3 Зручність
- •4 Масштабованість
- •5 Здатність до розвитку
- •2 Структура ос
- •2 Windows
- •2 Реалізація багатозадачного режиму
- •3 Квазіпаралельне виконання процесів
- •4 Стани процесу
- •2 Дескриптор і контекст процесу
- •3 Реєнтерабельність системних функцій
- •4 Дисципліни диспетчеризації і пріоритети процесів
- •1 У наявності деякий різнобій в загальноприйнятій термінології: в системі з невитісняючою диспетчеризацією витіснення процесу все-таки можливе, але тільки за ініціативою самого процесу.
4 Дисципліни диспетчеризації і пріоритети процесів
Коли планувальник процесів отримує управління, його основним завданням є вибір наступного процесу, який повинен отримати управління. Алгоритми, що лежать в основі цього вибору, визначають дисципліну диспетчеризації, прийняту в цій ОС.
Однією з найочевидніших дисциплін є проста кругова диспетчеризація(round robin scheduling). Її суть в наступному. Усі активні процеси вважаються рівноправними і утворюють кругову чергу. Кожен процес отримує від системи квант часу, після закінчення якого планувальник вибирає для виконання наступний процес з черги. Таким чином, якщо усі процеси залишаються активними, то система забезпечує їх рівномірне просування, що імітує паралельне виконання усіх процесів. Якщо поточний процес блокується, він випадає з круга і потрапляє в список сплячих процесів. Коли система активізує один із сплячих процесів, він включається в кругову чергу.
В некотором смысле противоположной дисциплиной является фоново-оперативная диспетчеризация (foreground/background scheduling) – одна из самых старых форм организации многозадачной работы. В простейшем случае она включает два процесса: фоновый процесс и оперативный процесс (процесс переднего плана). Фоновый процесс выполняется только тогда, когда спит оперативный процесс. При активизации оперативного процесса происходит немедленное вытеснение фонового, т.е. оперативный процесс имеет более высокий абсолютный приоритет. Обычно при такой дисциплине предполагается, что активизация оперативного процесса не потребует много процессорного времени, так что выполнение фонового процесса будет скоро возобновлено. Одним из примеров эффективного использования фоново-оперативной диспетчеризации является так называемая «фоновая печать», которую позволяет выполнить даже однозадачная MS-DOS. При этом процесс вывода файла на принтер рассматривается как процесс переднего плана, а обычная диалоговая работа с ОС – как фоновый процесс. Поскольку обслуживание прерываний от принтера занимает лишь доли процента процессорного времени, пользователь не ощущает никакого замедления работы.
Між описаними двома крайнощами лежить велика різноманітність дисциплін пріоритетної диспетчеризації. Усі вони засновані на приписуванні кожному процесу при його створенні деякого числа - пріоритету. Більш високий пріоритет повинен давати процесу певні переваги перед низькопріоритетними процесами при роботі планувальника.
Призначення пріоритетів виконується користувачем або адміністратором системи, можливо також програмна зміна пріоритету процесу. На вибір оптимального рівня пріоритету впливають в основному два міркування:
важливість, відповідальність цього процесу або привілейоване положення користувача, що запускає процес;
кількість процесорного часу, на який претендуватиме процес(як ми бачили в прикладі з фоновим друком, високий пріоритет процесу, що мало завантажує процесор, майже не призводить до уповільнення роботи інших процесів).
Основний алгоритм пріоритетного планування нагадує просте кругове планування, проте кругова черга активних процесів формується окремо для кожного рівня пріоритету. Поки є хоч один активний процес в черзі з найвищим пріоритетом, процеси з нижчими пріоритетами не можуть отримати управління. Тільки коли усі процеси з вищим пріоритетом заблоковані або завершені, планувальник вибирає процес з черги з нижчим пріоритетом.
Пріоритет, що привласнюється процесу при створенні, називається статичним пріоритетом. Дисципліна планування, що використовує тільки статичні пріоритети, має один істотний недолік: низькопріоритетні процеси можуть надовго виявитися повністю відлученими від процесора. Іноді це прийнятно(якщо високопріоритетні процеси незрівняно важливіше, ніж низькопріоритетні), проте частіше хотілося б, щоб і на низькі пріоритети хоч що-небудь перепадало, нехай навіть рідше і в меншій кількості, ніж на високі. Для вирішення цього завдання запропонована безліч різних алгоритмів планування процесів, заснованих на ідеї динамічного пріоритету.
Динамічний пріоритет процесу - це величина, що автоматично розраховується системою на основі двох основних чинників : статичного пріоритету і міри попереднього використання процесора цим процесом. Загальна ідея наступна: якщо процес занадто довго не отримував процесорного часу, то його пріоритет слід підвищити, щоб дати процесу шанс на майбутнє. Навпаки, якщо процес занадто часто і довго працював, є сенс тимчасово знизити його пріоритет, щоб пропустити вперед зголоднілих конкурентів.
Можуть враховуватися і інші міркування, що впливають на динамічний пріоритет. Наприклад, якщо процес веде діалог з користувачем, то має сенс підвищити його пріоритет, щоб скоротити час реакції і уникнути прикрих затримок при натисненні клавіш. Якщо процес останнім часом часто блокувався, не використавши до кінця виділений йому квант часу, то ця теж основа для підвищення пріоритету : цілком можливо, процес і надалі буде так само невибагливий.