Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Адресация памяти в реальном режиме






 

Для работы с памятью используются две шины - шина адреса и шина данных. Физически память

устроена таким образом, что возможна адресация как 16-битовых слов, так и отдельных байтов

памяти. Кроме того, процессоры i80386 и i80486 могут адресовать 32-битовые слова памяти.

 

В любом случае так называемый физический адрес передаётся из процессора в память по шине

адреса. Ширина шины адреса определяет максимальный объём физической памяти, непосредст-

венно адресуемой процессором. На рис. 1 показана схема взаимодействия процессора и памяти

через шины адреса и данных.

 

 

Рис. 1. Шина адреса и шина данных

 

Например, компьютер IBM XT оснащён 20-разрядной шиной адреса и 16-разрядной шиной дан-

ных. Это означает, что имеется возможность адресоваться к 216 байтам памяти, т.е. к 1 мегабайту

памяти. Причём возможно адресоваться к байтам и словам размером в 16 бит.

 

Так как адреса принято записывать в шестнадцатеричной форме, то мы можем записать диапазон

физических адресов для 20-разрядной шины адреса следующим образом:

 

00000h < = [физический адрес] < = FFFFFh

 

Таким образом, для представления физического адреса в компьютерах IBM PC и IBM XT использу-

ется двадцать двоичных или пять шестнадцатеричных разрядов.

 

Однако все регистры процессора i8086 являются 16-разрядными. Возникает проблема представ-

ления 20-разрядного физического адреса памяти при помощи содержимого 16-разрядных регист-

ров.

 

Для разрешения этой проблемы используется двухкомпонентный логический адрес.

 

Логический адрес состоит из 16-разрядных компонент: компоненты сегмента памяти и компонен-

ты смещения внутри сегмента.

 

Для получения 20-разрядного физического адреса к сегментной компоненте приписывается спра-

ва четыре нулевых бита (для расширения до 20 разрядов), затем полученное число складывается с

 


 

компонентой смещения. Перед сложением к компоненте смещения слева дописывается четыре

нулевых бита (также для расширения до 20 разрядов). Эту процедуру иллюстрирует рис. 2.

 

 

Рис. 2. Адресация памяти в реальном режиме.

 

Логический адрес принято записывать в форме < сегмент: смещение>.

 

Например, пусть у нас есть логический адрес 1234h: 0123h. Сегментная компонента равна 1234h,

компонента смещения - 0123h. Вычислим физический адрес, соответствующий нашему логиче-

скому адресу:

 

расширяем до 20 бит сегментную компоненту, дописывая справа 4 нулевых бита, получаем число

12340h;

 

расширяем до 20 бит компоненту смещения, дописывая слева 4 нулевых бита, получаем число

00123h;

 

для получения физического адреса складываем полученные числа: 12340h + 00123h = 12453h.

 

Очевидно, что одному физическому адресу может соответствовать несколько логических. Напри-

мер, физическому адресу 12453h соответствует логический адрес 1245h: 0003h.

 

Фактически в схеме адресации памяти реального режима вся память как бы разбивается на сег-

менты. Физический адрес начала сегмента (базовый адрес сегмента) равен расширенной до 20

бит сегментной компоненте адреса (расширение выполняется дописыванием справа 4 нулевых

бит).

 

Сегменты могут начинаться не с любого физического адреса, а только с такого, который кратен 16

байтам. Поэтому сегмент может начинаться только с границы параграфа.

 

Компонента смещения при такой схеме адресации является смещением внутри сегмента памяти.

А сам сегмент памяти задаётся сегментной компонентой.

 


 

Рис.3 иллюстрирует сказанное выше. На этом рисунке показано соответствие логического адреса

0002h: 0028h физическому адресу 00048h.

 

 

Рис. 3. Соответствие логического и физического адресов.

 

Логический адрес должен находиться в следующих пределах:

 

0000h: 0000h < = [логический адрес] < = FFFFh: 000Fh

 

Здесь есть одна тонкость. Логический адрес FFFFh: 000Fh соответствует максимально возможному

физическому адресу FFFFFh. Но используя 16-разрядные регистры процессора вы можете задать и

большее значение для логического адреса, например, FFFFh: 0010h. Что произойдёт в этом случае?

 

Если в компьютере установлены процессоры i8086 или i8088, произойдёт переполнение адреса,

которое будет проигнорировано процессором. В результате логическому адресу FFFFh: 0010h бу-

дет соответствовать физический адрес 00000h.

 

Если же используются процессоры i80286, i80386 или i80486, физическая шина адреса шире 20

бит. Для процессора i80286 шина адреса имеет ширину 24 бита, а для процессоров i80386 и i80486

- 32 бита. При работе в реальном режиме используются младшие 20 адресных линий - от A0 до

A19, остальные адресные линии аппаратура компьютера блокирует.

 

Однако есть возможность снять блокировку с адресной линии A20. При этом в реальном режиме

появляется ещё один " льготный" сегмент памяти, лежащий выше границы первого мегабайта.

Этот сегмент называется областью старшей памяти (High Memory Area). Ему соответствует диапа-

зон логических адресов от FFFFh: 0010h до FFFFh: FFFFh. Размер области старшей памяти составляет

64 килобайта без 16 байт.

 

Операционная система MS-DOS умеет использовать старшую область памяти, располагая там своё

ядро. Для этого необходимо подключить драйвер HIMEM.SYS и поместить в файл CONFIG.SYS

строку:

 


 

DOS=HIGH

 

Архитектура процессоров серии i80XXX, работающих в реальном режиме, предполагает

 

хранение сегментной компоненты адреса в специальных сегментных регистрах:

 

CS - сегмент кода;

 

DS - сегмент данных;

 

ES - дополнительный сегмент данных;

 

SS - сегмент стека.

 

Компонента смещения может находиться в регистрах BX, BP, SI, DI, IP.

 

Задавая произвольные значения сегментной компоненты и компоненты смещения любая про-

грамма может адресоваться к любому участку памяти компьютера. В частности, любая программа

может преднамеренно или из-за ошибки разрушить области данных, принадлежащие операци-

онной системе.

 

Выделим два основных недостатка схемы адресации памяти реального режима:

 

ограниченное адресное пространство (до 1 мегабайта плюс примерно 64 килобайта старшей об-

ласти памяти для процессоров i80286, i80386 и i80486);

 

свободный доступ для любых программ к любым областям данных, что представляет потенци-

альную опасность для целостности операционной системы.

 

Этих недостатков полностью лишена схема адресации памяти, которая используется в защищён-

ном режиме.

Алгоритм обработки прерываний в защищенном режиме.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.