Який алгоритм планування використовується в Linux?


11

Нещодавно в інтерв'ю мене запитали про алгоритм планування, який використовується операційною системою Linux. Для чого використовується алгоритм?

Також який алгоритм застосовується в операційних системах реального часу і чому?


Для планування процесу чи IO? Або навіть щось інше?
maxschlepzig

Відповіді:


7

Поточний планувальник завдань Linux називається Повністю справедливим планувальником (CFS). Ви повинні ознайомитись з http://people.redhat.com/mingo/cfs-scheduler/sched-design-CFS.txt для отримання більш детальної інформації. Конструкція досить складна і на мій погляд, не підходить для RTOS.

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


2

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

Вікіпедія стверджує, що CFG (повністю Справедлива черга) за замовчуванням з ядра 2.6.18.

У моєму openSUSE (запуск Kernel 2.6.37) я можу перемикатися між CFG, NOOP та Deadline .


Мені цікаво, як ми можемо перейти на інший алгоритм? Ви можете пролити трохи світла на це? спасибі
rsjethani

@rsjethani Перейдіть до YaST -> Система -> Налаштування ядра -> 2-а вкладка (Налаштування ядра) -> Глобальний IO Scheduler. (найменування параметрів може бути іншим, як я переклав з німецького GUI)
Torbjörn

1

Алгоритм Round Robin зазвичай використовується в умовах обміну часом.


0

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

Він ідентифікує кожен процес або як процес у реальному часі, або як звичайний (інший) процес. Завданням у режимі реального часу присвоюються статичні пріоритети в діапазоні [0,99], де менша кількість вказує на більший пріоритет.

Усі інші завдання мають динамічні пріоритети в діапазоні [100,139], виходячи з інтерактивності завдання, що ґрунтується на їхніх приємних значеннях плюс або мінус значення 5. Завдання, які є більш інтерактивними, як правило, мають більший час сну, і тому більш схильні налаштуйте ближче до –5, оскільки планувальник надає перевагу інтерактивним завданням. (Інтерактивність завдання визначається тим, як довго він спив, очікуючи вводу-виводу.) Інтерактивність завдання визначає, чи буде додане значення чи віднімання від приємного значення значення 5. Результатом таких коригувань будуть вищі пріоритети для цих завдань. І навпаки, завдання зі скороченням часу сну часто більше пов'язані з процесором, і тому їхні пріоритети будуть знижені.

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

Динамічний пріоритет завдання перераховується, коли завдання вичерпало свій квантовий час і має бути переміщене до масиву, що минув. Таким чином, при обміні двох масивів всім завданням у новому активному масиві присвоюються нові пріоритети та відповідні відрізки часу. (Примітка. Це уривок із книги "Концепти операційної системи" (9-е видання) Авраама Сільбершаца та ін. Детальніше просимо в розділі 5.6.3 цієї книги)


Ласкаво просимо на сайт і дякуємо за ваш внесок. Будь ласка, використовуйте форматування "цитати" (тобто початкові рядки з >) для тих частин вашої відповіді, які ви взяли із зовнішнього джерела, зокрема при цитуванні з книги.
AdminBee

0

Це відповідь на ваше інше запитання. Системи реального часу (RTS) бувають двох типів, жорсткі та м'які. Алгоритм планування процесора для жорстких RTS є пріоритетним алгоритмом, заснованим на пріоритеті, а для м'яких RTS є пріоритетним.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.