Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
управлыння памяттю та процесами.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
52.16 Кб
Скачать

Алгоритми планування процесів

Планування процесів містить у собі рішення наступних завдань:

  • визначення моменту часу для зміни виконуваного процесу;

  • вибір процесу на виконання з черги готових процесів;

  • перемикання контекстів "старого" і "нового" процесів.

Перші два завдання вирішуються програмними засобами, а остання значною мірою апаратно.

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

  • алгоритми, засновані на квантуванні,

  • алгоритми, засновані на пріоритетах.

Відповідно з алгоритмами, заснованими на квантуванні, зміна активного процесу відбувається, якщо: процес завершився і залишив систему, сталася помилка, процес перейшов у стан ОЧІКУВАННЯ, вичерпаний квант процесорного часу, відведений даному процесу.

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

Кванти, виділювані процесам, можуть бути однаковими для всіх процесів чи різними. Кванти, виділювані одному процесу, можуть бути фіксованої величини або змінюватися в різні періоди життя процесу. Процеси, які не повністю використали виділений їм квант (наприклад, через відхід на виконання операцій введення-виведення), можуть отримати або не отримати компенсацію у вигляді привілеїв при наступному обслуговуванні. По-різному може бути організовано чергу готових процесів: циклічно, за правилом "перший прийшов - перший обслужений" (FIFO) чи за правилом "останній прийшов - перший обслужений" (LIFO).

Інша група алгоритмів використовує поняття "пріоритет" процесу.

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

Існує два різновиди пріоритетних алгоритмів: алгоритми, що використовують відносні пріоритети, і алгоритми, які використовують абсолютні пріоритети. В обох випадках вибір процесу на виконання з черги готових здійснюється однаково: вибирається процес, що має найвищий пріоритет. По різному вирішується проблема визначення моменту зміни активного процесу. У системах з відносними пріоритетами активний процес виконується до тих пір, поки він сам не покине процесор, перейшовши в стан ОЧІКУВАННЯ (чи ж станеться помилка, чи процес завершиться). У системах з абсолютними пріоритетами виконання активного процесу переривається ще при одній умові: якщо в черзі готових процесів з'явився процес, пріоритет якого вище пріоритету активного процесу. У цьому випадку перерваний процес переходить у стан готовності. На малюнку 1.2 показані графи станів процесу для алгоритмів з відносними (а) і абсолютними (б) пріоритетами. Рис. 1.2. Графи станів процесів у системах (а) з відносними пріоритетами;

(б) з абсолютними пріоритетами

У багатьох операційних системах алгоритми планування побудовані з використанням як квантування, так і пріоритетів. Наприклад, в основі планування лежить квантування, але величина кванта і / або порядок вибору процесу з черги готових визначається пріоритетами процесів.

Засоби синхронізації та взаємодії процесів. Проблема синхронізації

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

Нехтування питаннями синхронізації процесів, що виконуються в режимі мультипрограмування, може призвести до їх неправильної роботі або навіть до краху системи. Розглянемо, наприклад, програму друку файлів (принт-сервер). Ця програма друкує по черзі всі файли, імена яких послідовно в порядку надходження записують у спеціальний загальнодоступний файл "замовлень" інші програми. Особлива мінлива NEXT, також доступна всім процесам-клієнтам, містить номер першої вільної для запису імені файлу позиції файлу "замовлень". Процеси-клієнти читають цю змінну, записують у відповідну позицію файлу "замовлень" ім'я свого файла і нарощують значення NEXT на одиницю. Припустимо, що в деякий момент процес R вирішив роздрукувати свій файл, для цього він прочитав значення змінної NEXT, значення якої для визначеності припустимо рівним 4. Процес запам'ятав це значення, але помістити ім'я файлу не встиг, оскільки його виконання було перервано (наприклад, в наслідок вичерпання кванта). Черговий процес S, бажаючий роздрукувати файл, прочитав те ж саме значення змінної NEXT, помістив у четверту позицію ім'я свого файлу і наростив значення змінної на одиницю. Коли в черговий раз управління буде передано процесу R, то він, продовжуючи своє виконання, у повній відповідності зі значенням поточної вільної позиції, отриманим під час попередньої ітерації, запише ім'я файлу також в позицію 4, поверх імені файлу процесу S. Таким чином, процес S ніколи не побачить свій файл роздрукованим.

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