2015-09-10 3 views
0

Является ли таблица векторов прерываний в ПЗУ или ОЗУ? Если он находится в ОЗУ, откуда он загружается? Кроме того, зависит ли таблица от операционной системы? Например, в MS-DOS «int 0x80» предназначен для воспроизведения музыки и музыки, но в Linux это системный вызов. Итак, в MS-DOS есть прерывание 0x80, обрабатываемое операционной системой или ПЗУ? Если он находится в ПЗУ, перезаписывает ли Linux запись в таблице?Где находится векторная таблица прерываний?

ответ

5

На ПК таблица векторов прерываний (IVT) всегда находится в ОЗУ. По умолчанию он находится в 0000: 0000 в начале памяти, но его можно переместить с помощью инструкции LIDT. MS-DOS не двигает IVT, но Linux может. В любом случае это будет где-то в ОЗУ.

Прерывание 0x80 не является стандартным прерыванием MS-DOS или BIOS и поэтому обычно не обрабатывается под MS-DOS. Если он используется все это, он обрабатывается некоторым сторонним кодом (например, TSR или, возможно, драйвером), который не является частью операционной системы. Другие прерывания могут обрабатываться либо MS-DOS (например, 0x21), либо BIOS (например, 0x10). В первом случае код обработки прерывания будет в ОЗУ, а в последнем случае код будет в ПЗУ. (Хотя вероятно, что ПЗУ BIOS было скопировано только для чтения shadow RAM, расположенное по тому же адресу ПЗУ, поскольку код BIOS работает намного быстрее таким образом.)

В таких защищенных операционных системах, как Linux, обрабатываются прерывания исключительно операционной системой.

+0

Удивительный, спасибо снова человеку. – user3724492

Смежные вопросы