Я собираюсь обрисовать свое понимание обоих. Я погуглил, но я не уверен в своих знаниях. Пожалуйста, поправьте меня!
Аппаратное прерывание генерируется планировщиком событий операционной системы для переназначения времени процессора для другого процесса. Это правда?
Программное прерывание может быть сгенерировано запущенной программой, которая хочет, например, прочитать файл, и для этого нам нужно переназначить процессор для соответствующего вызова операционной системы. Это правда?
Есть ли другие виды программных / аппаратных прерываний?
Аппаратные и программные прерывания в первую очередь различаются тем, как они генерируются: аппаратные прерывания генерируются аппаратными средствами, например таймер, клавиатура, сетевая карта и т. д., в то время как программные прерывания запускаются специальной программной инструкцией (например, int 0x80
). Существует также связанное различие в их роли: аппаратные обработчики прерываний должны обрабатывать аппаратные события (например, пакет, поступающий на сетевой интерфейс), в то время как программные обработчики должны обслуживать другую часть программного обеспечения, обычно приложение, которое выполнило инструкцию прерывания. (например, чтобы запросить у ядра доступ к файлу от имени приложения).
Прерывание от таймера действительно используется планировщиком операционной системы для периодического восстановления управления и выполнения различных операций (например, учета ресурсов, переключения контекста).
Создание программного прерывания - это один из способов связи с ядром, который может использоваться на некоторых платформах для вызова системных вызовов.