Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СППО-Вопросы к экзамену-2014 (Восстановлен).doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
1.16 Mб
Скачать
  1. Понятие прерывания, классификация прерываний. Примеры (Intel).

Понятие прерывания. Прерывание – это прекращение выполнения текущей последовательности команд (то есть последовательности команд активной программы) вследствие некоторого события.

Классификация Прерываний. В зависимости от причин Прерываний: внешние (асинхронные) по отношению к активной программе, внутренние - связаны с выполнением активной программы: делятся на несколько групп 1. Добровольное Прерывание программы (обращение к системным функциям, к ОС за ресурсами, специальная команда INT [interrupt]); 2. Прерывания, связанные с невозможностью выполнения ЦП выбранной команды (например, деление на ноль, передано управление на данные, изменение кода программы вследствие переполнения массива, обращение по несуществующему адресу). Такие Прерывания называются исключениями, или исключительными ситуациями (ИС). ИС: а) Нарушение, отказ – исключение, которые распознается до начала выполнения команды, вызвавшей это исключение, например, обращение к незагруженной странице, выход за установленный предел сегмента, нарушение правил проверки привилегий. При этом возможен рестарт выполнения команды, вызвавшей исключение; б) Ловушка – распознается в ходе выполнения команды. Выполнение команды начато, но процессор не может получить нормальный результат. Например, деление на 0 – в некоторых процессорах а), в некоторых б); переполнение при умножении – результат не вмещается в разрядную сетку. Рестарт команды не выполняется, можно возобновить выполнение со следующей команды; в) Авария, сбой - серьезная ошибка, выход из программы, прекращение выполнения программы.

Программа не может продолжить выполнение (процессор не успевает запомнить условия возникновения ошибки, восстановить контекст нельзя). Например, аппаратные ошибки (технические неисправности), несовместимые или недопустимые значения в системных таблицах, т.е. причины, неизбежно ведущие к прекращению процесса (программы); используются для фиксации фатальных ошибок. Классификация Прерываний может быть более сложной. Это определяется характеристиками аппаратуры и СПО.

  1. Общая схема обработки прерываний, программно-аппаратная реализация, аппаратная поддержка механизма прерываний в Intel.

Общая схема обработки прерываний и аппаратная поддержка механизма прерываний в Intel: В любой современной ВС обработка Прерываний является программно-аппаратной. Шаги: 1) Генерация Прерывания, его распознавание, фиксация. Сначала процессор идентифицирует источник Прерывания. Всем потенциальным источникам Прерываний назначается номера (коды, векторы) от 0 до 255. Полученный процессором вектор позволяет ему выбрать соответствующий обработчик. Для внешних Прерываний запрос на Прерывание генерирует внешняя по отношению к процессору схема – это прерывание от внешнего устройства. Внешние источники Прерываний выдают свои запросы на Прерывания не напрямую процессору, а через специальную схему, которых называется контроллером Прерываний (КП). Функция этой схемы – разгрузить процессор. КП при нескольких одновременных запросах на Прерывания от нескольких источников определяет самый приоритетный, то есть самое важное Прерывание. Он идентифицирует прерывание, определяет его вектор (в Intel 8 бит). Часть кодов резервируется за самим процессором для его внутренних прерываний. Также фирма Intel зарезервировала часть векторов для возможных расширений, остальные находятся в распоряжении программиста. В механизме обработки прерываний допускается каскадное соединение нескольких КП. Прерывания распознаются, фиксируются процессором всегда на границе выполнения команд (до начала или после завершения). Перед выполнением команды процессор проверяет вход на наличие прерываний. Можно запретить процедуру реагировать на прерывания, которые запрашивается через вход inter. Для этого используется специальный флажок IF [interrupt flag]. Если флажок установлен, процессор может разрешить КП передать код прерывания по шине данных. Можно запретить не все прерывания, а выборочно – замаскировать некоторые виды прерываний. КП являются программируемыми, их можно настраивать, в частности, можно задать маску, которые запретит прерывания от одного или нескольких внешних источников. Внутренние прерывания процессора запретить нельзя, они не маскируются. Есть внешние прерывания, запросы на которые передаются на вход специальных немаскируемых прерываний процессора NMI (not mask interrupt). Прерывания могут быть вложенными, т.е. могут возникать при выполнении программы обработки прерывания. Получится цепочка, в которые реализуется дисциплина LIFO.Некоторые обработчики прерываний могут мешать друг другу. Программисты обработчиков должны это учитывать. Самое простое – разработчик может запретить мешающие этому обработчику прерывания; 2) Запоминание контекста на момент прерывания. Минимальный контекст запоминается процессором автоматически – точка возврата из прерывания и регистр флагов. В реальном режиме Intel к какой команде возврат зависит от типа ИС. В защищенном режиме контекст может быть более содержательным. Может запоминаться информация об ошибке (код). Содержание контекста зависит от типа прерывания (например, для страничной ошибки – адрес, при обращении по которым ошибка возникла). В защищенном режиме обработка прерывания может быть реализована отдельными задачами. Аппаратно сохраняется в TSS (task status segment); 3) Поиск обработчика прерываний. Информация об обработчиках прерываний хранится в специальных таблицах. В реальном режиме таблицы векторов прерываний хранятся по нулевому адресу. Каждый элемент таблицы – точка входа в процедуру обработки прерывания. В таблице 256 элементов. Каждая строка 4 байта: сегмент и смещение. С шины данных процедур снимает код прерывания – это номер элемента в таблице. В защищенном режиме для подключения обработчиков прерываний используется таблица IDT (interrupt descriptor table). Таблица IDT содержит системные дескрипторы – шлюзы 3-х типов: шлюзы прерываний (автоматически сбрасывается IF), шлюзы ловушек (это другие ловушки), шлюзы задач (не нужно заботиться о сохранении контекста). {шаги 1, 2, 3 – аппаратно}; 4) Обработка (программная часть); 5) Возобновление выполнения программы (IRET – восстанавливает еще и регистр флагов в отличие от RET). {В некоторых системах 3 – программно}