Реальный режим - Real mode

Реальный режим, также называется режим реального адреса, это режим работы всех x86 -совместимый Процессоры. Режим получил свое название от того факта, что адреса в реальном режиме всегда соответствуют реальным ячейкам памяти. Реальный режим характеризуется 20-немного сегментированный адрес памяти пробел (что дает ровно 1 МиБ адресуемой памяти) и неограниченный прямой программный доступ ко всей адресуемой памяти, адресам ввода-вывода и периферийному оборудованию. Реальный режим не поддерживает защиту памяти, многозадачность или уровни привилегий кода.

Перед выпуском 80286, который представил защищенный режим реальный режим был единственным доступным режимом для процессоров x86;[1] и для Обратная совместимость, все процессоры x86 запускаются в реальном режиме при сбросе, хотя можно эмулировать реальный режим в других системах при запуске в других режимах.

История

Представлена ​​архитектура 286 защищенный режим, что позволяет (среди прочего) защитить память на аппаратном уровне. Однако для использования этих новых функций потребовалось новое Операционная система который был специально разработан для защищенного режима. Поскольку первичный Спецификация проекта микропроцессоров x86 заключается в том, что они полностью обратно совместимы с программным обеспечением, написанным для всех чипов x86 до них, чип 286 был создан для запуска в `` реальном режиме '', то есть в режиме, в котором отключены новые функции защиты памяти, так что это могло бежать операционные системы написано для 8086 и 8088. По состоянию на 2018 г. текущие процессоры x86 (включая x86-64 CPU) могут загружать операционные системы в реальном режиме и могут запускать программное обеспечение, написанное практически для любого предыдущего чипа x86, без эмуляции или виртуализации.

BIOS ПК, представленный IBM, работает в реальном режиме, как и ДОС операционные системы (MS-DOS, DR-DOS, так далее.). Ранние версии Майкрософт Виндоус работал в реальном режиме. Окна / 386 позволили в некоторой степени использовать защищенный режим, и это было более полно реализовано в Windows 3.0, который может работать как в реальном режиме, так и в защищенном режиме, как в Windows / 386. В Windows 3.0 на самом деле было несколько режимов: «реальный режим», «стандартный режим» и «386-расширенный режим», последний требовал некоторых функций виртуализации процессора 80386 и, таким образом, не мог работать на 80286. В Windows 3.1 удалена поддержка для реального режима, и это была первая основная операционная среда, для которой требовался как минимум процессор 80286. Ни одна из этих версий не могла считаться современной операционной системой x86, поскольку они перешли в защищенный режим только для определенных функций. Unix, Linux, OS / 2, Windows NT 3.x и более поздние версии 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 и более ранние будут обращаться к адресу, равному [смещение] -0x10, который находится в начале первого мебибайта. (Обратите внимание, что на 80186 и более ранних версиях первый кибибайт адресного пространства, начиная с адреса 0, является постоянным неподвижным местом таблицы векторов прерываний.) Итак, фактический объем памяти, адресуемой процессорами 80286 и более поздних версий x86 в реальном режиме, равен 1 МиБ + 64 KiB – 16 B = 1114096 Б.

Линия A20

Некоторые программы, предшествующие 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 продукты.

Смотрите также

использованная литература

  1. ^ "Краткая история x86".
  2. ^ «Загрузка · Linux Inside». 0xax.gitbooks.io. Получено 10 ноября, 2020.
  3. ^ «Линия A20 - OSDev Wiki». wiki.osdev.org. Получено 10 сентября, 2020.

внешние ссылки