При прерывании программы минимально необходимо сохранить

При возникновении прерывания процессор сохраняет в специальных регистрах часть контекста прерванного потока инструкций для корректного восстановления после обработки прерывания (IIP – копия IP, IPSR – копия PSR, SHR0-SHR7 – копия регистров общего назначения g8-g15). Другая группа специальных регистров хранит информацию о характеристиках прерывания, необходимую для распознания и обработки прерывания (IFA, IFR, ISR, IIM, IHA).

Группа регистров (IIP, IPSR, SHR0-SHR7, IFA, IFR, ISR, IIM, IHA) используется для быстрого сохранения части машинного состояния при прерываниях, обслуживания прерывания, и восстановления исходного состояния машины при возврате из прерывания. Эта группа существует в двух экземплярах для обслуживания прерываний двух уровней приоритетности (критичности) и образует файл из 2 банков по 16 специальных регистров.

Эти регистры хранят информацию во время прерывания и используются обработчиками прерываний. Эти регистры можно читать или писать только пока PSR.ic=0 (пока обработка прерывания), иначе — Illegal Operation fault. Для этих регистров гарантированно сохраняется их содержимое только когда PSR.ic=0. Когда PSR.ic=1, процессор не сохраняет их содержимое.

Урок 14. Прерывания в компьютере

Регистр Interruption Instruction Pointer (IIP) при прерывании сохраняет копию регистра IP и указывает на место возврата при прерывании. Дополнительное поле sn указывает на номер слота в связке, с которого нужно продолжить выполнение после возврата из прерывания. Может быть 0, 1, 2. Значение 3 зарезервировано.

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

Регистр IIP
bundle address rv sn

Interruption Processor Status Register (IPSR) при прерывании сохраняет копию регистра PSR (состояния машины). Имеет тот же формат и набор полей, что и PSR. IPSR используется для восстановления состояния процессора при возврате из прерывания командой rfi (Return From Interruption).

Interruption Status Register (ISR) при некритическом (первичном) прерывании сохраняет информацию о произошедшем прерывании.

Регистр ISR
rv vector code rv ei d n a r wx
Поля регистра ISR
Поле Бит Описание
r Read exception. Если 1, то прерывание связано с чтением данных.
w Write exception. Если 1, то прерывание связано с записью данных.
x Execute exception. Если 1, то прерывание связано с выборкой инструкций (fetch).
n Non-access – (fc, fetch, probe, tpa, tak).
code Interruption Code – 16-битовый код дополнительной информации о текущем прерывании.
d Exception Deferral – этот бит устанавливается в TLB exception deferral bit (TLB.ed) для страницы кода содержащей ошибочную инструкцию. Если трансляция не существует или трансляция для кода disabled, ISR.ed=0. Если 1, то прерывание отложено.
ei Excepting Instruction – номер слота связки, на котором возникло прерывание. Для ошибок и внешних прерываний ISR.ei = IIP.sn, но не совпадает для ловушек. Для ловушек, ISR.ei определяет слот инструкции вызвавшей ловушку.

Лекция 11: Прерывания

Программные примечания: Информация в регистре ISR не полна. Системное программное обеспечение, возможно, также должно идентифицировать тип команды, которая вызвала прерывание, исследовать TLB вход, к которому обращаются данные или доступ памяти команды, чтобы полностью определить, какое исключение или исключения породило прерывание. Например, прерывание памяти данных может быть вызвано обоими исключениями нарушения защиты также как Байт, упорядочивающий исключение. Системное программное обеспечение было бы должно смотреть вне ESRBO, типа состояния PSR в IPSR и биты защиты страницы в TLB входе, к которому обращается доступ памяти, определять, действительно ли также произошло Нарушение Защиты. Биты сохраненного регистра IPSR могут быть изменены при возврате из прерывания через RFI/RFCI.

Читайте также:
Программа коррекционного воздействия на трудного ученика пример готовый

Регистр Interruption Faulting Address (IFA) при прерывании сохраняет вычисленный прерванной инструкцией целевой адрес (виртуальный, или физический если трансляция не используется).

Регистр IFA
address

