Показать сообщение отдельно
Старый 23.12.2003, 17:30     # 25
CEO
Full Member
 
Аватар для CEO
 
Регистрация: 31.08.2003
Адрес: где-то между Марсом и Юпитером
Сообщения: 998

CEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собой
Все блин, я придумал как разрешить этот вопрос:
Аппаратные прерывания:
У каждой шины (PCI, ISA и т.д.) существуют определенные линии (читай – контакты), которые отвечают за прерывания, вызываемые устройствами. Номера аппаратных прерываний не прямо соответствуют адресам программных, то есть аппаратному IRQ 0 соответствует INT 8, и так далее по таблице. Зачем, спрашивается, нужны эти IRQ? Во-первых – постоянно опрашивать все устройства на предмет “а не желаете ли Вы нам что-нибудь этакое передать?” просто непозволительно с точки зрения производительности. Процессор просто утомится это делать – гораздо легче дать устройству какие-то права, и пусть оно командует. Во-вторых, сам механизм позволяет программам и процессору абсолютно наплевательски относиться ко всем выступлениям со стороны устройств.
0 (INT 08h) - системный таймер
1 (INT 09h) - контроллер клавиатуры
2 (INT 0Ah) – сопряжен с видеокартой на XT; на AT и выше используется
для каскадирования второй микросхемы контроллера прерываний
3 (INT 0Bh) – стандартный для COM2/COM4
4 (INT 0Ch) - стандартный для COM1/COM3
5 (INT 0Dh) – обычно свободен, но на XT на этом IRQ находился контроллер жесткого диска
6 (INT 0Eh) - контроллер FDD
7 (INT 0Fh) – прерывание параллельного порта (LPT), однако многими LPT-контроллерами не используется
8 (INT 70h) - часы реального времени (RTC – Real Time Clock), прерывание вызывается 18,2 раза в секунду
9 (INT 71h) – эмуляция IRQ2 (для совместимости)
10 (INT 72h) – свободен
11 (INT 73h) – свободен
12 (INT 74h) – ублажитель контроллера PS/2 мыши
13 (INT 75h) - математический сопроцессор
14 (INT 76h) – первый канал контроллера IDE HDD
15 (INT 77h) – второй канал контроллера IDE HDD

Считайте сами от 0 до 15 -- равно 16 IRQ


Для того, чтобы не загружать каждый раз процессор передачей данных от устройства к памяти, используется DMA (Direct Memory Access – прямой доступ к памяти). Передача данных ведется по так называемым каналам, которых всего семь:
0 – используется для регенерации памяти в некоторых системах
1 - свободен
2 – обслуживает контроллер FDD
3 – свободен (на XT – контроллер жесткого диска)
5 – свободен
6 - свободен
7 - свободен
Считать они не умеют: 0..7 == 8 DMA

Следует учитывать, что каналы 0-3 - восьмиразрядные, а каналы 5-7 - шестнадцатиразрядные.

Вот так.

__________________
Старые игры раздают здесь

Последний раз редактировалось CEO; 23.12.2003 в 18:22.
CEO вне форума