Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операцiйнi системи та середовища6.05.07(Антонов...doc
Скачиваний:
11
Добавлен:
04.05.2019
Размер:
801.79 Кб
Скачать

2.3.2 Дисципліни розподілу процесів

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

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

Дисципліни формування черг поділяються на два класи: статичний, коли пріоритети процесів задано заздалегідь, та динамічний, за якого пріоритети визначаються в перебігу виконання програми. Найчастіше на практиці використовуються такі дисципліни:

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

а )

б)

в)

Рисунок 2.2 – Схеми дисциплін обслуговування процесів:

а – FIFO;

б – LIFO;

в – круговий циклічний алгоритм

LIFO – останній прийшов, перший обслуговується. Теж проста й широко розповсюджена на практиці дисципліна, яка є підгрунтям побудови стекової пам’яті. Умовне зображення дисципліни подано на рис. 2.2 б.

Обидві дисципліни є справедливі стосовно “довгих” та “коротких” запитів. Середній час очікування в черзі не залежить від характеристик процесів-користувачів і в середньому є однаковий для всіх. Дисципліна FIFO забезпечує мінімізацію дисперсії часу очікування.

Круговий циклічний алгоритм – підгрунтям цієї дисципліни є дисципліна FIFO. Час обслуговування кожного процесу обмежено й визначається квантом надаваного часу, – tk . Якщо запит на використання ресурсу з початку черги обслуговується до кінця за час tk (приміром програму процесу за час tk повністю виконано на процесорі), то він вилучається з черги. Якщо цей запит не встигає обслужитися до кінця, то його обслуговування переривається, – й він переходить у кінець черги.

Схему дисципліни приведено на рис. 2.2, в. Дисципліна широко використовується на практиці, зокрема при реалізації режиму розподілу часу. Хоча в цій дисципліні немає явно окресленних пріоритетів, автоматично відбувається дискримінація “довгих” та “коротких” запитів. За найбільш сприятливих умов перебуватимуть “короткі” запити від процесів, для яких потрібен менший час використовування ресурсів. “Короткі” запити мають менший середній час очікування в системі, аніж “довгі” запити. Квант наданого на користування ресурсом часу обирається як компромісне значення: чим менше значення tk, тим більше буде сприяння “коротким” запитам, але більшим буде й час, який витрачається на перерозподіл ресурсів поміж процесами через зростання частості переривань, тим більш несприятливі умови складаються для довгих запитів.

На практиці використовуються різні модифікації цього алгоритму.

Багаточергові дисципліни – будуються на підставі безпріоритетних та пріоритетних стратегій обслуговування. На рис. 2.3 подано схему багаточергової дисципліни обслуговування, коли організуються N черг. Усі нові запити надходять у кінець першої черги. Перший запит з і-тої черги (1 і N) буде обслуговуватись лише тоді, коли всі черги від 1- ої до (і-1)- ої порожні. Якщо за квант часу tk обслуговування запиту повністю завершується, то він полишає систему, інакше – недообслуговуваний запит надходить у кінець черги з номером (і+1). Після обслуговування з черги і система обирає для обслуговування запит з непорожньої черги з найменшим номером. Таким запитом може бути наступний запит з черги і або з черги (і+1), якщо і-та черга є порожня. Новий запит надходить до першої черги (і=1). У такій ситуації після завершення кванта tk, виділеного для обслуговування запиту з черги і, буде обслуговуватись запит 1- ої черги [2].

Рисунок 2.3 – Схема багаточергової дисципліни обслуговування

Якщо система виходить на обслуговування запитів з черги N, то вони обслуговуються або за дисципліною FIFO (кожна заявка обслуговується до кінця) або за круговим циклічним алгоритмом. Наведена дисципліна теж найшвидше обслуговує усі короткі за часом обслуговування дисципліни. Недоліком системи є витрати часу на переміщування запитів з однієї черги до іншої. Описані дисципліни забезпечують не лише обслуговування черг, але й їхнє формування. Для усіх цих дисциплін є притаманна відсутність пріоритетності запитів за їхнього надходження до системи. Але після надходження кожний новий запит дістає пріоритет, який змінюється в перебігу обслуговування однієї черги або багатьох черг.

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

Рисунок 2.4 – Схема пріоритетної багаточергової дисципліни обслуговування

Обслуговування з абсолютним пріоритетом передбачає наявність у нового запиту, який надійшов до черги, певного пріоритету залежно від параметрів процесів. Найбільш пріоритетні запити потрапляють до черг з найменшими номерами. Обслуговуються першими запити, в яких найвищі пріоритети. Припустімо, що система обслуговує запит з черги з номером і, де 1 і N, й до системи надходить більш пріоритетний запит до черги з номером (і-1). За таких умов обслуговування і-го рівня переривається, – й система розпочинає обслуговувати запит (і-1)-го рівня. Після завершення його обслуговування перерваний запит і-го рівня дообслуговується.

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

Обслуговування з відносним пріоритетом надає ресурс у такий спосіб, що новий, більш пріоритетний запит, не спричиняє переривання обслуговування менш пріоритетного запиту, а очікує на його завершення.

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