реализация функций include / sched.h

Я хотел изучить, как потоки могут быть назначены вручную определенным ядрам на многоядерной машине. Я обнаружил, что include / sched.h определяет некоторые макросы и функции (sched_setaffinity и т. Д.), Которые могут в этом помочь. Однако функции являются внешними, и я не могу найти их определения. Реализованы ли где-нибудь эти функции? Если да, то где и можно ли отменить реализацию по умолчанию? Если нет, как я могу их реализовать?

И будет ли добавление новой реализации означать, что мне придется перекомпилировать ядро ​​Linux?


person Aastha    schedule 14.12.2010    source источник
comment
Возможно дублирование: stackoverflow.com/questions/766395/ - здесь реализация lxr.linux.no/linux + v2.6.36 / kernel / sched.c # L4858   -  person jweyrich    schedule 14.12.2010
comment
sched_setaffinity () - попробуйте изучить этот вызов, он также используется в потоковой передаче.   -  person jim mcnamara    schedule 14.12.2010


Ответы (2)


Код sched_setaffinity находится в ядре. Заголовочный файл просто предоставляет прототип для его вызова, а библиотека, которая его удовлетворяет, просто перенаправляет вызов в систему.

person wallyk    schedule 14.12.2010

Проверьте код BFS, который покажет вам, как реализовать ваш собственный планировщик ЦП.

// редактировать да добавление нового планировщика impl означает, что вам нужно перекомпилировать ядро, однако вы всегда можете просто протестировать его с помощью qemu -kernel /path/to/new/kerenl -initrd something, чтобы убедиться, что ваш код не вылетает сразу, прежде чем тестировать его на реальной машине.

person OneOfOne    schedule 14.12.2010
comment
Однако тестирование в qemu проверяет только сбой нового кода. Планировщик хост-системы будет вмешиваться в любые измерения времени. Вы не сможете получить какую-либо форму надлежащих показателей производительности, если не опробуете ее на реальной машине. - person thkala; 14.12.2010
comment
Согласен, я имел в виду проверить, не вылетает ли его код, я не правильно сказал. - person OneOfOne; 14.12.2010