<<
>>

Перезапуск команды

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

Чтобы выявить природу данной проблемы в ее наихудшем виде, представим себе центральный процессор, имеющий двухадресные команды, например Motorola 680x0, который широко используется во встроенных системах. Возьмем, к примеру, показанную на рис. 3.25 команду из 6 байт

MOV.L #6(A1),2(A0)

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

На рис.

3.25 показана команда, начинающаяся по адресу 1000, которая осуществляет три обращения к памяти: к слову самой команды и к двум смещениям на операнды.

В зависимости от того, какое из этих трех обращений вызвало ошибку страницы, на момент возникновения ошибки счетчик команд может иметь значение 1000, 1002 или 1004. Зачастую операционная система не может однозначно определить, где начинается команда. Если на момент ошибки счетчик команд имеет значение 1002, операционной системе невозможно сообщить, является ли слово в ячейке 1002 адресом памяти, связанным с командой в ячейке 1000 (то есть местом, где находится операнд), или же кодом операции, принадлежащим команде.

Дело может принять еще более печальный оборот.

Некоторые режимы адресации процессоров 680x0 используют автоинкремент, значит, может проявиться побочный эффект от команды, которая должна увеличить значение одного или нескольких регистров. Команды, использующие автоинкрементный режим, также могут вызвать ошибку. В зависимости от особенностей микрокода инкремент может быть произведен до обращения к памяти, и в таком случае операционная система перед перезапуском команды должна программным способом уменьшить значение регистра. Или же автоинкремент может быть осуществлен после обращения к памяти, в этом случае на момент передачи управления он не будет выполнен и со стороны операционной системы не должно быть никаких обратных действий. Существует также режим автодекремента, вызывающий сходные проблемы. Точные данные о том, проводится или не проводится автоинкремент или автодекремент перед соответствующим обращением к памяти, могут изменяться от команды к команде и от одной модели центрального процессора к другой.

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

3.6.4.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Перезапуск команды:

  1. Определение команды.
  2. § 4.5. Деятельность команд в организации
  3. Признаки команды.
  4. Пример настройки и реабилитации в футбольной команде
  5. Работа с другими командами
  6. Четыре шага по созданию эффективной команды
  7. ШЕСТЬ СТУПЕНЕЙ НА ПУТИ СОЗДАНИЯ КОМАНДЫ.
  8. Кто становится лидером команды
  9. Создание деловой команды «Вероятно, я не лучший советчик в этом вопросе».
  10. Эд САЛЛИВАН. ВРЕМЯ — ДЕНЬГИ Создание команды разработчиков, программного обеспечения, 2001
  11. Проведение интервью
  12. Алистэр Коуберн. Каждому проекту своя методология, 1999
  13. ESTP и ESFP Экстраверты-сенсорики
  14. Прерывание обвинений:
  15. Разговор с футбольным тренером.
  16. Разговор с футбольным тренером.
  17. 1.6.1. Бейсбольный гений
  18. Г л а в а 19 НАРУШЕНИЕ СЦЕНАРИЯ
  19. В чем задание
  20. Правило краткости и ясности