Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Исключения



Многие процессоры используют механизм, родственный прерываниям, для обработки не только внешних, но и внутренних событий (исключительные ситуации – отсутствие страницы, ошибки доступа в процессорах с виртуальной памятью, а также некоторыми другими — ошибкой шины при доступе к не выровненным словам, заполнению и очистке регистрового окна у SPARC и т. д.). Большинство современных процессоров предоставляют исключения при неизвестном коде операции, делении на ноль, арифметическом переполнении или, например, выходе значения операнда за допустимый диапазон в таких операциях, как вычисление логарифма, квадратного корня или арксинуса.

Исключительные ситуации обрабатываются аналогично внешним прерываниям - исполнение программы останавливается, и управление передается на процедуру-обработчик, адрес которой определяется природой исключения.

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

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

Например, при наличии арифметического сопроцессора операции с пла­вающей точкой исполняются им, а при отсутствии — пакетом эмулирующих подпрограмм. Благодаря этому может обеспечиваться полная бинарная совместимость между старшими (имеющими сопроцессор) и младшими (неимеющими его) моделями одного семейства компьютеров.

Исключения, возникающие при исполнении привилегированных команд в пользовательском режиме, могут использоваться системой виртуальных машин. Работающее в виртуальной машине ядро ОС считает, что исполняется в системном режиме. На самом же деле оно работает в пользовательском режиме, а привилегированные команды (переключения режима про­цессора, настройка диспетчера памяти, команды ввода/вывода) приводят к вызову СВМ.

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





Дата публикования: 2014-11-29; Прочитано: 238 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...