Linux - причины вытеснения
Я хочу обновить ядро, чтобы делать больше вещей при переключении между задачами, и для этого мне нужно найти причину для каждого переключения.
Во-первых, я не могу найти функцию, где schedule() вызывается, когда есть задача с более высоким приоритетом, чем текущая, и их нужно переключить, где это происходит?
Во-вторых, есть ли какая-то причина для задачи уступать ЦП, а не выходить из нее или ждать чего-то? есть функция выхода или что-то?
Спасибо!
1 ответ
- Проверьте это prio_changed_fair (аналогично вы можете ссылаться на другой класс планирования)
- Задача не будет выполнена, если она находится в бесконечном цикле, но ядро может запланировать другую задачу на основе временного интервала. Да, в Linux есть функция yield.