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

Реальный режим (или режим реальных адресов) — это название было дано прежнему способу адресации памяти после появления процессора 80286, поддерживающего защищённый режим. Но только с появлением процессора 80386 можно говорить о защищённом режиме в современном понимании, так как в процессоре 80286 нет страничной адресации памяти.

Содержание

Описание

В реальном режиме при вычислении линейного адреса, по которому процессор собирается читать содержимое памяти или писать в неё, сегментная часть адреса умножается на 16 (или, что то же самое, сдвигается влево на 4 бита) и суммируется со смещением (если процессору передаётся не полный адрес из двух 16-битных значений — сегмента и смещения, — а только 16-битное смещение, то сегмент берётся из одного из сегментных регистров). Таким образом, адреса 0400h:0001h и 0000h:4001h ссылаются на один и тот же физический адрес, так как 400h×16+1 = 0×16+4001h.

Такой способ вычисления физического адреса позволяет адресовать 1 Мб + 64 Кб − 16 байт памяти (диапазон адресов 0000h…10FFEFh). Однако в процессорах 8086/8088 всего 20 адресных линий, поэтому реально доступен только 1 мегабайт (диапазон адресов 0000h…FFFFFh), а при адресации выше (в диапазоне 100000h…10FFEFh) происходит «заворот» — старший единичный бит адреса игнорируется и доступ идёт к 64 килобайтам в начальных адресах (0000h…FFEFh).

В процессорах 80286/80288 адресная шина 24-битная (возможна адресация 224 = 16 Мб памяти), поэтому в них переполнения не происходит. Компьютеры IBM PC/AT построены на процессоре Intel 80286, но из соображений совместимости с IBM PC и IBM PC/XT, построенных на Intel 808x, в них был введён логический элемент (вентиль), отключающий 21-й адресный провод (A20) от схемы управления памятью. Этот логический элемент (Gate A20) управляется через контроллер клавиатуры (микросхема Intel 8042) и по умолчанию он включён.

Использование

В реальном режиме процессоры работали только в DOS. Адресовать в реальном режиме дополнительную память за пределами 1 Мб нельзя (хотя можно использовать драйвера вроде HIMEM.SYS на машинах с процессором 80286 и выше). Несмотря на то, что фирма Intel не предусмотрела возврат процессора из защищённого в реальный режим, она обеспечила совместимость 16-битных программ, введя ещё один специальный режим — режим виртуальных адресов V86. При этом программы получают возможность использовать прежний способ вычисления линейного адреса, в то время как процессор находится в защищённом режиме. Режим V86 позволил организовать работу DOS внутри многозадачных систем вроде OS/2 и Microsoft Windows.

Структура адресного пространства IBM PC в реальном режиме

Основная область памяти

В область, называемую основной областью памяти (англ. conventional memory), загружается таблица векторов прерываний, различные данные BIOS, а также могут загружаться 16-битные программы DOS. Основная область памяти занимает 640 Кбайт начиная с адреса 0000:0000.

Upper Memory Area

Upper Memory Area (UMA) занимает 384 Кбайт и используется для размещения информации об аппаратной части компьютера. Область условно делится на три области по 128 Кбайт. Первая область служит для видеопамяти. Через вторую область доступны BIOS адаптеров. Третья область используется системной BIOS, но, как правило, не полностью (обычно остаётся 64 Кбайт). Остальное адресное пространство из верхней области с помощью специальных драйверов (например, EMM386.EXE, EMS.EXE, LIMEMS.EXE и т. п.) и/или устройств расширения может использоваться для доступа к расширенной памяти через спецификацию расширенной памяти (англ. Expanded Memory Specification, EMS).

Дополнительная область памяти

Дополнительная память для 16-битных программ доступна через спецификацию дополнительной памяти (англ. eXtended Memory Specification, XMS). Дополнительная память начинается с адресов выше первого мегабайта и её объём зависит от общего объёма оперативной памяти, установленной на компьютере.

High Memory Area

High Memory Area (HMA) — это область дополнительной памяти сразу за первым мегабайтом размером 64 Кбайт минус 16 байт. Её появление обусловлено особенностью процессора 80286, в котором 24 линии адреса и при обращении по адресам выше FFFF:000F обращение идёт ко второму мегабайту памяти (вместо начала первого мегабайта, как в 8086/8088). Таким образом, программы реального режима получили доступ к HMA.

См. также

Реальный режим.

© 2021–2023 sud-mal.ru, Россия, Барнаул, ул. Денисова 68, +7 (3852) 74-95-52