Какой алгоритм планирования используется в 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-я вкладка (Настройки ядра) -> Глобальный планировщик ввода-вывода. (названия вариантов могут отличаться, как я перевел с немецкого интерфейса)
Торбьерн

1

Алгоритм Round Robin обычно используется в средах с разделением времени.


0

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

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

Все другие задачи имеют динамические приоритеты в диапазоне [100,139], основанные на интерактивности задачи, основанной на их хороших значениях плюс или минус значение 5. Задачи, которые являются более интерактивными, обычно имеют более длительное время ожидания и, следовательно, с большей вероятностью настройте параметры ближе к -5, так как планировщик предпочитает интерактивные задачи. (Интерактивность задачи определяется тем, как долго она спит, ожидая ввода / вывода.) Интерактивность задачи определяет, будет ли значение 5 добавляться или вычитаться из значения nice. Результатом таких корректировок будут более высокие приоритеты для этих задач. И наоборот, задачи с более коротким временем ожидания часто более привязаны к процессору и поэтому их приоритеты будут снижены.

Ядро поддерживает список всех выполняемых задач в структуре данных очереди выполнения. Очередь выполнения содержит два массива приоритетов: активный и просроченный. Активный массив содержит все задачи с временем, оставшимся в их временных срезах, а просроченный массив содержит все просроченные задачи. Каждый из этих массивов приоритетов содержит список задач, проиндексированных в соответствии с приоритетом. Планировщик выбирает задачу с самым высоким приоритетом из активного массива для выполнения на CPU. Когда все задачи исчерпали свои временные интервалы (т. Е. Активный массив пуст), обмениваются два приоритетных массива: массив с истекшим сроком действия становится активным массивом, и наоборот.

Динамический приоритет задачи пересчитывается, когда задача исчерпала свой временной интервал и должна быть перемещена в массив с истекшим сроком действия. Таким образом, при обмене двумя массивами всем задачам в новом активном массиве были назначены новые приоритеты и соответствующие временные интервалы. (Примечание: это отрывок из книги Abraham Silberschatz, et al. Abraham Silberschatz, «Концепции операционной системы» (9-е издание). За подробностями обращайтесь к разделу 5.6.3 этой книги)


Добро пожаловать на сайт и спасибо за ваш вклад. Пожалуйста, используйте форматирование «цитата» (то есть начальные строки с >) для тех частей вашего ответа, которые вы переняли из внешнего источника, особенно при цитировании из книги.
AdminBee

0

Это ответ на ваш другой вопрос. Системы реального времени (RTS) бывают двух типов, жесткие и мягкие. Алгоритм планирования ЦП для жесткого RTS является приоритетным алгоритмом на основе приоритетов, а для мягкого RTS - приоритетным не является преимущественным.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.