Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

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

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

История [ править ]

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

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 NT3.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 КиБ - 16 Б = 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, который работает полностью в реальном режиме (изначально был разработан длякоторый работает полностью в реальном режиме (изначально был разработан дляМодель персонального компьютера IBM на базе 8088 (тип машины) 5150). Этот метод переключения режимов также используется DPMI (под реальной, а не эмулируемой DOS) и расширителями DOS, такими как DOS / 4GW, чтобы позволить программам защищенного режима работать под DOS; система DPMI или расширитель DOS переключается в реальный режим для вызова вызовов DOS или BIOS, а затем переключается обратно, чтобы вернуться к прикладной программе, которая работает в защищенном режиме.

Отклонить [ править ]

Переход к ядру NT привел к тому, что операционная система не нуждалась в DOS для загрузки компьютера, а также не могла ее использовать. Необходимость перезагрузки компьютера в реальном режиме MS-DOS уменьшилась после Windows 3.1x, пока она больше не поддерживалась в Windows ME . Единственный способ в настоящее время запускать приложения DOS, требующие реального режима из более новых версий Windows, - это использовать эмуляторы, такие как DOSBox или продукты виртуализации x86 .

См. Также [ править ]

  • Нереальный режим
  • Защищенный режим
  • Загрузчик
  • 80386
  • IA-32
  • язык ассемблера x86
  • Обычная память

Ссылки [ править ]

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

Внешние ссылки [ править ]

  • Чурдакис, Майкл (21 мая 2015 г.). «Настоящее, защищенное, длинное руководство по сборке для ПК» . Код проекта .