Переключение задач при обработке прерывания
Добавлено: 20 фев 2021, 20:53
Здравствуйте!
Вопрос по работе планировщика задач linux (наверно).
При возникновении аппаратного прерывания, код передается верхней половине обработчика. При этом остальные прерывания запрещены.
Предполагается, что обработчик быстро сделает обработку своей задачи и возвратит управление системе.
Собственно вопрос: если обработчик задержится с выполнением, планировщик может переключить задачу и отдать ее другому процессу?
И по какому принципу это произойдет? Ведь обработчик прерывания не связан с вызывающим процессом и соответственно не имеет приоритета при переключении задачи.
Я возможно поднимаю тему, давно обсужденную, очень извиняюсь за это (слишком мало и плохо знаю систему). Я ориентировался на книгу Р.Лава про ядро и текстом из книги Цилюрика Модули ядра Linux. В обоих книгах обсуждается планировщик задач и подробно описывается алгоритм его работы, а по поводу обработки аппаратных прерываний упоминается только, что прерывания запрещены, многие функции недоступны и необходимо завершить обработчик как можно скорее. Про работу планировщика внутри прерывания ничего нет (вернее, скорее всего я это пропустил). Помогите разобраться с собственной дремучестью.
Заранее благодарен.
Вопрос по работе планировщика задач linux (наверно).
При возникновении аппаратного прерывания, код передается верхней половине обработчика. При этом остальные прерывания запрещены.
Предполагается, что обработчик быстро сделает обработку своей задачи и возвратит управление системе.
Собственно вопрос: если обработчик задержится с выполнением, планировщик может переключить задачу и отдать ее другому процессу?
И по какому принципу это произойдет? Ведь обработчик прерывания не связан с вызывающим процессом и соответственно не имеет приоритета при переключении задачи.
Я возможно поднимаю тему, давно обсужденную, очень извиняюсь за это (слишком мало и плохо знаю систему). Я ориентировался на книгу Р.Лава про ядро и текстом из книги Цилюрика Модули ядра Linux. В обоих книгах обсуждается планировщик задач и подробно описывается алгоритм его работы, а по поводу обработки аппаратных прерываний упоминается только, что прерывания запрещены, многие функции недоступны и необходимо завершить обработчик как можно скорее. Про работу планировщика внутри прерывания ничего нет (вернее, скорее всего я это пропустил). Помогите разобраться с собственной дремучестью.
Заранее благодарен.