Модификация таблицы дескрипторов прерываний (IDT)

В потоке управления в ядре Linux обнаружено, что управление переходит к IDT, в котором находятся прерывания (например, системный вызов 0x80). И тогда управление переходит к соответствующему системному вызову. Также прочитайте, что IDT инициализируется только во время загрузки.

Я хотел бы узнать больше об информации IDT из реального ядра, например о его местонахождении. Также хотелось бы знать, модифицировалась ли она когда-нибудь в другое время?

Пожалуйста помоги.


person user567879    schedule 11.01.2011    source источник


Ответы (2)


Пишем руттит, не так ли?

В любом случае, вы можете использовать инструкции LIDT/SIDT x86 для прямого поиска и управления IDT. Вы также можете найти некоторую информацию о подключении IDT к некоторым хорошим разборные статьи именно на эту тему.

person Dan    schedule 11.01.2011

В Linux объявления функций обработки IRQ можно найти в include /linux/interrupt.h. Общий код обработки можно найти в kernel/irq/. определенный код в каталогах arch/ — взгляните, например, на arch/x86/kernel/irq.c и другие файлы irq*.c в этом каталоге.

Вы должны прочитать комментарии в файлах kernel/irc/*.c, чтобы понять правила и механизмы блокировки IRQ в Linux. Обратите внимание, что другие ОС могут и будут иметь другие правила блокировки. Удачи!

person bdonlan    schedule 11.01.2011