Linux - причины вытеснения

Я хочу обновить ядро, чтобы делать больше вещей при переключении между задачами, и для этого мне нужно найти причину для каждого переключения.

Во-первых, я не могу найти функцию, где schedule() вызывается, когда есть задача с более высоким приоритетом, чем текущая, и их нужно переключить, где это происходит?

Во-вторых, есть ли какая-то причина для задачи уступать ЦП, а не выходить из нее или ждать чего-то? есть функция выхода или что-то?

Спасибо!

1 ответ

  1. Проверьте это prio_changed_fair (аналогично вы можете ссылаться на другой класс планирования)
  2. Задача не будет выполнена, если она находится в бесконечном цикле, но ядро ​​может запланировать другую задачу на основе временного интервала. Да, в Linux есть функция yield.
Другие вопросы по тегам