Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ОС.doc
Скачиваний:
5
Добавлен:
17.09.2019
Размер:
429.57 Кб
Скачать

Вопрос 20. Прерывания. Прерывание – это действие, производимое компьютером для выполнения системных и сервисных функций во время работы основного процесса.

3 этапа: Приостановление выполнения основного процесса; Обработка прерывания; Возврат управления основному процессу;

2 вида прерываний: Аппаратное; Программное (функцию пишем сами, поддерживает система). Программные прерывания удобно использовать для организации доступа к отдельным, общим для всех программ модулям. Например, программные модули операционной системы доступны прикладным программам именно через прерывания, и нет необхо­димости при вызове этих модулей знать их текущий адрес в памяти. Прикладные программы могут сами устанавливать свои обработ­чики прерываний для их последующего использования другими программами. Для этого встраиваемые обработчики прерываний должны быть резидентными в памяти. Мы научимся создавать свои программы обработки прерываний и будем говорить об этом при обсуждении резидентных программ. Аппаратные прерывания вызываются физическими устройствами и приходят асинхронно. Эти прерывания информируют систему о событиях, связанных с работой устройств, например о том, что наконец-то завершилась печать символа на принтере и не­плохо было бы выдать следующий символ, или о том, что требуемый сектор диска уже прочитан, его содержимое доступно программе. Использование прерываний при работе с медленными внешними устройствами позволяют совместить ввод/вывод с обработкой данных в центральном процессоре и в результате повышает общую производительность системы. Некоторые прерывания (первые пять в порядке номеров) зарезервированы для использования самим центральным процессо­ром на случай каких-либо особых событий вроде попытки деления на ноль, переполнения и т.п. Иногда желательно сделать систему нечувствительной ко всем или отдельным прерываниям. Для этого используют так на­зываемое маскирование прерываний, о котором мы еще будем подробно говорить. Но некоторые прерывания замаскировать нельзя, это немаскируемые прерывания.

Заметим еще, что обработчики прерываний могут сами вызывать программные прерывания, например, для получения доступа к сер­вису BIOS или DOS (сервис BIOS также доступен через механизм программных прерываний).

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

Обработка прерывания может происходить в соответствии с тремя основными схемами.

Сначала вызывается системный обработчик, затем добавленный. Данный способ используется для дополнения систем­ной обработкой какой- либо функции.

Вопрос 21. Структура таблицы векторов прерываний.

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

Для того чтобы связать адрес обработчика прерывания с номером прерывания, используется таблица векторов прерываний, занимающая первый килобайт оперативной памяти - адреса от 0000:0000 до 0000:03FF. Таблица состоит из 256 элементов - FAR-адре­сов обработчиков прерываний. Эти элементы называются векторами прерываний. В первом слове элемента таблицы записано смеще­ние, а во втором - адрес сегмента обработчика прерывания.

Адрес подпрограммы обработчика прерываний называется вектором. Длина 4 байта. В первом слове вектора хранится со­держимое IP, во втором CS. Младшие 1024 байта памяти содержат таблицу, названную таблицей векторов прерывания. Младший байт слова всегда в памяти располагается первым.

Маскированные прерывания могут быть запрещены, внутренние и немаскированные – нет. Любая программа, которая изменяет некоторые векторы прерывания перед тем, как осуществить возврат в MS-DOS, должна переустановить первые значения этого вектора. Для того, чтобы изменить вектор прерывания, используют функции:

35h – получить вектор прерывания (прерывание

25h – установить вектор прерывания 21h)

Вызов 35h получает содержимое CS и SP. Вызов 25h в качестве параметров передается адрес обработчика.