Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учеб Пособ_Гончаровский.doc
Скачиваний:
1316
Добавлен:
29.03.2015
Размер:
3.65 Mб
Скачать

1. 2.3.4. Защита памяти

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

1. 2. 4. Модель прерываний

Прерывания – это изменения в потоке управления, вызванные какими-либо событиями. Эти события могут быть внешними по отношению к процессору (инициируются устройствами ввода-вывода) - асинхронные прерывания или вызваны результатами выполнения команд – синхронные прерывания (системные прерывания, исключения или ловушки). Прерывание останавливает работу программы и передает управление не содержащейся в явном виде в программе подпрограмме обработки прерывания (ISR – Interrupt Serves Routine или interrupt handler – обработчик прерывания) для выполнения особых действий. Адрес первой команды ISR определяется вектором прерывания, сопоставленным тому или иному прерыванию. После завершения ISR управление передается прерванной программе. В случае асинхронного прерывания программа должна продолжить процесс в том же самом состоянии, в котором находилась, когда произошло прерывание. Соответствующую ISR называют прозрачной.

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

Наиболее распространенные условия, которые могут вызвать исключения, это переполнение и исчезновение значащих разрядов при операциях с плавающей запятой, переполнение при операциях с целыми числами, нарушения защиты памяти, неопределяемый код операций, переполнение стека, обращение к несуществующим или нечетным адресам MM, деление на 0. К исключениям относят также и прерывания.

Физический интерфейс простой системы прерываний может быть представлен единственной линией IRQ (Interrupt Request – запрос прерывания). Высокий уровень напряжения на линии IRQ, например, воспринимается как запрос на прерывание. На линию IRQ могут быть мультиплексированы запросы от нескольких источников. Однако в этом случае после принятия общего запроса к обслуживанию возникает задача идентификации источника, выставившего запрос, и передачи управления на соответствующую подпрограмму ISR. Эта задача решается только программным методом с помощью специальной процедуры, называемой полингом (polling). Функция полинга состоит в последовательном опросе состояния всех устройств (чтение регистров состояния) для выявления готовности к обслуживанию.

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

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

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

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

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

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