Цитата:
Ну я так понимаю не рекомендуется затирать начало таблицы векторов потому, что там вектор для немаскируемых прерываний?
Нет. Обработчик NMI вы пишете сами. И адрес для обработчика вы задаёте в IDT которая может быть где угодно.
NMI изначально предполагался для обработки ошибок возникших в обработчиках прерывания. Т.е это ошибки в железе.
К примеру в случае заклинивания таймер или Ваша ОС зависла. К примеру вы ждете бита и у вас выключены прерывания, а он не появляется из за аппаратного сбоя. Срабатывает сторожевой таймер который вызывает NMI.
Цитата:
Как может использоваться биос в защищенном режиме я не представляю себе, так как по определению биос пишется для работы в реальном режиме и для поддержки старых ОС реального режима.
По разному. Начиная от возврата в реальный режим, заканчивая исполнения p-coda.
К примеру:
1. в Int 10h VBE есть функции которые работают в 32 защищенном режиме. Хотя код лучше вызывать из реального или эмулировать проц.
2. в PnP есть функции которые работают в 16 защищенном режиме. Правда они никому не нужны достаточно таблиц и загрузчика.
3 У процессора есть режим System Management Mode(SMM) в который он попадает по внешнему сигналу. В этом режиме БИОС обрабатывает свои черные дела. К примеру для клавиатуры USB читается команда и записывается в контролёр 8042 тем самым эмулируется поступления кода как бы от PS/2 клавиатуры.
Код для SMM прячется обычно в теневой области RAM. Или был случай код в SMM эмалировал порты VGA и для установки режима использовал BDA.
4. А так да большинство кода BIOS является 16 битным и не годятся для работы в защищенном режиме. Поэтому BIOS предлагает таблицы с данными которыми ОС и пользуется. Есть ещё П-код для ACPI - AML. Который выполняется в защищенном режиме. Есть UEFI
Цитата:
- IVT заполнить переходом на какое-то одно прерывание IDT (к нему прилепить обработчик ну например для вывода сообщения что происходит незапланированное прерывание, мало ли...).
Это лишнее. Если прерывание будет то оно прийдет в IDT а IVT в природе несущественен. IDT настраивается в первых строчках кода BIOS. А уж где он будет находиться в вашей ОС решать вам.
Цитата:
тогда возникает вопрос, а BDA на всех биос следуют стандарту и имеют один размер?
А нет стандарта на BDA. В большинстве случаев 100h остальное считаем как исключение. Правда за ваш ноут не скажу там может и больше оказаться. Линуксойды чаще всего считают 100h виндоус считает что 200h