Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы и ответы нах / Arkhitektura_kompyutera_1.docx
Скачиваний:
22
Добавлен:
19.03.2015
Размер:
68.1 Кб
Скачать
  1. Аппаратные и программные прерывания. Адресное пространство и смещение.

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

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

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

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

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

Все прерывания в компьютере делятся на аппаратные, программные и исключения. Аппаратные прерывания могут быть маскируемыми и немаскируемыми. Маскируемые прерывания могут быть запрещены установкой флага IF, немаскируемые прерывания не могут быть запрещены и возникают при сбоях и ошибках аппаратуры (например, ошибка паритета памяти). Аппаратные прерывания - это запросы от периферийных устройств на обработку данных. Программные прерывания - это, как правило, вызов каких-либо функций DOS или BIOS, а также вызов пользовательских функций. Исключения возникают при возникновении какой-либо критической ошибки (например, деление на 0, отсутствие сопроцессора и т.д.) или при пошаговом выполнении программы (трассировка). Каждому прерыванию сопоставляется некоторая программа - обработчик прерывания, которая выполняет те или иные действия при возникновении прерывания. Для аппаратных прерываний обработчики, помимо всего прочего, выполняют управление аппаратурой. Обработчики программных прерываний обычно выполняют некоторые функции, в зависимости от входных параметров, заданных в регистрах, и могут возвращать результаты в регистрах или иным образом. Обработчики исключений выполняют специфические задачи, зависящие от конкретного случая (например, обработчик прерывания "деление на 0" обычно выдаёт сообщение об ошибке на экран). Для привязки каждого прерывания к его обработчику существует специальная таблица - так называемая таблица векторов прерываний, в которой для каждого прерывания хранится адрес обработчика в формате сегмент:смещение. Таблица располагается в памяти по абсолютному адресу 0x00000000 и собержит 256 ячеек - столько прерываний может быть в компьютере IBM PC. Сюда включены аппаратные и программные прерывания, а также исключения. Размер таблицы - 1024 байта, а размер ячейки - 4 байта (2 байта на сегмент и 2 на смещение). Некоторые ячейки в таблице векторов прерываний зарезервированы и не должны использоваться. Некоторые являются свободными и предназначены для установки пользовательских обработчиков.

Программное прерывание - синхронное прерывание, которое может осуществить программа путем выполнения команды INT. MS-DOS использует для взаимодействия со своими модулями и прикладными программами прерывания от 20Н до 3FH. (Например, доступ к диспетчеру функций MS-DOS осуществляется выполнением Int 21Н.) Программы BIOS, хранящиеся в ПЗУ, и прикладные программы IBM PC используют другие прерывания, с большими или меньшими номерами. Это распределение номеров прерываний условно и никаким образом не закреплено аппаратно. Синхронные прерывания происходят не в результате внешних событий, а при выполнении команд процессора. Например, синхронное прерывание происходит при попытке выполнить деления на ноль.

Соседние файлы в папке Вопросы и ответы нах