Для команд загрузки, записи или управления кэш-памятью, которые породили прерывание при доступе к памяти по причине неправильного выравнивания, промаха в TLB данных/инструкций или по любой другой причине, IFA содержит ошибочный адрес данных и указывает на первый байт ошибочного операнда (произвольный адрес с байтовой гранулярностью). Для остальных команд IFA содержит адрес связки инструкций. Для ошибочных адресов инструкций, IFA хранит выровненный по 16-байтовой границе адрес связки (IFA нули) ошибочной инструкции. IFA также хранит транслируемый виртуальный адрес, когда вход трансляции вставляется в таблицу трансляции TLB (инструкций или данных).

Interruption Faulting Region (IFR) при прерывании сохраняет копию регистра региона, соответствующую ошибочному целевому виртуальному адресу. Формат регистра IFR соответствует формату регистра региона. При вставке в регистр или кэш трансляций TLB (инструкций или данных) из регистра IFR берётся идентификатор региона для новой трансляции.

Регистр IFR
rv rid size rv r w xv

Interruption Immediate (IIM) при прерывании, если PSR.ic 1, сохраняет непосредственное значение, закодированное в вызвавшей ошибку инструкции (обычно break). Иммедиата расширяется нулями до 64 бит.

Interruption Hash Address (IHA) сохраняет адрес входа в инвертированную хэш-таблицу страниц при прерываниях связанных с ошибками трансляции. Младшие 5 битов IHA всегда равны нулю, так как трансляции имеют размер 32 байта и выровнены по 32-байтовой границе. Значение сохраняемое в IHA представляет собой объединение базового адреса таблицы страниц из регистра PTA и зависящего от реализации значения хэш-функции.

Регистр IHA
address

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

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:

Источник: studopedia.ru

ПОРЯДОК ОБРАБОТКИ ПРЕРЫВАНИЙ

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

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

Обработка запросов прерываний состоит:

• из «рефлекторных» действий процессора, которые одинаковы для

всех прерываний и особых случаев и которыми программист управлять не может;

• выполнения созданного программистом обработчика.

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

Тип прерывания для программных прерываний вводится изнутри микропроцессора, например, прерывание по отсутствию страницы в памяти имеет тип 14. Для прерываний, вызываемых командой INTn, тип содержится в самой команде. Для маскируемых аппаратных прерываний тип вводится из контроллера приоритетных прерываний по шине данных. Немаскируемому прерыванию назначен тип 2.

Читайте также:
Как установить зависимость программы

Всего микропроцессор различает 256 типов прерываний. Таким образом, все они могут быть закодированы в 1 байте.

«Рефлекторные» действия микропроцессора по обработке запроса прерывания выполняются аппаратными средствами МП и включают:

  • • определение типа прерывания;
  • • сохранение контекста прерываемой программы (некоторой информации, которая позволит вернуться к прерванной программе и продолжить ее выполнение). Как минимум всегда автоматически сохраняются регистры EIP и CS, определяющие точку возврата в прерванную программу, и регистр флагов EFLAGS. Если вызов обработчика прерывания проводится с использованием шлюза задачи, то в памяти полностью сохраняется сегмент состояния TSS прерываемой задачи;
  • • определение адреса обработчика прерывания и передача управления первой команде этого обработчика.

После этого выполняется программа — обработчик прерывания, соответствующая поступившему запросу. Эта программа пишется и размещается в памяти прикладным или системным программистом. Обработчик прерывания должен завершаться командой IRET, по которой автоматически происходит переход к продолжению выполнения прерванной программы с восстановлением ее контекста.

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

Таблица векторов прерываний (рис. 7.2) располагается в самых младших адресах оперативной памяти, имеет объем 1 Кбайт и содержит 4-байтные элементы (векторы прерываний) для 256 обработчиков прерываний. Старшие 2 байта вектора загружаются в сегментный регистр команд CS, а младшие 2 байта — в регистр указателя команд IP. Обращение к элементам таблицы осуществляется по 8-разрядному коду — типу прерывания. Так как таблица всегда имеет нулевой начальный адрес и длину вектора в 4 байта, то определить адрес вектора для прерывания типа i достаточно просто — надо умножить это значение на 4.

В защищенном режиме для вызова обработчика прерывания используется таблица дескрипторов прерываний IDT. Элементами таблицы являются 8-байтные дескрипторы типа шлюз — специальные программные структуры, через которые происходит передача управления обработчику.

