Составители:
вход прерываний процессора. При этом, кроме сигнала INT, контроллеры передают в
процессор по линиям данных номер вектора, который образуется в контроллере путем
сложения базового номера, записанного в одном из его регистров, с номером входной
линии, по которой поступил запрос прерывания. Номера базовых векторов заносятся в
контроллеры автоматически в процессе начальной загрузки компьютера. Очевидно, что
номера векторов аппаратных прерываний однозначно связаны с номерами линий, или
уровнями IRQ, а через них - с конкретными устройствами компьютера. На рис.3.1 обо-
значены основные устройства компьютера, работающие в режиме прерываний.
Процессор, получив по линии INT сигнал прерывания, выполняет последователь-
ность стандартных действий, которую можно назвать процедурой прерывания. Смысл
процедуры прерывания заключается в том, чтобы сохранить состояние текущей (преры-
ваемой) программы и передать управление обработчику, соответствующему возникше-
му прерыванию.
Структуры систем прерывания (в зависимости от аппаратной архитектуры) могут
быть самыми разными, но все они имеют одну общую особенность - прерывание непре-
менно влечет за собой изменение порядка выполнения команд процессором.
Механизм обработки прерываний независимо от архитектуры вычислительной
системы включает следующие элементы [2]:
1. Установление факта прерывания (прием сигнала на прерывание) и идентифика-
ция прерывания (в операционных системах иногда осуществляется повторно, на
шаге 4).
2. Запоминание состояния прерванного процесса. Состояние процесса определяется
прежде всего значением счетчика команд (адресом следующей команды, кото-
рый, например, в i80x86 определяется регистрами CS и IP - указателем команды),
содержимым регистров процессора и может включать также спецификацию ре-
жима (например, режим пользовательский или привилегированный) и другую
информацию.
3. Управление аппаратно передается подпрограмме обработки прерывания. В про-
стейшем случае в счетчик команд заносится начальный адрес подпрограммы об-
работки прерываний, а в соответствующие регистры - информация из слова со-
стояния. В более развитых процессорах, например в том же i80286 и
последующих 32-битовых микропроцессорах, начиная с i80386, осуществляется
достаточно сложная процедура определения начального адреса соответствующей
подпрограммы обработки прерывания и не менее сложная процедура инициали-
зации рабочих регистров процессора.
4. Сохранение информации о прерванной программе, которую не удалось спасти на
шаге 2 с помощью действий аппаратуры. В некоторых вычислительных системах
предусматривается запоминание довольно большого объема информации о со-
стоянии прерванного процесса.
5. Обработка прерывания. Эта работа может быть выполнена той же подпрограм-
мой, которой было передано управление на шаге 3, но в ОС чаще всего она реа-
лизуется путем последующего вызова соответствующей подпрограммы.
6. Восстановление информации, относящейся к прерванному процессу (этап, об-
ратный шагу 4).
7. Возврат в прерванную программу.
Шаги 1-3 реализуются аппаратно, а шаги 4-7 - программно. На рис.3.2 показано,
что при возникновении запроса на прерывание естественный ход вычислений нарушает-
ся и управление передается программе обработки возникшего прерывания. При этом
средствами аппаратуры сохраняется (как правило, с помощью механизмов стековой па-
мяти) адрес той команды, с которой следует продолжить выполнение прерванной про-
граммы. После выполнения программы обработки прерывания управление возвращается
79
вход прерываний процессора. При этом, кроме сигнала INT, контроллеры передают в
процессор по линиям данных номер вектора, который образуется в контроллере путем
сложения базового номера, записанного в одном из его регистров, с номером входной
линии, по которой поступил запрос прерывания. Номера базовых векторов заносятся в
контроллеры автоматически в процессе начальной загрузки компьютера. Очевидно, что
номера векторов аппаратных прерываний однозначно связаны с номерами линий, или
уровнями IRQ, а через них - с конкретными устройствами компьютера. На рис.3.1 обо-
значены основные устройства компьютера, работающие в режиме прерываний.
Процессор, получив по линии INT сигнал прерывания, выполняет последователь-
ность стандартных действий, которую можно назвать процедурой прерывания. Смысл
процедуры прерывания заключается в том, чтобы сохранить состояние текущей (преры-
ваемой) программы и передать управление обработчику, соответствующему возникше-
му прерыванию.
Структуры систем прерывания (в зависимости от аппаратной архитектуры) могут
быть самыми разными, но все они имеют одну общую особенность - прерывание непре-
менно влечет за собой изменение порядка выполнения команд процессором.
Механизм обработки прерываний независимо от архитектуры вычислительной
системы включает следующие элементы [2]:
1. Установление факта прерывания (прием сигнала на прерывание) и идентифика-
ция прерывания (в операционных системах иногда осуществляется повторно, на
шаге 4).
2. Запоминание состояния прерванного процесса. Состояние процесса определяется
прежде всего значением счетчика команд (адресом следующей команды, кото-
рый, например, в i80x86 определяется регистрами CS и IP - указателем команды),
содержимым регистров процессора и может включать также спецификацию ре-
жима (например, режим пользовательский или привилегированный) и другую
информацию.
3. Управление аппаратно передается подпрограмме обработки прерывания. В про-
стейшем случае в счетчик команд заносится начальный адрес подпрограммы об-
работки прерываний, а в соответствующие регистры - информация из слова со-
стояния. В более развитых процессорах, например в том же i80286 и
последующих 32-битовых микропроцессорах, начиная с i80386, осуществляется
достаточно сложная процедура определения начального адреса соответствующей
подпрограммы обработки прерывания и не менее сложная процедура инициали-
зации рабочих регистров процессора.
4. Сохранение информации о прерванной программе, которую не удалось спасти на
шаге 2 с помощью действий аппаратуры. В некоторых вычислительных системах
предусматривается запоминание довольно большого объема информации о со-
стоянии прерванного процесса.
5. Обработка прерывания. Эта работа может быть выполнена той же подпрограм-
мой, которой было передано управление на шаге 3, но в ОС чаще всего она реа-
лизуется путем последующего вызова соответствующей подпрограммы.
6. Восстановление информации, относящейся к прерванному процессу (этап, об-
ратный шагу 4).
7. Возврат в прерванную программу.
Шаги 1-3 реализуются аппаратно, а шаги 4-7 - программно. На рис.3.2 показано,
что при возникновении запроса на прерывание естественный ход вычислений нарушает-
ся и управление передается программе обработки возникшего прерывания. При этом
средствами аппаратуры сохраняется (как правило, с помощью механизмов стековой па-
мяти) адрес той команды, с которой следует продолжить выполнение прерванной про-
граммы. После выполнения программы обработки прерывания управление возвращается
79
Страницы
- « первая
- ‹ предыдущая
- …
- 75
- 76
- 77
- 78
- 79
- …
- следующая ›
- последняя »
