Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Новый документ в формате RTF (2).rtf
Скачиваний:
11
Добавлен:
26.05.2015
Размер:
873.45 Кб
Скачать

3. Виды прерываний. Система прерывания. Системные вызовы как интерфейс между прикладными программами и ос. Исключительные ситуации.

Прерывание (англ. interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается, и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код

В зависимости от источника возникновения сигнала прерывания делятся на:

асинхронные, или внешние (аппаратные) — события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание (англ. Interrupt request, IRQ);

синхронные, или внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение стека, обращение к недопустимым адресам памяти или недопустимый код операции;

программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения (firmware), драйверов и операционной системы.

Система прерывания. (Механизм прерываний)

Механизм прерываний поддерживается аппаратными и программными средствами ОС

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

При векторном типе прерывания в процессор передается также адрес обработчика прерывания

Для векторного типа схема обработки такова: электрический сигнал - запрос на подтверждение - вектор - обработчик (например, для шины VMEbus)

Для опрашиваемого схема обработки такова: сигнал - запрос на подтверждение - уровень приоритета (например, шина ISA). Каждый уровень связан с несколькими устройствами. Вызываются все обработчики данного уровня. Один опознает свое устройство. (Примеры шин: ISA, EISA, MCA, PCi, SBus)

Intel Pentium объединяет два типа. устройство выдает сигнал некоторого уровня (IRQ - Interrupt Request), а контроллер вектор. Вектор - это число 0-255

Приоритеты обслуживания могут быть: относительные (обработка прерывания не прекращается при появлении более приоритетного прерывания) и абсолютные.

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

Системные вызовы как интерфейс между прикладными программами и ОС

Операционные системы предлагают процессам, работающим в режиме пользователя, набор интерфейсов для взаимодействия с аппаратными устройствами, такими как процессор, диски или принтеры. Создание дополнительного программного слоя между приложением и аппаратной частью компьютера имеет ряд преимуществ. Во-первых, это облегчает программирование, пото- му что программисты избавлены от необходимости изучать низкоуровневые характеристики аппаратных устройств. Во-вторых, такой подход существенно повышает безопасность системы, поскольку ядро может проверить кор- ректность запроса на уровне интерфейса до выполнения этого запроса. Нако- нец, что не менее важно, подобные интерфейсы делают программы более пе- реносимыми, позволяя компилировать и корректно выполнять их в каждом ядре, предлагающем такой же набор интерфейсов. В Unix-системах большинство интерфейсов между процессами режима пользователя и аппаратными устройствами реализовано с помощью системных вызовов, направляемых ядру. В этой главе подробно рассматривается, как Linux реализует системные вызовы, передаваемые ядру пользовательскими программами.