Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС / Тема_2.ppt
Скачиваний:
202
Добавлен:
11.04.2015
Размер:
3.19 Mб
Скачать

2.7. Аппаратно-программные средства поддержки мультипрограммирования

2.7.1. Системы прерываний

Операционные системы имеют специальные модули для работы с прерываниями - обработчики прерываний, или процедуры обслуживания прерываний (Interrupt Service Routine, ISR).

Аппаратные прерывания обрабатываются драйверами соответствующих внешних устройств, исключения - специальными модулями ядра, а

программные прерывания - процедурами ОС, обслуживающими системные вызовы.

171

Операционные системы

2.7. Аппаратно-программные средства поддержки мультипрограммирования

2.7.1. Системы прерываний

Кроме этих моделей в ОС может быть

диспетчер прерываний, координирующий работу отдельных обработчиков прерываний.

Существуют два основных способа, с помощью которых шины выполняют прерывания: векторный (vectored) и опрашиваемый (polled).

В обоих случаях процессору предоставляется информация об уровне приоритета прерывания на шине подключения внешних устройств.

172

Операционные системы

2.7. Аппаратно-программные средства поддержки мультипрограммирования

2.7.1.Системы прерываний

Вслучае векторных прерываний в процессор передается информация о начальном адресе программы обработки прерываний - обработчика прерывания.

При использовании опрашиваемых прерываний

процессор получает от запросившего прерывания устройства только информацию об уровне приоритета прерывания.

Скаждым уровнем может быть связано несколько устройств и соответственно несколько

обработчиков прерываний.

173

Операционные системы

2.7. Аппаратно-программные средства поддержки мультипрограммирования

2.7.1.Системы прерываний

Вэтом случае при возникновении прерывания процессор вызывает поочередно всех обработчиков прерываний данного уровня приоритета, пока один из обработчиков не подтвердит, что прерывание прошло от обслуживаемого им устройства.

Возможен комбинированный подход, сочетающий векторный и опрашиваемый типы

прерываний. Такой подход реализован в ПК на основе

процессоров Intel Pentium.

174

Операционные системы

2.7. Аппаратно-программные средства поддержки

 

мультипрограммирования

 

2.7.1. Системы прерываний

 

Вектор прерываний в процессор Pentium

поставляет

контроллер

прерываний,

который

отображает поступающий от шины сигнал IRQ

(Interrupt Request) на определенный номер вектора.

Вектор прерываний представляет собой число,

указывающее на одну из 256 программ обработки

прерываний, адреса которых хранятся в таблице

обработчиков прерываний.

 

 

В том случае, когда к каждой линии IRQ

подключается только одно устройство, процедура

прерываний работает как чисто векторная.

 

 

Операционные системы

175

 

 

2.7. Аппаратно-программные средства поддержки мультипрограммирования

2.7.1. Системы прерываний

Однако при совместном использовании одного уровня IRQ несколькими устройствами обработка прерываний реализуется по схеме опрашиваемых прерываний, т. е. в данном случае необходимо выполнить опрос всех устройств, подключенных к данному уровню IRQ (Interrupt Request).

176

Операционные системы

2.7. Аппаратно-программные средства поддержки мультипрограммирования

2.7.1. Системы прерываний

Обычно в ОС поддерживается механизм приоритезации и маскирование прерываний.

Каждый класс прерываний имеет свой уровень приоритета.

Приоритеты могут обслуживаться как

относительные и как абсолютные.

Маскирование позволяет запретить прерывания любого приоритета на некоторый промежуток времени.

177

Операционные системы

Последовательность действий при обработке прерываний

1.Первичное аппаратное распознавание типа прерывание. Если прерывания запрещены, продолжается текущая программа. В противном случае вызывается диспетчер прерываний и в зависимости от поступившей в процессор информации (вектор прерывания, приоритет и др.) производится вызов процедуры обработки прерывания.

2.Сохраняется некоторая часть контекста прерванного потока, которая позволит возобновить его исполнение после обработки прерывания (обычно слово состояния процессора – регистр EFLAGS в Pentium, регистры общего назначения). Может быть сохранен и полный контекст, если ОС обслуживает прерывание со сменой процесса.

3.В счетчик команд загружается адрес процедуры обработки прерывания и устанавливается новое PSW, которое определяет привилегированный режим работы процессора при обработке прерывания.

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

5.После обработки прерывания ядром операционной системы, прерванный контекст восстанавливается (частично аппаратно – PSW, содержимое счетчика команд, частично

программно – извлечение данных из стека), снимается обработка прерываний данного типа и работа потока возобновляется с прерванного места.

178

Операционные системы

2.7.2. Системные вызовы

Системный вызов позволяет приложению обратиться к ОС с просьбой выполнить то или иное действие, оформленное как процедура кодового сегмента ОС.

Реализация системных вызовов должна удовлетворять следующим требованиям: o обеспечивать переключение в привилегированный режим;

o обладать высокой скоростью вызова процедур ОС;

o обеспечивать по возможности единообразное обращение к системным вызовам для всех аппаратных платформ, на которых работает ОС;

o допускать простое расширение системных вызовов;

o обеспечивать контроль со стороны ОС за корректным использованием системных вызовов.

Возможные схемы обслуживания системных вызовов:

1. Децентрализованная –за каждым системным вызовом закреплен свой вектор прерываний. Достоинство – высокая скорость обработки системных вызовов, недостаток – разрастание таблицы векторов прерываний.

2. Централизованная – с помощью диспетчера системных вызовов. При любом системном вызове приложение выполняет программное прерывание с определенным и

единственным номером.

 

Операционные системы

179

 

С

 

Таблица

и

 

с

в

прерываний

т

ы

системы

е

з

 

м

 

о

 

н

 

ы

в

 

йАдрес диспетчера

 

 

системных

Вектор

вызовов

80h

 

Linux

 

RQ=21h

 

INT 2Eh

Pentium

Виртуальное адресное

пространство

Диспетчер

системных вызовов

Процедура обработки

системного вызова 21h

Процедура обработки

системного вызова 22h

Процедура обработки

системного вызова 23h

Адрес процедуры 21h

Адрес процедуры 22h

Адрес процедуры 23h

Централизованная схема обработки системных вызовов

180

Операционные системы