Тема 3.7 Взаимосвязь с периферийными устройствами
INTERRUPTS и IRQ.
В предыдущих главах речь уже шла о таблице векторов прерываний, но не путайте их с аппаратными прерываниями, о которых далее пойдет речь. Это программные прерывания, которые, в первую очередь, предоставляются операционной системой.
В самом простом случае понятие Interrupt обозначает прерывание последней выполняющейся программы. Принцип простой: CPU извещает через специальные линии (INT-линии), что один из элементов должен выполнить какую-то «важную работу», при этом речь может идти, например, о том, что нажата клавиша клавиатуры. Реакция на эти действия должна быть быстрой, и поэтому CPU прерывает работу выполняемого программного обеспечения, отмечая место, в котором остановилось выполнение программы, и переключается на устройство, которое вызвало прерывание. Этот процесс управляется обоими контроллерами прерываний (Interrupt Controllers), которые установлены в указанном ранее контроллере периферии 82C206.
Начиная с компьютера, имеющего CPU 80286, стандартно для PC предусмотрено 16 линий прерываний, часть которых резервируется системой, а часть может быть предоставлена для дополнительного оборудования, необходимого пользователю. Стандартное распределение линий прерываний и адресов портов ввода/вывода для основных компонентов PC приведено в таблицах 3.7.1. и 3.7.2.
Таблица 3.7.1. Стандартное распределение аппаратных прерываний
IRQ | Назначение |
прерывание от таймера | |
прерывание от клавиатуры | |
связь со вторым контроллером прерывания (каскадное прерывание) | |
COM2, COM4 | |
COM1, COM3 | |
LPT2 | |
контроллер дисковода | |
LPT1 | |
текущее время | |
свободен | |
свободен | |
свободен | |
свободен | |
сопроцессор | |
контроллер винчестера | |
свободен |
Таблица 3.7.2. Стандартное распределение адресов ввода/вывода
Диапазон адреса | Назначение |
000 - 01F | первый контроллер DMA |
020 - 03F | первый контроллер прерываний |
040 – 05F | таймер |
060 – 06F | контроллер клавиатуры |
070 – 07F | текущее время |
080 – 09F | регистр страниц DMA |
0A0 – 0BF | второй контроллер прерывания |
0C0 – 0DF | второй контроллер DMA |
0F0 – 0FF | сопроцессор |
100 – 1EF | свободен |
1F0 – 1F8 | контроллер винчестера |
1F9 – 1FF | свободен |
200 – 20F | игровой пор (джойстик) |
210 – 217 | свободен |
220 – 24F | свободен |
250 – 277 | свободен |
278 – 27F | LPT2 |
280 – 2EF | свободен |
2F8 – 2FF | COM2 |
300 – 31F | свободен |
330 – 35F | свободен |
360 – 36F | сетевая карта |
370 – 377 | свободен |
378 – 37F | LPT1 |
380 – 38F | SDLC 2 (синхронное управление передачей данных 2) |
390 – 39F | свободен |
3A0 – 3AF | SDLC 1 (синхронное управление передачей данных 1) |
3B0 – 3BF | монохромная графическая карта, параллельный интерфейс (IBM PS/2) |
3C0 – 3CF | графическая карта EGA |
3D0 – 3DF | графическая карта CGA |
3E0 – 3EF | свободен |
3F0 – 3F7 | контроллер дисковода |
3F8 – 3FF | COM1 |
Однако, к сожалению, на практике не все так однозначно. Стандартные адреса портов и прерывания используются так, как было описано, не всеми изготовителями аппаратного обеспечения. К счастью, вы можете самостоятельно сконфигурировать плату расширения так, что это не приведет к конфликту между двумя прерываниями или даже адресами портов. Но такое разделение прерываний всегда зависит от имеющихся устройств. Может случиться, что мышь, установленная в первый последовательный порт (COM1), и модем, коммутируемый в третий порт (COM3), будут использовать одинаковые прерывания, что приведет к абсолютному хаосу данных для обоих устройств.
В данном курсе будут рассмотрены аппаратные прерывания. Выполнение аппаратных прерываний ничем не отличается от выполнения программных прерываний, отличие заключается в источнике прерывания.
Назначение прерывания заключается в приостановке выполнения текущей программы, вызова и выполнение программы обработки данного прерывания.
Аппаратные прерывания делятся на маскируемые и не маскируемые прерывания.
Маскируемые прерывания это такие прерывания, которые в процессе работы ЭВМ, выполнения программ можно запретить (замаскировать). К таким прерываниям относятся все прерывания от внешних устройств.
Немаскируемые прерывания это такие прерывания, невыполнение которых может привести к сбою системы. Примером может служить прерывание на регенерацию динамической памяти (DRAM), если её не выполнить, то данные в памяти обнуляться и система рухнет.
В CPU приходят два сигнала : MNI – немаскируемые прерывание и INTR – запрос на маскируемое прерывание. Современные микросхемы поддерживают алгоритм работы такой, какой был установлен для отдельных контроллеров 8259 или отечественный аналог 1810ВН59 – программируемый контроллер прерываний ПКП. В дальнейшем будем рассматривать отдельные контроллеры.
Дата добавления: 2017-06-13; просмотров: 1167;