Операционные системы. Учебное пособие. Марапулец Ю.В. - 77 стр.

UptoLike

Составители: 

вход прерываний процессора. При этом, кроме сигнала 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