Стратегія планування

Стратегія (policy) планування-це характеристики поведінки планувальника, які визначають, що і коли має виконуватися визначає глобальний характер поведінки системи і відповідає за оптимальне використання процесорного часу Таким чином, це поняття дуже важливе

Процеси, обмежені швидкістю введення-виведення і швидкістю процесора

Процеси можна класифікувати як ті, які обмежені швидкістю введення-виведення (I/0-bound), і ті, які обмежені швидкістю процесора (processor-bound) До першого типу відносяться процеси, які більшу частину свого часу виконання витрачають на відправку запитів на введення-виведення інформації та на очікування відповідей на ці запити Отже, такі процеси часто готові до виконання, але можуть виконуватися тільки протягом короткого періоду часу, так як зрештою вони блокуються в очікуванні виконання вводу-виводу (маються на увазі не тільки дискові операції введення-виведення, а й будь-який інший тип введення-виведення інформації, як, наприклад, робота з клавіатурою)

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

Зазначені класифікації не є взаємно виключають Процеси можуть поєднувати в собі обидва типи поведінки: сервер системи X Windows – це процес, який одночасно інтенсивно завантажує процесор і інтенсивно виконує операції введення-виведення Деякі процеси можуть бути обмежені швидкістю введення-виведення, але час від часу починають виконувати інтенсивну процесорну роботу Хороший приклад – текстовий процесор, який зазвичай чекає натискання клавіш, але час від часу може сильно завантажувати процесор, виконуючи перевірку орфографії

Стратегія планировани я операційно й системи повинна стремітьс я до задоволення двох несумісних умов: забезпечення високої швидкості реакції процесів (малого часу затримки, low latency) і високої продуктивності (throughput) Для задоволення цим вимогам часто в планувальник застосовуються складні алгоритми визначення найбільш відповідного для виконання процесу, які додатково гарантують, що всі процеси, що мають нижчий пріоритет, також будуть виконуватися У Unix-подібних операційних системах стратегія планування спрямована на те, щоб процеси, обмежені швидкістю введення-виведення, мали більший пріоритет Використання більш високого пріоритету для процесів, обмежених швидкістю введення-виведення, призводить до збіль-

личен швидкості реакції процесів, так як інтерактивні програми зазвичай обмежуються швидкістю введення-виведення В операційній системі Linux для забезпечення гарної швидкості реакції інтерактивних програм застосовується оптимізація за часом оклику (забезпечення малого часу затримки), тобто процеси, обмежені швидкістю введення-виведення, мають більш високий пріоритет Як буде видно далі, це реалізується таким чином, щоб не нехтувати і процесами, обмеженими швидкістю процесора

Пріоритет процесу

Найбільш широко поширеним типом алгоритмів планування є планування з керуванням за пріоритетами (priority-based)Ідея полягає в тому, щоб розташувати процеси по порядку відповідно до їх важливості і необхідністю використання процесорного часу Процеси з вищим пріоритетом будуть виконуватися раніше тих, що мають нижчий пріоритет, тоді як процеси з однаковим пріоритетом плануються на виконання циклічно (по колу, round-robin), тобто періодично один за іншим У деяких операційних системах, включаючи Linux, процеси з вищим пріоритетом отримують також і більш тривалий квант часу Процес, який готовий до виконання, у якого ще не закінчився квант часу і який має найбільший пріоритет, буде виконуватися завжди Як операційна система, так і користувач можуть встановлювати значення пріоритету процесу і таким чином впливати на роботу планувальника системи

В операційній системі Linux використовується планувальник здинамічним управлінням по пріоритетах (dynamic priority-based), який заснований на такий же ідеї Основний принцип полягає в тому, що спочатку встановлюється деяке початкове значення пріоритету, а потім планувальник може динамічно зменшувати або збільшувати це значення пріоритету для виконання своїх завдань Наприклад, ясно, що процес, який витрачає багато часу на виконання операцій введення-виведення, обмежений швидкістю введення-виведення В операційній системі Linux такі процеси отримують більш високе значення динамічного пріоритету З іншого боку, процес, який постійно повністю використовує своє значення кванта часу, – це процес, обмежений швидкістю процесора Такі процеси отримують менше значення динамічного пріоритету

У ядрі Linux використовується два різних діапазону пріоритетів Перший – це параметрnice,  який може приймати значення в діапазоні від -20 до +19, за замовчуванням значення цього параметра дорівнює 0 Більше значення параметраnice відповідає меншому значенню пріоритету – необхідно бути більш тактовним до інших процесів системи (Пicе- англ тактичний, хороший) Процеси з меншим значенням параметраnice (Великим значенням пріоритету) виконуються раніше процесів з великим значеннямniie (Меншим пріоритетом) Значення параметра nice дозволяє також визначити, наскільки тривалий квант часу отримає процес Процес зі значенням параметраnice рівним -20 отримає квант часу самої великої тривалості, в той час як процес зі значенням параметра nice рівним 19 отримає найменше значення кванта часу Використання параметра nice — це стандартний спосіб вказівки пріоритетів процесів для всіх Unixподобних операційних систем

