Это из Википедии ...
Таблица дескрипторов прерываний (IDT)
структура данных, используемая в x86
архитектура для реализации прерывания
таблица векторов. IDT используется
процессор для определения правильного
ответ на прерывания и
исключения ... В процессоре 8086 IDT находится в фиксированном месте в памяти от адреса 0x0000 до 0x03ff ...
Это от http://www.linuxjournal.com/article/4048?page=0,1
Когда start_kernel (найден в
/usr/src/linux/init/main.c) называется,
он вызывает trap_init (найден в
/usr/src/linux/kernel/traps.c).
trap_init устанавливает IDT через
макрос set_trap_gate (находится в
/usr/include/asm/system.h) и
инициализирует дескриптор прерывания
таблица, как показано в «Смещение
Описание ».
Я довольно смущен, потому что эти два описания кажутся противоречивыми ... Первое говорит, что IDT связана с процессором и не зависит от ядра (на самом деле, оно даже не лежит внутри ядра). Второй говорит, что ядро Linux инициализирует IDT и реализует код для ISR, и весь код для ISR находится внутри ядра.
Кроме того, когда устройство генерирует прерывание для ЦПУ, является ли оно ядром или процессором, который отвечает за выполнение подпрограмм прерывания?
Пожалуйста, объясните мне это ... Спасибо заранее