Я пытаюсь лучше понять, как работают прерывания (как аппаратные, так и программные) и какие у них есть привилегии.
Если мы используем NIC в качестве примера. Когда ОС создает IDT, указывает ли запись для дескриптора NIC на встроенный драйвер, который ее обрабатывает. Если бы пользователь затем должен был установить сторонний драйвер для сетевой карты, будет ли изменена IDT, чтобы она указала на новый драйвер?
Будет ли прерывание от контроллера USB указывать на драйвер USB?
Каков будет уровень привилегий этой записи IDT и какой цели она будет служить? Я где-то читал, что аппаратные прерывания игнорируют уровень привилегий и позволяют работать независимо, но я не уверен, правда ли это.
С программными прерываниями, что бы они делали. Если он хочет получить доступ к функциям ядра, все ли они доступны через одно и то же прерывание с привилегиями уровня 3?
Какие существуют программные прерывания и что с ними делают программы пользовательского режима, или программы пользовательского режима просто используют программные прерывания для доступа к ядру.
Я пытаюсь собрать все это из онлайн-источников, но мне просто интересно, кто-нибудь может объяснить, как работает весь процесс.
Любая помощь приветствуется.
Благодарю.