Другий діапазон значень пріоритетів-це пріоритети реального часу (real-time priority), які будуть розглянуті нижче За замовчуванням діапазон значень цього параметра лежить від 0 до 99 Всі процеси реального часу мають вищий пріоритет порівняно зі звичайними процесами В операційній системі Linux пріоритети реального часу реалізовані відповідно до стандарту POSIX У більшості сучасних Unix-систем вони реалізовані за аналогічною схемою

Квант часу

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

На основі цих аргументів можна зробити висновок, що будь велике значення кванта часу призведе до погіршення інтерактивної продуктивності При реалізації більшості операційних систем такий висновок приймається близько до серця і значення кванта часу, використовується за умовчанням, досить мало, наприклад одно 20 мс Однак в операційній системі Linux використовується ту перевагу, що процес з найвищим пріоритетом завжди виконується Планувальник ядра Linux піднімає значення пріоритету для інтерактивних завдань, що дозволяє їм виконуватися більш часто Тому в ОС Linux планувальник використовує досить велике значення кванта часу (рис 41) Більш того, планувальник ядра Linux динамічно визначає значення кванта часу процесів залежно від їх пріоритетів Це дозволяє процесам з більш високим пріоритетом, які вважаються важливішими, виконуватися більш часто і протягом більшого періоду часу Використання динамічного визначення величини кванта часу і пріоритетів дозволяє забезпечити більшу стійкість і продуктивність планувальника

Слід зауважити, що процес не обовязково повинен використовувати весь свій квант часу за один раз Наприклад, процес, у якого квант часу дорівнює

100 мс, не обовязково повинен безперервно виконуватися протягом 100 мс, ризикуючи втратити все невитрачену частину Кіанто часу Процес може виконуватися протягом пяти періодів тривалістю по 20 мс кожен

2Вместо терміна timeslice (квант часу) іноді також використовується quantum (квант) або processor slice В ОС Linux застосовується термін timeslice

Менший пріоритет чи Більший пріоритет або

Мінімум

За замовчуванням

Максимум

5мс

100 мс

800 мс

Рис 41 Обчислення кванта часу процесу

Таким чином, інтерактивні завдання також отримують перевагу від використання тривалого кванта часу, якщо навіть вся тривалість кванта часу не буде використана відразу, гарантується, що такі процеси будуть готові до виконання по можливості довго

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

Витіснення процесу

Як уже згадувалося, операційна система Linux використовує витісняючу багатозадачність Коли процес переходить у стан TASK_RUNNING, ядро ​​перевіряє значення пріоритету цього процесу Якщо це значення більше, ніж пріоритет процесу, який виконується в даний момент, то активізується планувальник, щоб запустити новий процес на виконання (мається на увазі той процес, який щойно став готовим до виконання) Додатково, коли квант часу процесу стає рівним нулю, він витісняється і планувальник готовий до вибору нового процесу

в дії

Розглянемо систему з двома готовими до виконання завдань: програмою для редагування текстів і відеокодеров Програма для редагування текстів обмежена швидкістю введення-виведення, тому що вона витрачає майже весь свій час на очікування введення символів з клавіатури користувачем (не має значення, з якою швидкістю користувач друкує, це не ті швидкості) Незважаючи ні на що, при натисканні клавіші користувач хоче, щоб текстовий редактор відреагуваввідразу ж На противагу цьому відеокодер обмежений швидкістю процесора Якщо не вважати, що він час від часу зчитує необроблені дані з диска і записує результуючий відеоформат на диск, то кодер більшу частину часу виконує програму видеокодека для обробки даних, що легко завантажує процесор на всі 100% Для цієї програми немає строгих обмежень на час виконан-

нения: користувачеві не важливо, запуститься вона на півсекунди раніше чи на півсекунди пізніше Звичайно, чим раніше вона завершить роботу, тим краще

У такій системі планувальник встановить для текстового редактора більший пріоритет і виділить більш тривалий квант часу, ніж для відеокодера, так як текстовий редактор – інтерактивна програма Для текстового редактора тривалості кванта часу вистачить з надлишком Більше того, оскільки текстовий редактор має більший пріоритет, він може витіснити процес відеокодера при необхідності Це гарантує, що програма текстового редактора буде негайно реагувати на натискання клавіш Однак це не заподіє ніякої шкоди і відеокодеров, так як програма текстового редактора працює з перервами, і під час перерв відеокодер може монопольно використовувати систему Все це дозволяє оптимізувати продуктивність для додатків

Джерело: Лав, Роберт Розробка ядра Linux, 2-е видання : Пер з англ – М: ТОВ «ІД Вільямс »2006 – 448 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*