Что такое аппаратное прерывание? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Пишу в эту тему, потому что хочется поучить аппаратное прерывание на си (пусть даже это будет ассемблерная вставка для получения прерывания), си кажется может подключать ассемблерный код. Вопрос вот какой, не могу понять по хорошему - что такое аппаратное прерывание. Драйвер ядра сразу исключаю, так как при ближнем рассмотрении это просто распараллеливание прерывания между многоядерными процессорами в ПК (Система с APIC состоит из локальных контроллеров, установленных в процессорах) В литератре пишут, что аппаратное прерывание является асинхронным, так как имеет свой контроллер прерывания и даже не один, а 2 и больше. Но если рассмотреть работу аппаратного прерывания ближе к железу, то выясняется что прерывание это изменение физического сигнала с 0 на 1 на входе контроллера прерывания ПК (1) и записывается оно в 3 регистра 8 битных IRR,IMR,ISR далее из процессора должен прийти сигнал подтверждения получения прерывания(2), при этом высокий уровень прерывания на контроллере должен все еще присутствовать(1). Таким образом получается, что аппаратное прерывание это 1 бит "лог.1" на входе контроллера прерываний и процессор с какой то своей (очень быстрой, но все же цикличностью) опрашивает эти 3 регистра (или один из них, что не так важно) и получается что аппаратное прерывание, это самый настоящий синхронный режим, но очень быстрый - отсюда возникает вопрос, с какой частотой опрашиваются эти 8 бит контроллера прерываний ( скорее всего очень быстро, но не чистый 0), сколько то микросекунд наверно все же есть и а вот сколько, кто нибудь может сказать? Или это можно получить только экспериментально, поставить MS-DOS 6.22 на современный многоядерный компьютер и попытаться считывать сигнал с любого аппаратного прерывания (lpt, com) - хотя на современном компьютере эти порты можно найти с большим трудом. Или же мои рассуждения не верны и я в чем то ошибаюсь, и аппаратное прерывание работает как то иначе?
Да, еще - гуглом пользоваться умею, и по форуму искал "аппаратное прерывание" ответа на свои вопросы пока не нашел.

Решение задачи: «Что такое аппаратное прерывание?»

textual
Листинг программы
#include <bios.h>
....
bioscom(_COM_STATUS, 0, port_number); /*вернет статус порта используя int 14h*/

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы