Точное исключение - PullRequest
       8

Точное исключение

0 голосов
/ 29 января 2019

Я просматривал книгу «Проектирование и внедрение операционной системы FreeBSD» и натолкнулся на следующее:

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

Я не мог понять, что делает

модификация или побочные эффекты

см. В отрывке.Кто-нибудь может уточнить?

1 Ответ

0 голосов
/ 17 августа 2019

Это описание из книги FreeBSD очень ориентировано на ОС.Я даже не согласен с ее определением, Эта возможность перезапустить инструкцию называется точным исключением .Вы не перезапускаете инструкцию после исключения сбоя питания.Поэтому вместо того, чтобы попытаться выяснить, что имел в виду Мак-Кьюсик, я предложу пойти в другое место для лучшего описания исключений.

Кстати, я предпочитаю определение Смита:

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

https://lagunita.stanford.edu/c4x/Engineering/CS316/asset/smith.precise_exceptions.pdf

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

Несмотря на то, что кажется грубымдетали системы, это довольно высокий уровень.В нем ничего не говорится о том, что делает оборудование, и поэтому описание FreeBSD очень короткое.

Чтобы по-настоящему понять точные исключения , вам необходимо прочитать об этом в контекстеконвейерная обработка, вышедшая из строя, суперскалярная ... в книге по компьютерной архитектуре.Я бы порекомендовал Компьютерная архитектура A Количественный подход 6-е изд.Есть раздел Работа с исключениями p C-38, который представляет таксономию различных типов исключений.Описание FreeBSD описывает только некоторые исключения.Затем выясняется, как каждый тип исключения обрабатывается конвейером.

Кроме того, Интерфейс программирования Linux имеет 3 длинных главы на интерфейсе сигналов POSIX.Я знаю, что это не FreeBSD, но он охватывает то, что приложение увидит, когда, например, будет принято исключение с плавающей запятой и сигнал SIGFPE будет отправлен процессу.

...