- •Глава 6.Мультипрограммирование на основе прерываний .
- •Назначение и типы прерываний .
- •Механизм прерываний
- •Программные прерывания .
- •Диспетчеризация и приоритезация прерываний в ос .
- •Функции централизованного диспетчера прерываний на примере Windows nt. Прерывания на аппаратном уровне.
- •Процедуры обработки прерываний и текущий процесс .
- •Системные вызовы .
- •Принципы обработки прерываний в ос Unix .
Механизм прерываний
Механизм прерываний поддерживается аппаратными средствами компьютера и программными средствами операционной системы . Аппаратная поддержка прерываний имеет свои особенности , зависящие от типа процессора и других аппаратных компонентов, передающих сигнал запроса прерывания от внешнего устройства к процессору (таких как котроллер внешнего устройства , шины подключения внешних устройств , контроллер прерываний, являющийся посредником между сигналами шины и сигналами процессора ) . Особенности аппаратной реализации прерываний оказывают влияние на средства программной поддержки прерываний, работающие в составе ОС.
Существует два основных способа, с помощью которых шины выполняют прерывания : векторный (vectored) и опрашиваемый (polled). В обоих способах процессору предоставляется информация об уровне приоритета прерываний на шине подключения внешних устройств . В случае векторных прерываний в процессор передается также информация о начальном адресе программы обработки возникшего прерывания – обработчика прерываний .
Устройствам , которое используют векторные прерывания , назначается вектор прерываний . Он представляет собой электрический сигнал , выставляемый на соответствующие шины процессора и несущий в себе информацию об определенном , закрепленном за данным устройством номере , который идентифицирует соответствующий обработчик прерываний . Этот вектор может быть фиксированным , конфигурируемым или программируемым . При получении сигнала запроса прерывания процессор выполняет специальный цикл подтверждения прерывания , в котором устройство должно идентифицировать себя . В течении этого цикла устройство отвечает , выставляя на шину вектор прерываний . Затем процессор использует этот вектор для нахождения обработчика данного прерывания .
При использовании опрашиваемых прерываний процессор получает от запросившего прерывание устройства только информацию об уровне приоритета прерывания . С каждым уровнем прерываний может быть связано несколько устройств и соответственно несколько программ – обработчиков прерываний . При возникновении прерывания процессор должен определить , какое устройство из тех , которые связаны с данным уровнем прерываний , действительно запросило прерывание .
Механизм прерывания некоторой аппаратной платформы может сочетать векторный и опрашиваемый типы прерываний . Типичным примером такой реализации является платформа персональных компьютеров на основе процессоров Intel Pentium .
Вектор прерываний , передаваемый в процессор , представляет собой целое число в диапазоне от 0 до 255 , указывающие на одну из 256 программ обработки прерываний , адреса которых хранятся в таблице обработчиков прерываний .
Механизм прерываний чаще всего поддерживает приоритезацию и маскирование прерываний .Приоритезация означает ,что все источники прерываний делятся на классы и каждому классу назначается свой уровень приоритета запроса на прерывание . Схема маскирования предполагает возможность временного маскирования прерываний любого класса независимо от уровня приоритета . Обобщенно последовательность действий аппаратных и программных средств по обработке прерывания можно описать следующим образом .
При возникновении сигнала (для аппаратных прерываний) или условий (для внутренних прерываний) прерывания происходит первичное аппаратное распознание типа прерывания .
Автоматически сохраняется некоторая часть контекста прерванного потока , которая позволяет ядру возобновить исполнение потока процесса после обработки прерывания .
Одновременно с загрузкой адреса процедуры обработки прерываний в счетчик команд может автоматически выполняться загрузка нового значения слова состояния машины .
Временно запрещаются прерывания данного типа , чтобы не образовалась очередь вложенных друг в друга потоков одной и той же процедуры . Детали выполнения этой операции зависят от особенностей аппаратной платформы , например может использоваться механизм маскирования прерываний .
После того как прерывание обработано ядром операционной системы ,прерванный контекст восстанавливается и работа потока возобновляется с прерванного места Часть контекста восстанавливается аппаратно по команде возврата из прерываний , а часть – программным способом , с помощью явных команд извлечения данных из стека . При возврате из прерывания блокировка повторных прерываний данного типа снимается .