Обращение к IDT аналогично обращению к глобальной таблице дескрипторов, где вместо системного регистра GDTR используется регистр IDTR, который определяет размер и базовый адрес таблицы в памяти (см. рис. 2.4). Физический адрес дескриптора шлюза, находящегося в IDT, определяется как сумма базового адреса таблицы и умноженного на 8 типа прерывания (рис. 7.3).

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

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

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

Рис. 7.3. Порядок обращения к таблице дескрипторов прерываний

Содержимое регистра IDTR не сохраняется в сегментах TSS и не изменяется при переключении задачи. Программы не могут обратиться к IDT, так как единственный бит TI индикатора таблицы в селекторе сегмента обеспечивает выбор только между таблицами GDT и LDT.

Максимальный предел таблицы дескрипторов прерываний равен 256×8- 1 = 2047.

Можно определить и меньший предел, но это не рекомендуется. Если происходит обращение к дескриптору вне пределов IDT, процессор переходит в режим отключения до получения сигнала по входу NMI или сброса.

В IDT могут храниться дескрипторы только следующих типов:

  • • шлюз прерывания;
  • • шлюз задачи.

Шлюзы ловушки и прерывания сходны со шлюзом вызова, однако в нихнетполя счетчика WC (рис. 7.4). Так как прерывание и особый случай являются неожиданными событиями и не связаны с текущей программой, то в этом случае передача параметров не производится.

Читайте также:
Как пользоваться программой maverick

Формат шлюзов ловушки и прерывания

Рис. 7.4. Формат шлюзов ловушки и прерывания

Бит S = 0 в байте доступа определяет этот дескриптор как системный объект. Если поле Тип в байте доступа равно 1110, то это — шлюз прерывания, если 1111 — то шлюз ловушки.

Поле уровня привилегий дескриптора DPL, как правило, устанавливается равным 3, чтобы к обработчику прерываний могли обращаться программы с любого уровня привилегий.

Бит присутствия Р может быть равен как 0, так и 1.

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

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

Вызов обработчика через шлюз задачи обычно осуществляется при обработке аппаратных прерываний, так как такая обработка не связана с текущей выполняемой задачей. При этом возможен механизм вложенных прерываний, если прерывания в задаче разрешены. Вызов обработчика прерывания через шлюз задачи осуществляется и при обработке исключений, например, «неразрешенный TSS», когда поврежденная задача не может вызвать процедуру прерывания. Переключение задач требует примерно в 5 раз больше времени, чем вызов процедуры. Поэтому, если приоритет запроса высокий, а программа обслуживания короткая, ее оформляют в виде процедуры.

Источник: studref.com

тупизне сдать зачёт. С 1 по 16 задания. 1. Маскируемым прерыванием является

а. Интерфейс, предоставляемый операционной системой приложениям, с целью получения ими необходимого обслуживания
b. оболочка между пользователем и аппаратурой
с. Среда разработки программного обеспечения
d. Комплекс программ, распределяющий ресурсы системы

11. При прерывании программы минимально необходимо сохранить

а. Адрес следующей команды и регистр флагов
b. Адрес следующей команды, регистр флагов и контекст (содержимое внутренних регистров процесcopa)
с. Адрес следующей команды
d. Адрес следующей команды и используемые библиотеки

12.Что из перечисленного не является причиной внутреннего прерывания

а. Выполнение в процессоре деления на ноль
b. Обращение к несуществующему сегменту виртуальной памяти
с. Поступление запроса от интервального таймера
d. Поступление в процессор команды с несуществующим кодом операции

13. Назначение ОС

а. Повышение производительности вычислительной системы
b. Аутентификация и авторизация пользователей
c. разработка программного обеспечения
d. Ввод-вывод и запуск приложений

14. Таблица векторов прерываний содержит

Выберите один ответ:

а. Идентификаторы источников прерываний
b. Адреса программ обрабOTчиKOB
с. Адреса прерываемых программ
d. Указатели на источники прерываний

15. Транзитные модули ОС

Выберите один ответ:

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

16.Машинный язык это
a. Язык ассемблера
b. Правила двоичной арифметики
c. Интерфейс между пользователем и ЭВМ
d. Правила представления команд ЭВМ при двоичного алфавита

Вставьте , пропущенные правильные ответы

Источник: otvetiq.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru