В чем разница между линией прерывания и номером прерывания


1

В чем разница между линией прерывания и номером прерывания (например, 0x80)? Также как IRQ связаны с syscalls?

+2

Я оставлю отвечающем на кого-то другого, но делать себе огромную пользу и провести некоторое время рылся в главе 6, в т. 3a руководства разработчика Intel. Это потрясающий ресурс для этой темы: https://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-3a-part- 1-manual.html 14 дек. 172017-12-14 17:57:04

1

LMGTFY:

Прерывание является сигналом от устройства, такие как клавиатура, к CPU, говоря, что необходимо немедленно остановить все, что в настоящее время делает и делать что-то другое. Например, контроллер клавиатуры отправляет прерывание при нажатии клавиши. Чтобы узнать, как вызвать ядро ​​при возникновении определенного прерывания, ЦП имеет таблицу, называемую IDT, которая является установкой векторной таблицы ОС и хранится в памяти. Существует 256 векторов прерываний на процессорах x86, пронумерованных от 0 до 255, которые выступают в качестве точек входа в ядро. Количество векторов прерываний или точек входа, поддерживаемых процессором, различается на основе архитектуры ЦП.

Есть обычно три класса прерываний на большинстве платформ:

  • Исключение: Они вырабатываются внутри процессора и используется для предупреждения бегущего ядро ​​события или ситуации, которая требует его внимания. На x86 процессорах, они включают условия исключения, такие как двойной ошибки, Page Fault, Общая ошибка защиты и т.д.

  • запрос на прерывание (IRQ) или аппаратное прерывание: Этот тип прерывания генерируется извне чипсетом, и это сигнализируется фиксацией на выводе #INTR или эквивалентном сигнале рассматриваемого CPU. Сегодня существуют два типа IRQ.

    • IRQ линия, или пин-код на основе IRQs: Они, как правило, статический маршрутизируются на наборе микросхем. Провода или линии работают от устройств на чипсете до контроллера IRQ, который сериализует запросы прерываний, отправленные устройствами, и отправляет их в CPU один за другим для предотвращения гонок. Во многих случаях контроллер IRQ отправляет сразу несколько IRQ в CPU сразу на основе приоритета устройства. Примером хорошо известного контроллера IRQ является цепочка контроллеров Intel 8259, которая присутствует на всех чипсетах на базе IBM-PC, объединяя два контроллера вместе, каждый из которых обеспечивает 8 входных контактов в общей сложности 16 доступных сигналов сигнализации IRQ на устаревшей IBM -ПК.
    • Прерывания на основе сообщений: Они сигнализируются путем записи значения в ячейку памяти, зарезервированную для информации о прерывательном устройстве, самом прерывании и информации о векторе. На устройство назначается место, к которому он подключается либо с помощью встроенного программного обеспечения, либо с помощью программного обеспечения ядра. Затем IRQ генерируется устройством с использованием протокола арбитража, специфичного для шины устройства. Примером шины, которая обеспечивает функцию прерывания на основе сообщений, является PCI-шина.
  • Software Interrupt: Это прерывание сигнализируют программным обеспечением, работающим на процессоре, чтобы указать, что он требует внимания ядра. Эти типы прерываний обычно используются для системных вызовов. На процессорах x86 команда, которая используется для инициирования программного прерывания, является инструкцией «INT». Поскольку процессор x86 может использовать любой из 256 доступных векторов прерываний для программных прерываний, ядра обычно выбирают один из них. Например, многие современные unixes используют вектор 0x80 на платформах на базе x86.