Чего не может быть в процедуре обработки прерывания? - PullRequest
0 голосов
/ 25 февраля 2012

Я знаю, что ISR должен быть очень быстрым и должен обрабатывать прерывание очень быстро. Но я не понимаю причину того же. Почему это условие должно быть выполнено? Кроме того, для этого есть какие-то ограничения на то, что все может иметь код ISR? Как правило, что все не должно быть включено в код ISR?

Спасибо

Ответы [ 2 ]

5 голосов
/ 25 февраля 2012

Когда выполняется ISR, никакие потоки не могут выполняться на одном и том же CPU, поэтому планирование потоков затрагивается, и чем дольше он выполняется, тем больше влияние.В зависимости от реализации (программной и аппаратной) все прерывания (или прерывания с более низким приоритетом) могут быть отключены во время выполнения ISR, что означает, что если ISR требуется много времени для завершения, другие прерывания могут обрабатываться недостаточно быстро, то естьбудут задержки или даже пропущенные прерывания.

Есть еще несколько вещей, которые необходимо учитывать:

  1. использование блокировок в ISR
  2. касание памяти в страничной памяти в ISR

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

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

2 голосов
/ 25 февраля 2012

Я знаю, что ISR должен быть очень быстрым и должен обрабатывать Прервите очень быстро. Но я не понимаю причину же

Самое строгое требование состоит в том, что ISR не может блокировать - он не может спать. Так что вы не можете использовать семафоры, например.

Каждое прерывание связано с аппаратным обеспечением. Подумайте о сетевом устройстве. У него очень маленькая память, и все же он получает кадры на высокой скорости. Вам лучше быстро скопировать содержимое из него в основную память, иначе кадры переполнят устройство и будут проливать кадры.

...