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.
Спасибо Клаудио. они остаются полезными. Но то, что я ищу, это конкретный файл или каталог или структура данных, которая содержит данные о времени выполнения CFS, такие как очередь. вы можете дать мне ключ? – sami
Проверьте, отвечает ли мой новый ответ на ваш вопрос. – Claudio
большое спасибо Клаудио. это было очень хорошо. но немного подробный, я хочу спросить вас, возможно ли, что с некоторым трюком см. содержимое cfs_rq или task_struct во время выполнения? (Я думаю, что это то, что может повредить в основной памяти во время выполнения, но я спрашиваю, будет ли трюк). – sami