Нереальный режим


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

Из соображений эффективности 80286 и все более поздние процессоры x86 используют базовый адрес, размер и другие атрибуты, хранящиеся в их внутреннем кэше дескрипторов сегментов , при вычислении эффективных адресов памяти, даже в реальном режиме. Поэтому модификация внутреннего дескриптора сегмента позволяет изменять некоторые свойства сегментов в реальном режиме, например размер адресуемой памяти. Этот метод получил широкое распространение и поддерживается всеми процессорами Intel. [2]

HIMEM.SYS использует эту функцию для адресации расширенной памяти [3] , если DOS не переключен на работу в виртуальном режиме 8086 , несовместимом с нереальным режимом.

Нереальный режим используется кодом BIOS , поскольку это начальный режим современных процессоров Intel. [6] Кроме того, режим управления системой (SMM) в процессорах Intel 386SL и более поздних версиях переводит процессор в огромный реальный режим. [7]

Программа в нереальном режиме может вызывать 16-битный код, запрограммированный для реального режима (BIOS, ядро ​​DOS и драйверы) без какого -либо преобразования . Это делает драйвер нереального режима проще, чем драйвер DPMI . Однако нереальный режим несовместим с операционными системами защищенного режима, такими как Windows 3.x/9x/NT и OS/2.

Чтобы перевести микропроцессор 80386 или выше в нереальный режим, программа должна сначала войти в защищенный режим , найти или создать плоский дескриптор в GDT или LDT , загрузить некоторые из регистров сегмента данных с соответствующим «селектором» защищенного режима, а затем переключить вернуться в реальный режим. После возврата в реальный режим процессор будет продолжать использовать кэшированные дескрипторы, установленные в защищенном режиме, что позволит получить доступ к 4 ГБ расширенной памяти из реального режима. [9]