Программные ловушки против аппаратных ловушек - PullRequest
0 голосов
/ 27 января 2011

Насколько я понимаю, основное различие между прерываниями и прерываниями заключается в том, что прерывания являются синхронными и генерируются исключениями (деление на ноль и т. Д.), А прерывания являются асинхронными (несколько устройств могут пытаться прерывать одновременно, хотя кто выигрывает Гонка - это тот, кто первым получает блокировку в очереди на работу). Существует два типа прерываний: аппаратное и программное. Исключение деления на ноль обнаруживается аппаратным обеспечением и, следовательно, служит примером для аппаратных ловушек.

У меня здесь два вопроса.

  1. Правильно ли мое понимание схем и есть ли еще различия?
  2. Есть ли вещь, называемая программной ловушкой? Если это так, пример будет полезен!

1 Ответ

4 голосов
/ 27 января 2011

Инструкция syscall может рассматриваться как программная ловушка. Он вызывает все элементы обработки прерываний / прерываний (переключение контекста на подпрограмму обработки прерываний, которая выполняется полностью с привилегиями), но запускается под управлением программного обеспечения.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...