Что происходит, когда вы отключаете прерывания, и что вы делаете с прерываниями, с которыми не знаете, как обработать?

StackOverflow https://stackoverflow.com//questions/10671048

Вопрос

Когда вы запрещаете прерывания (с помощью cli инструкция в x86), что именно происходит?

  • PIC ждет, пока вы включите прерывания, и запускает прерывание, когда это происходит?(Если да, то как долго оно будет ждать и что произойдет, если время «истечет»?)

  • Отправляется ли прерывание с точки зрения устройства в «черную дыру» без ответа?

  • PIC каким-то образом сообщает устройству, что «процессор занят» или что-то в этом роде?

  • Или происходит что-то еще?

Кроме того, как вы справляетесь с прерыванием, с которым не знаете, как справиться?
Есть ли способ сообщить PIC (или устройству, если вы не знаете, что это за устройство): «да, я получил ваше сообщение, но не знаю, что с ним делать»?

Это было полезно?

Решение

ЦИК 8259A ждет сигнала Inta от CPU. ЦП отправляет его, когда начинает обращаться с прерыванием, передавая элемент управления соответствующим ISR. Какой ISR? PIC дает вектор прерывания на CPU, который смотрит вверх по IVT / IDT для адреса, и вы знаете остальные. Фотография не будет предоставлять вектор прерывания, пока он не получает Inta.

У 8259A PIC имеет только одностороннее сообщение с устройствами ввода / вывода. Они могут сказать, что у них есть прерывание, которое требует обслуживания.

Итак, все в воздухе на рис, если ЦП не реагирует на прерывания. Тем не менее, устройства могут при их приходе отстаиваться, а затем вновь утверждают сигналы запроса прерываний. Я не знаю, что делать. Я также не знаю, у кого есть какие-либо временные требования к обслуживанию прерывания.

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

Другие советы

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

PIC ПК имеет несколько уровней прерываний, и я считаю, что он может удерживать одно активное прерывание для каждого уровня приоритета.Он будет хранить каждый из них до тех пор, пока ЦП не сообщит ему, что соответствующая обработка завершена.Отключение прерываний на длительный период времени, вероятно, сломает это, так что просто не делайте этого!

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top