Управление исключениями SLIC
Управление исключениями SLIC
Управление исключениями в SLIC заключается, в основном, в маршрутизации. Маршрутизация запускается механизмом прерываний PowerPC, когда аппаратура обнаруживает прерывание. После возникновения исключения все соответствующие компоненты SLIC получают возможность обработать его. Если исключение обработано, то процесс продолжается, как будто ничего не произошло. Если же исключение не обработано SLIC, то процесс завершается и исключение передается соответствующему обработчику исключений ILE.
Прерывания классифицируются по тому, вызваны ли они исполнением конкретной команды или каким-то другим событием в системе. В архитектуре PowerPC определено 15 типов прерываний. Пять прерываний генерируются аппаратно, а именно:
сброс системы (System Reset) — прерывание при выключении или включении системы;
машинная ошибка (Machine Check), служащая для сообщения об аппаратных сбоях;
внешнее (External) — прерывание, уведомляющее процессор о том, что некоторое событие за его пределами (например, ввод-вывод) требует внимания;
монитор производительности (Performance Monitor), при включенном мониторинге производительности уведомляющий процессор о событии, за которым ведется наблюдение;
уменьшитель (Decrementer), используемый таймерами и извещающий процессор об истечении некоторого интервала времени.
Некоторые прерывания генерируются в результате выполнения команд. Перечислим их.
Память данных (Data Storage) — это прерывание сообщает, что команда предприняла безуспешные попытки доступа к хранилищу данных. Используется для сигнализации о невозможности трансляции эффективного адреса (страничная ошибка), нарушении защиты памяти или переполнении эффективного адреса (ЕАО).
Память команд (Instruction Storage) аналогично прерыванию памяти данных, но вызывается попыткой выбрать команду для исполнения.
Ошибка прямого сохранения (Direct-Store Error) также аналогично прерыванию памяти данных, но возникает при обращении по адресу прямого сохранения (DS). Отметьте, что по этому адресу не может произойти страничная ошибка.
Выравнивание (Alignment) происходит при попытке обращения к операнду, который не выровнен на необходимую границу памяти.
Программное (Program) прерывание используется для сообщений типа попытки процессора выполнить привилегированную команду при отсутствии у пользователя соответствующих прав или попытки применить неверный код операции.
«Нет плавающей точки» (Floating-Point Unavailable) — прерывание с этим названием возникает при попытке выполнить команду с плавающей точкой, если разряд в MSR указывает, что процессор не может выполнять таких команд. Архитектура PowerPC позволяет отключать операции с плавающей точкой.
Поддержка плавающей точки (Floating-Point Assist) — это прерывание используется для программной поддержки относительно редко используемых и сложных операций с плавающей точкой.
Трассировка (Trace) — прерывание, генерируемое после успешного выполнения каждой трассируемой команды. Возможность пошаговой трассировки всех команд или переходов включается установкой разрядов в MSR.
Системный вызов (System Call) — прерывания этого типа достигаются исполнением соответствующей команды PowerPC. Подробней об этом — в следующем разделе.
Системный вызов по вектору (System Call Vectored) — тип прерывания, похожий на системный вызов. Эта команда, которая также описана в следующем разделе, аналогична команде системного вызова, но может передавать управление любой из 128 процедур.
Для обработки прерываний в SLIC предусмотрены специальные процедуры. Когда аппаратура обнаруживает прерывание, управление передается одному из обработчиков исключений первого уровня FLEH (First Level Exception Handlers). То, каким образом осуществляется аппаратная передача управления, будет рассмотрено далее. Если одна из процедур FLEH обработала исключение (в основном именно так и происходит), то управление возвращается к нормальной обработке команд.
Если исключение вызвано командой и не было обработано, то FLEH передает управление обработчику исключений второго уровня SLEH (Second Level Exception Handler). SLEH обрабатывает менее частые исключения, такие как исключение блокировки системного объекта. Он также отвечает за выделение исключений, которые не могут быть обработаны SLIC. Если необработанное исключение возникло, когда система исполняла команду, транслированную MI, то SLEH передает управление генератору исключений MI.
Если же необработанное исключение произошло при исполнении команды SLIC, то SLEH передает управление обработчику исключений третьего уровня TLEH (Third Level Exception Handler). TLEH получает управление от SLEH, от обработчика машинных ошибок (если таковая произошла при выполнении процедуры SLIC), или от любой другой процедуры SLIC, обнаружившей исключение.
Сначала TLEH вызывает обработчики исключений компонентов CSEH (Component Specific Exception Handlers), которые были установлены различными компонентами SLIC. CSEH используются для освобождения ресурсов, занятых выполнением некоторой операции, или для очистки частичных результатов неудавшейся операции, или исполнения кода, позволяющего продолжать работу при ошибке. CSEH, которые должны выполняться для данной задачи, определяются блоками CSEH, присоединенными к TDE задачи. Каждый блок CSEH содержит адрес процедуры CSEH, указатель стека и данные, необходимые этой процедуре. После выполнения всех CSEH задачи управление возвращается обратно TLEH.
Затем TLEH определяет, как быть с данным исключением. Если исключение произошло в задаче SLIC, которая не является частью какого-либо процесса MI, то задача уничтожается. Если же исключение произошло в задаче, выполняющейся как часть процесса MI, то управление передается генератору исключений MI.
Генератор исключений MI подготавливает данные для сообщения процессу, выполняет некоторые операции очистки и отправляет сообщение в пространство очередей соответствующего процесса.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
System Licensed Internal Code (SLIC) —сердце AS/400
System Licensed Internal Code (SLIC) —сердце AS/400 Часто возникает некая терминологическая путаница: что, собственно, является операционной системой AS/400? Первое, что приходит в голову — ну, конечно, это Operating System/400 (OS/400); в конце концов, иначе ее не называли бы так. И все же такой ответ
Затраты на разработк у SLIC
Затраты на разработку SLIC Создание вычислительной системы с высокоуровневым машинным интерфейсом и значительной частью ОС, расположенной под этим интерфейсом, было связано с определенными затратами. На разработку ПО пришлись основные расходы, связанные с AS/400. Давайте
Технологии ядра в SLIC
Технологии ядра в SLIC В прошлом ядро каждой ОС было уникальным, мало кто брался разрабатывать ядро отдельно от ОС. Однако в середине 80-х годов положение стало меняться. В некоторых университетах, например, в Карнеги-Меллон (Carnegie-Mellon), начали изучение возможности
Журналы SLIC
Журналы SLIC Ранее мы рассматривали ведение журналов базы данных. Базовые функции для протоколирования изменений базы данных реализованы ниже MI. Соответствующая поддержка предоставляется двумя системными объектами MI: порт журнала и область журнала. Порт журнала
Управление транзакциями в SLIC
Управление транзакциями в SLIC Ранее мы обсуждали базовые функции подтверждения и отката изменений. Эти функции поддерживаются и в MI, и в компоненте базы данных на уровне SLIC. В MI такую поддержку предоставляет системный объект блок транзакции (commit block). Он фиксирует
4 Удаленное управление
4 Удаленное управление Проблемы удаленного управления компьютером считаются прерогативой администраторов, поэтому необходимость их рассмотрения в этой книге долго оставалась под вопросом. В конце концов я решил описать методы удаленного управления по той простой
1.5.1 Управление пользователями
1.5.1 Управление пользователями Linux - Это многопользовательская система. Вы можете создать несколько учетных записей, если кто-то еще кроме вас использует данный компьютер, например, члены семьи или коллеги по работе. Конечно, можно работать и под одной учетной записью, но
7.7.5. Управление SELinux
7.7.5. Управление SELinux Для управления системой контроля доступом используется конфигуратор system-config-selinux (рис. 7.18). С помощью этого конфигуратора можно полностью настроить SELinux, но чаще всего вы будете посещать раздел Boolean, в котором задаются возможности той или иной сетевой
14.1 Управление терминалом
14.1 Управление терминалом Давайте выполним какую-нибудь командочку, например:lsb_release -a 2> /dev/null | grep -P "(?<=Codename:)(.*)"Вот что должно было получиться: Рис. 14.2: Кодовое имя вашего дистрибутива. Рис. 14.2: Кодовое имя вашего дистрибутива.Набирать такие команды с клавиатуры
22.1 Управление репозиториями
22.1 Управление репозиториями Для управления репозиториями предназначена программа «Источники приложений», находящаяся в меню Система?Администрирование. Для запуска этого приложения вам естественно понадобятся административные привилегии[89]. Кстати, в это же
Управление транзакциями
Управление транзакциями Необходимо помнить, что любое действие с базой данных происходит в рамках той или иной транзакции. Работа с InterBase основана на явном управлении транзакциями, а поскольку библиотека IBX - это обертка вокруг соответствующих функций InterBase API, то
Управление транзакциями
Управление транзакциями Фактически любые действия с данными должны происходить в контексте той или иной транзакции. Управление транзакциями в FIBPlus осуществляется при помощи компонентов класса TpFIBTransacdon. Все транзакции в FIBPlus являются "явными" (explicit) и запускаются при
ГЛАВА 04 УПРАВЛЕНИЕ
ГЛАВА 04 УПРАВЛЕНИЕ Однажды сороконожку спросили, с какой ноги она начинает движение. С тех пор она не может сдвинуться с места, мучительно размышляя над тем, с какой ноги начинать. Это старая шутка, но попробуйте задуматься: как вы управляете своей компанией? Не знаю,
Управление ключами
Управление ключами Важной проблемой всей криптографии с открытым ключом, в том числе и систем ЭЦП, является управление открытыми ключами. Необходимо обеспечить доступ любого пользователя к подлинному открытому ключу любого другого пользователя, защитить эти ключи от