Современные компьютеры загружаются в реальном или виртуальном реальном режиме? - PullRequest
2 голосов
/ 01 ноября 2019

Итак, я читал о режимах процессора и узнал, что виртуальный реальный режим позволяет приложению реального режима, например, приложению DOS, такому как программа BIOS, работать в операционной системе защищенного режима.

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

1 Ответ

5 голосов
/ 01 ноября 2019

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

Для устаревших систем (которые все еще используют BIOS, а не UEFI);прошивка должна предполагать, что загрузчик может:

  • переключиться в защищенный режим и использовать виртуальный режим 8086 (для доступа к функциям BIOS), и / или
  • переключиться между защищенным режимом иреальный режим при загрузке и / или
  • использует «нереальный режим»

Поэтому BIOS не может / не должен использовать защищенный режим (или виртуальный режим 8086) сам, потому чтоэто может помешать правильной работе загрузчика.

Разве виртуальный реальный режим не облегчает это?

Виртуальный режим 8086 («виртуальный реальный режим») являетсянемного больно поддерживать. Чтобы он работал правильно;у вас должны быть обработчики исключений (например, обработчик «ошибки общей защиты»), которые эмулируют различные привилегированные инструкции. По существу;вы получаете «CS: IP» из стека обработчика исключений, затем делаете некоторые проверки работоспособности (была ли проблема с нарушением ограничения сегмента или ...?), а затем декодируете необработанные байты в «CS: IP», чтобы выяснить, что за кодпытался сделать, а затем эмулировать каждый возможный случай, обеспечивая при этом «100% правильное» поведение для каждого отдельного случая.

Единственная разумная причина использовать режим виртуального 8086 - это когда вы хотите запускать приложения, разработанные для древнего реальногорежим ОС (например, MS-DOS) под древнюю многозадачную 32-битную ОС (например, Windows 95);и эмуляция всех привилегированных инструкций сравнительно незначительна по сравнению с огромными трудностями эмуляции всего другого оборудования (виртуальный чип PIT, контроллер виртуальной клавиатуры, виртуальная видеокарта и т. д.).

...