Системный приоритет прерывания таймера и заблокированные прерывания

513
Nik Novák

Предположим, у нас есть ОС, которая работает на процессоре, который полностью совместим с его требованиями. Эта ОС управляется галочкой. Системное прерывание от тика поступает от внешнего таймера (периодический режим), который для простоты подключен к некоторому выводу IRQn процессора.

Выводы IRQ отсортированы по приоритету прерывания. IRQ0 имеет самый высокий приоритет, а IRQn имеет самый низкий приоритет. Приоритет есть как минимум по двум причинам. Первый, конечно, когда приходят два прерывания вместе, выбирается одно с более высоким приоритетом. Вторая причина заключается в следующем: при возникновении прерывания дальнейшие прерывания отключаются аппаратно. Когда прерывания включены в ISR (возможны вложенные прерывания), возможны только прерывания с более высоким приоритетом. И у меня есть несколько вопросов по этому поводу.

Мой первый вопрос, вероятно, очень прост, и я могу ответить на него сам (возможно), но я хочу прочитать надежный ответ.

  • Как выбрать приоритет таймера? Это самый низкий приоритет прерывания в системе? *

Вот второй вопрос.

  • Что делать, если прерывание по таймеру происходит точно в то время, когда процессор обслуживает другое (ие) прерывание (я), и дальнейшие прерывания отключены?

А вот и дополнение от меня. Если может случиться описанная выше ситуация (во втором вопросе), есть шанс потерять системный тик. Может ли это вызвать большие проблемы?

* Если приоритет таймера таймера не был наименьшим приоритетом прерывания в системе, может возникнуть ситуация, когда процессор находится в ISR с более низким приоритетом, чем системное прерывание тика, и разрешает дальнейшие прерывания, и пользовательский процесс, который нам необходим для потенциального планирования, где-то сохраняется в стеке, где мы не можем найти его в процедуре системных тиков.

Я знаю, что все это может зависеть от системы, но меня интересуют любые типичные решения, похожие на эту ситуацию.

Извините за мой английский.

0
Вы смешиваете много разных [вопросов] (http://superuser.com/questions/1012978/system-tick-timer-interrupt-in-smp) и идей; «Как выбрать приоритет таймера?» Полностью зависит от вас и от того, что вы строите, особенно если вы говорите о прерываниях процессора (которые сильно зависят от системы). Что именно вы пытаетесь сделать? Кроме того, вы можете получить лучший ответ на другом сайте StackExchange (например, StackOverflow). txtechhelp 8 лет назад 0
@txtechhelp Спасибо за ваше время. Я это написал. Я ищу любые, действительно ЛЮБЫЕ, типичные решения, которые похожи на эту ситуацию. Например Linux с архитектурой arm. Или с x86. Или выберите условия полностью самостоятельно. Это может быть даже длинный ответ. Nik Novák 8 лет назад 0

0 ответов на вопрос