Планування виконання процесів

попередньому розділі були розглянуті процеси-абстракція операційної системи, повязана з активним програмним кодом У цій главі представлений

планувальник процесів – код, який дозволяє процесам виконуватися

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

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

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

Багатозадачні (multitasking) операційні системи бувають двох видів: системи зкооперативної (cooperative) багатозадачністю і систем и звитісняючою (preemptive, преемптівной) багатозадачністюОпераційна система Linux, так само як і більшість варіантів ОС Unix та інших сучасних операційних систем, забезпечує багатозадачність В системі з витісняючою многозадачностью рішення про те, коли один процес повинен припинити виконання, а другий відновити його, приймає планувальник Подія, що полягає в примусовому заморожуванні що виконується процесу, називається витісненням (preemption)цього процесу Період часу, протягом якого процес виконується перед тим, як буде витіснений, відомий заздалегідь Цей період називається квантом часу (timesiice) процесу Насправді квант часу відповідає тійчастинипроцесорного часу, яка виділяється процесу За допомогою управління величинами квантів часу процесів планувальник приймає також і глобальне рішення про планування роботи всієї системи При цьому, крім усього іншого, запобігається можливість монопольного використання ресурсів всієї системи одним процесом Як буде показано далі, величини квантів часу в операційній системі Linux розраховуються динамічно, що дозволяє отримати деякі цікаві переваги

На противагу розглянутому вище типу багатозадачності, в системах з кооперативною багатозадачністю процес продовжує виконуватися до тих пір, поки він добровільно не прийме рішення про припинення виконання Подія, повязана з довільним заморожуванням що виконується процесу, називається  передачею керування (yielding)У такого підходу дуже багато недоліків: планувальник не може приймати глобальні рішення щодо того, скільки процеси повинні виконуватися процес може монополізувати процесор на більше час, ніж це необхідно користувачу Завислий процес, який ніколи не передає управління системі, потенційно може привести до непрацездатності системи На щастя, більшість операційних систем, розроблених за останнє десятиліття, надають режим витісняючою моногозадачності Найбільш відомим винятком є ​​операційна система Mac OS версії 9 і більше ранніх версій Звичайно, операційна система має багатозадачність з моменту свого створення

При розробці ядер ОС Linux серії 25, планувальник ядра був повністю реконструйований Новий тип планувальника часто називається0 (1)-плаііровщіком (0 (1) scheduler)у звязку з відповідним масштабуванням часу виконання алгоритму планірованія1 Цей планувальник дозволяє подолати недоліки попередніх версій планувальника ядра Linux і забезпечити розширену функціональність, а також більш високі характеристики продуктивності У цій главі будуть розглянуті основи роботи планувальників, як ці основи використані в О (1)-планувальнику, а також цілі створення 0 (1)-планіровшіка, його пристрій, практична реалізація, алгоритми роботи і відповідні системні виклики

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

Джерело: Лав, Роберт Розробка ядра 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>

*

*