Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Цилюрик О.И. Модули ядра Linux
Назад Внутренние механизмы ядра Вперед

Время и диспетчирование в ядре

Диспетчеризация в Linux выполняется строго по системному таймеру, на основании динамически пересчитываемых приоритетов. Приоритетов 140 (MAX_PRIO): 100 реального времени + 40 приоритетов «обычной» диспетчеризации, называемые ещё приоритетами nice (параметр nice в диапазоне от -20 до +19 — максимальный приоритет -20). Процессы, диспетчируемые по дисциплинам реального времени в Linux, это в достаточной мере экзотика, и они могут быть запущены только специальным образом (используя API диспетчеризации). Каждому процессу с приоритетом nice на каждом периоде диспетчирования, в зависимости от приоритета процесса, назначается период активности (timeslice) — 10-200 системных тиков, который динамически в ходе выполнения этого проценсса может быть ещё расширен в пределах 5-800, в зависимости от характера интерактивности процесса. На этом построена схема диспетчирования процессов в Linux сложности O(1) - не зависящая по производительности от числа диспетчируемых процессов, которой очень гордятся разработчики ядра Linux (возможно, вполне оправдано). Но всё это уже далеко выходит за пределы нашего рассмотрения... Нам же здесь важно зафиксировать, что все диспетчируемые изменения состояний системы происходят строго в привязке к шкале системных тиков.


Предыдущий раздел: Оглавление Следующий раздел:
Часы реального времени (RTC)   Параллелизм и синхронизация