Когда использовать Interrupt Gate или Trap Gate? - PullRequest
1 голос
/ 09 августа 2010

Как показано в Руководстве Intel, для доступа к процедуре обработчика можно использовать как шлюз прерываний, так и шлюз ловушек.И некоторые исключения даже делят векторные числа с прерываниями.Мне интересно, когда ЦП обнаруживает такой общий вектор, как ЦП может узнать, является ли он исключением или прерыванием?

Я немного запутался в логике из следующих вещей:

  • решение типов ворот в IDT

  • суждение о том, обозначает ли вектор исключение или прерывание

Что решает, какое?

Надеюсь, я ясно дал понять ...

Обновление 1

Спасибо за ответ nos.Вы имеете в виду, что я должен сказать процессору, какой вектор обозначает прерывание или ловушку?Я знаю, что процессор по-разному относится к EFLAGS [IF] в отношении прерываний и прерываний. Как процессор знает, как принять это решение?Принимает ли процессор решение на основе полей типа записи IDT, соответствующей вектору?Или скорее это зависит от того, как система подключена, и мы должны установить тип записи IDT в соответствии с этим?то есть, является ли тип файлов полностью иллюстрацией для нас или обязательным для процессора?

и связанный с этим вопрос: Разница между шлюзом вызова, шлюзом прерывания, шлюзом ловушки?

1 Ответ

0 голосов
/ 09 августа 2010

Вы должны запрограммировать ЦП относительно того, что является шлюзом прерывания и что является шлюзом прерывания для данного ISR.

Это устанавливается битом 40-43 в записи IDT.Информация здесь: http://wiki.osdev.org/Interrupt_Descriptor_Table

...