Понятия прерывания. Система прерываний. Виды прерываний

Система прерываний (Interrupt, Int) – совокупность аппаратных и программных средств по обработке прерываний.

Прерывание (Int) – возникает в МП при возникновении какой-либо ситуации, требующей реакции ОС. Каждое прерывание идентифицируется своим номером и каждое из них обрабатывается специальной программой (драйвером прерываний). Различают аппаратные и программные прерывания.

00h - адрес обработчика прерываний

01h вектор прерываний 0000:0000

02h

...

09h

С каждым номером прерывания связана программа обработки данного прерывания, адрес первой команды обработчика – вектора прерываний – хранится в таблице векторов прерываний (IDT – Interrupt Description Table – 1 kb). Под каждый адрес отводится 4 байта: 0000:0004 – 0000:0008 и того всего может быть предусмотрено 256 прерываний.

Прерывания могут быть маскируемыми и немаскируемыми (выполняются всегда). В PSW имеются разряды, в которые можно занести код маски системы, при этом могут быть проигнорированы некоторые ситуации, которые бы вызвали прерывание.

Описание схемы обработки прерываний.

1) Если при выполнении очередной команды МП встретилась команда, например, READ(fp, х) - читать из файла – то возникнет прерывание. В СТЕК записывается адрес команды, которую МП должен выполнить следующей, содержимое текущего регистра PSW, а также адрес переменной (x) и указатель на файл fp из которого должны быть прочитаны данные. Затем оператору READ выставляется прерывание с определенным номером. По этому номеру должен быть подключен обработчик системного вызова.

2) МП обращается в таблицу векторов прерываний и в соответствии с номером прерывания (умноженная на 4 байта) находит соответствующий вектор этого прерывания – адрес первой команды обработчика

3) С помощью специальной программы обслуживания прерывания ISR, МП переходит в режим ядра и обращается к системному обработчику данного прерывания драйвера устройства. Данная программа из Стека считывает всю необходимую информацию для выполнения указанной операции считывания из файла.

4) Последней командой любого обработчика прерываний является команда IRET (возврат). По данной команде содержимое Стека последовательно переписывается в регистры МП, т.е. восстанавливается содержимое PSW и счетчика адреса команды, РС на прерванной команде.

5) После восстановления содержимого регистров МП продолжается обычный ход выполнения программы пользователя, при этом МП опять переходит в режим пользователя.

Обычно МП может одновременно иметь несколько прерываний: выполнение программы, сигнал от ПУ и т.д. В этом случае МП выбирает более приоритетное прерывание, а остальное блокирует на некоторое время.

Классы прерываний

1) Программное прерывание - генерируется в результате выполнения команд. Такими ситуациями могут быть – арифметическое переполнение регистров, деление на 0, выполнение некорректной команды, ссылка на область памяти, доступ к которой пользователю запрещен.

2) Прерывание по таймеру - генерируется таймером МП. Данное прерывание позволяет ОС выполнять некоторые свои функции периодически через заданные промежутки времени.

3) Прерывание ввода-вывода - генерируется контроллером ввода-вывода. Сигнализирует о нормальном завершении операции или о наличии ошибок.

4) Аппаратное прерывание - генерируется при возникновении аварийных ситуаций – падение напряжения в сети, отсутствие четности в памяти.

Если нет аварийной ситуации, то более приоритетными являются программные прерывания, затем прерывания по таймеру или от другого ПК, менее приоритетные прерывания ввода-вывода.

При обработке прерываний возможно два подхода:

1. при получении нескольких прерываний обрабатывать текущее, а остальное запретить, при этом МП может и должен игнорировать любой новый сигнал прерывания.

Все прерывания обрабатываются в строго последовательном порядке.

2. при втором подходе учитывается приоритет прерывания, что позволяет приостановить обработку прерывания с более низким приоритетом (например, устройству ввода-вывода принтера, диску и коммуникационной линии присвоены приоритеты 2, 4, 5)

Если в некоторый момент времени МП, обрабатывая прерывания от принтера, получил сигнал от сканера, то МП приступит к его обработке, при этом вся информация о состоянии принтера будет сохранена до окончания обработки текущего прерывания. Этим занимается программа ISR.

Для поддержки аппаратных прерываний имеется контроллер прерываний – микросхема – IRQ, которая обеспечивает связь с помощью 15 каналов прерываний. Номер прерывания, который присваивается каждому каналу прерываний, определяет ту программу (системный обработчик), которой необходимо передать управление после того, как МП принял сигнал прерывания. Таким образом, с помощью системы прерывания обеспечивается выполнение всех операций ввода-вывода путем обращения ОС к драйверу соответствующего ПУ.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: