Реальный режим
Эта статья нуждается в дополнительных цитатах для проверки . ( ноябрь 2012 г. ) |
Часть серии о |
Режимы микропроцессора для x86 архитектуры |
---|
|
В скобках указана первая поддерживаемая платформа. |
Реальный режим , также называемый режимом реального адреса , является режимом работы всех x86 -совместимых процессоров . Режим получил свое название из-за того, что адреса в реальном режиме всегда соответствуют реальным местам в памяти. Реальный режим характеризуется 20- битным сегментированным адресным пространством памяти (что дает 1 МБ адресуемой памяти) и неограниченным прямым программным доступом ко всей адресуемой памяти, адресам ввода-вывода и периферийному оборудованию. Реальный режим не поддерживает защиту памяти, многозадачность или уровни привилегий кода.
До введения защищенного режима с выпуском 80286 реальный режим был единственным доступным режимом для процессоров x86; [1] а для обратной совместимости все процессоры x86 запускаются в реальном режиме при перезагрузке, хотя можно эмулировать реальный режим в других системах при запуске в других режимах.
История
[ редактировать ]В архитектуре 80286 появился защищенный режим , позволяющий (помимо прочего) защитить память на аппаратном уровне. Однако для использования этих новых функций потребовалась новая операционная система , специально разработанная для защищенного режима. Поскольку основная спецификация микропроцессоров x86 заключается в том, что они полностью обратно совместимы с программным обеспечением, написанным для всех чипов x86 до них, чип 286 был создан для запуска в «реальном режиме», то есть в режиме, в котором отключается новая память. функции защиты, чтобы он мог работать с операционными системами, написанными для 8086 и 8088 . По состоянию на 2018 год текущие процессоры x86 (включая процессоры x86-64 ) способны загружать операционные системы в реальном режиме и запускать программное обеспечение, написанное практически для любого предыдущего чипа x86, без эмуляции или виртуализации. В 2023 году Intel предложила исключить реальный режим из будущих процессоров в спецификации X86S .
ПК BIOS , представленный IBM, работает в реальном режиме, как и операционные системы DOS ( MS-DOS , DR-DOS и т. д.). Ранние версии Microsoft Windows работали в реальном режиме. Windows/386 позволяла в некоторой степени использовать защищенный режим, и это было более полно реализовано в Windows 3.0 , которая могла работать либо в реальном режиме, либо использовать защищенный режим, как в Windows/386. В Windows 3.0 на самом деле было несколько режимов: «реальный режим», «стандартный режим» и «расширенный режим 386»; последний требовал некоторых функций виртуализации процессора 80386 и, следовательно, не мог работать на 80286. В Windows 3.1 удалена поддержка реального режима, и это была первая массовая операционная среда, для которой требовался как минимум процессор 80286. Ни одну из этих версий нельзя было считать современной операционной системой x86, поскольку в защищенный режим они переходили только для определенных функций. Unix , Linux , OS/2 , Windows NT считаются современными ОС, поскольку они переключают ЦП в защищенный режим при запуске, никогда не возвращаются в реальный режим и постоянно предоставляют все преимущества защищенного режима. 64-битные операционные системы используют реальный режим только на этапе запуска, и ядро ОС переключает ЦП в длинный режим . [2] Примечательно, что защищенный режим 80286 значительно более примитивен, чем улучшенный защищенный режим, представленный в 80386; последний иногда называют защищенным режимом 386, и это режим, в котором работают современные 32-битные операционные системы x86. [ нужна ссылка ]
Адресная емкость
[ редактировать ]8086, 8088 и 80186 имеют 20-битную адресную шину, но необычная схема сегментированной адресации, которую Intel выбрала для этих процессоров, на самом деле создает эффективные адреса, которые могут иметь 21 значащий бит. Эта схема сдвигает 16-битный номер сегмента на четыре бита влево (образуя 20-битное число с четырьмя наименее значащими нулями) перед добавлением к нему 16-битного смещения адреса; максимальная сумма получается, когда и сегмент, и смещение равны 0xFFFF, что дает 0xFFFF0 + 0xFFFF = 0x10FFEF. В 8086, 8088 и 80186 результатом эффективного адреса, который переполняет 20 бит, является то, что адрес «перетекает» до нулевого конца диапазона адресов, т. е. он берется по модулю 2 ^ 20 (2 ^ 20 = 1048576 = 0x100000). Однако 80286 имеет 24 бита адреса и вычисляет эффективные адреса до 24 бит даже в реальном режиме. Таким образом, для сегмента 0xFFFF и смещения больше 0x000F 80286 фактически осуществит доступ к началу второго мегабайта памяти, тогда как 80186 и более ранние версии получат доступ к адресу, равному [offset]-0x10, который находится в начале второго мегабайта памяти. начало первого мегабайта. (Обратите внимание, что на 80186 и более ранних версиях первый килобайт адресного пространства, начиная с адреса 0, является постоянным, неподвижным местоположением таблицы векторов прерываний.) Таким образом, фактический объем памяти, адресуемый процессорами x86 80286 и более поздних версий в реальном режиме, составляет 1 МБ + 64 КБ – 16. Б = 1 114 096 Б.
линия А20
[ редактировать ]Некоторые программы, предшествовавшие 80286, были разработаны с учетом преимуществ циклической адресации памяти (по модулю), поэтому 80286 представлял проблему для обратной совместимости. Установка 21-й адресной линии (фактического провода логического сигнала, выходящего из чипа) на низкий логический уровень, представляющий ноль, приводит к эффекту по модулю 2 ^ 20, который соответствует арифметике адреса более ранних процессоров, но 80286 не имеет внутреннего возможность выполнять эту функцию. Когда IBM использовала 80286 в своем IBM PC/AT , они решили эту проблему, включив программно настраиваемый вентиль для включения или отключения (принудительного обнуления) адресной линии A20 между выводом A20 на 80286 и системной шиной; он известен как Gate-A20 (ворота A20), и он до сих пор реализован в чипсетах ПК. Большинство версий драйвера расширенной памяти HIMEM.SYS для IBM-/MS-DOS, как известно, отображают при загрузке сообщение о том, что они установили «обработчик A20», часть программного обеспечения для управления Gate-A20 и координации его с потребностями программ. . В защищенном режиме линия A20 должна быть включена, иначе возникнут ошибки физической адресации, которые могут привести к сбою системы. Современные устаревшие загрузчики (например, GNU GRUB ) используйте строку A20. [3]
Переход в реальный режим
[ редактировать ]Intel ввела защищенный режим в семейство x86 с намерением, чтобы операционные системы, которые его использовали, полностью работали в новом режиме и чтобы все программы, работающие в операционной системе с защищенным режимом, также работали в защищенном режиме. Из-за существенных различий между реальным режимом и даже довольно ограниченным защищенным режимом 286 программы, написанные для реального режима, не могут работать в защищенном режиме без перезаписи. Таким образом, при наличии широкой базы существующих приложений реального режима, от которых зависели пользователи, отказ от реального режима создал проблемы для отрасли, и программисты искали способ переключения между режимами по своему желанию. Однако Intel, в соответствии со своими намерениями относительно использования процессора, предоставила простой способ переключения в защищенный режим на 80286, но не простой способ вернуться в реальный режим. До модели 386 единственным способом переключиться из защищенного режима обратно в реальный режим была перезагрузка процессора; после перезагрузки он всегда запускается в реальном режиме, чтобы быть совместимым с более ранними процессорами x86 до 8086. Сброс процессора не очищает оперативную память системы, поэтому это, хотя и неудобно и неэффективно, на самом деле осуществимо. В защищенном режиме состояние процессора сохраняется в памяти, затем процессор сбрасывается, перезагружается в реальном режиме и выполняет некоторый код реального режима для восстановления сохраненного состояния из памяти. Затем он может запускать другой код реального режима, пока программа не будет готова вернуться в защищенный режим. Переход в реальный режим требует больших затрат времени, но этот метод позволяет программам защищенного режима использовать такие службы, как BIOS, который работает полностью в реальном режиме (изначально разработанный для 8088 на базе персонального компьютера IBM Модель (тип машины) 5150). Этот метод переключения режима также используется DPMI (под реальной, а не эмулируемой DOS) и расширителями DOS, такими как DOS/4GW, чтобы позволить программам защищенного режима работать под DOS; система DPMI или расширитель DOS переключается в реальный режим для вызова вызовов DOS или BIOS, а затем переключается обратно, чтобы вернуться к прикладной программе, которая работает в защищенном режиме.
Отклонить
[ редактировать ]Переход к ядру NT привел к тому, что операционной системе не требовалась DOS для загрузки компьютера, а также она не могла ее использовать. Необходимость перезагрузки компьютера в реальном режиме MS-DOS уменьшилась после Windows 3.1x , пока она больше не поддерживалась в Windows ME . Единственный способ запуска приложений DOS, которым требуется реальный режим, из новых версий Windows — это использование эмуляторов, таких как DOSBox , или продуктов виртуализации x86 .
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Справочник по процессорам x86 (архивировано 8 сентября 2018 г. — вместо «Краткой истории x86»: alasir.com/x86ref: 403 запрещено 24 марта 2023 г.)» . Архивировано из оригинала 8 сентября 2018 года . Проверено 24 марта 2023 г.
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка ) - ^ «Загрузка · Linux внутри» . 0xax.gitbooks.io . Проверено 10 ноября 2020 г.
- ^ «Линия A20 — OSDev Wiki» . wiki.osdev.org . Проверено 10 сентября 2020 г.
Внешние ссылки
[ редактировать ]- Чурдакис, Майкл (21 мая 2015 г.). «Учебное пособие по сборке в реальном, защищенном и длинном режиме для ПК» . Код проекта .