Планировщик это процедура решающая какая задача будет активной при выходе из прерывания.
В общем случае планировщик вызывается в каждом вложенном прерывании если оно использует сервисы RTOS, например, установку семафора.
Переключение контекста в прерывании это восстановление состояния регистров не той задачи которая была прервана, а другой которая стала активной в результате обработки прерывания. А вложенные прерывания прерывают не задачу, а другое прерывание.
В uCOS вложенные прерывания всегда возвращаются в процедуру обработки прерывания которую они прервали, т.е. переключения контекста не происходит.
Но есть RTOS где из прерываний вообще не происходит выхода при отсутствии активных задач. (в uCOS, кстати, всегда есть фоновая задача IDLE, тут выходить надо обязательно). В таких RTOS можно говорить, что контекст может быть переключен из любого уровня вложенности.
Цитата(greezol @ Jan 29 2007, 02:36)

При окончательном выходе из всех прерываний или можно из них? Я не говорю о переключателе контекста, только о планировщике.
По идее вроде как первый вариант прозрачнее - если несколько прерываний "вложились", и задали несколько условий отличающихся приоритетом и т.п., то на выходе планировщик пусть все разгребает. Чем вызывать его из каких-то под-под-программ и убивать стек почем зря, за и задымлять весь процесс.
С другой стороны, если есть какое-то прерывание, которое нужно ну просто срочняк выполнить, может сделать исключение.
А с третьей стороны, обработчики прерываний должны быть сами по себе быстрыми и на крайняк просто устанавливать скажем, флаг "необходимо перепланировать" (тупо скоректируем системый таймер, или установим его флаг, ну это уже частности)