2015-11-17 6 views
1

Означает ли какое-либо тело, что где данные алгоритма планирования CFS (например, содержимое приостановленной или готовой очереди, длительность задачи, ...) хранятся в Linux? (Есть ли специальный файл или структура данных для этой цели?)Структуры данных планировщика

Thanks.

ответ

1

CFS держит разный runqueue для каждого блока обработки в системе (то есть, он не является глобальным планировщиком, а скорее полагается на миграцию задачи между различными runqueues). Структура данных: struct cfs_rq в файле kernel/sched/sched.h.

Затем каждый runqueue внутренне сохраняет задачи, упорядоченные через структуру данных Red-Black Tree. Реализация этой структуры данных содержится в файле include/linux/rbtree.h. Это общая реализация в том смысле, что она не имеет строгого отношения к планированию и поэтому может использоваться любым компонентом ядра, который должен сохранять данные, отсортированные с такой структурой данных.

Внутри кода ядра структура данных, содержащая информацию о процессе (или потоке), представляет собой task_struct, содержащийся внутри include/linux/sched.h. Это основная структура данных, задача, используемый всеми политик планирования (то есть, SCHED_FAIR, SCHED_FIFO/SCHED_RR, SCHED_DEADLINE и т.д.)

good documentation о том, как работает КПБ содержится внутри директории Documentation/scheduler.

+0

Спасибо Клаудио. они остаются полезными. Но то, что я ищу, это конкретный файл или каталог или структура данных, которая содержит данные о времени выполнения CFS, такие как очередь. вы можете дать мне ключ? – sami

+0

Проверьте, отвечает ли мой новый ответ на ваш вопрос. – Claudio

+0

большое спасибо Клаудио. это было очень хорошо. но немного подробный, я хочу спросить вас, возможно ли, что с некоторым трюком см. содержимое cfs_rq или task_struct во время выполнения? (Я думаю, что это то, что может повредить в основной памяти во время выполнения, но я спрашиваю, будет ли трюк). – sami

 Смежные вопросы

  • Нет связанных вопросов^_^