Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМСиC / Организация, адресация, кэширование памяти.doc
Скачиваний:
124
Добавлен:
29.03.2015
Размер:
830.46 Кб
Скачать

Область верхней памяти (hma)

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

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

Здесь есть одна тонкость. Логический адрес FFFFh:000Fh соответствует максимально возможному физическому адресу FFFFFh. Но используя 16-разрядные регистры процессора можно задать и большее значение для логического адреса, например, FFFFh:0010h. Что произойдёт в этом случае?

Покажем как производиться сложение:

+

F

F

F

F

0

0

0

0

1

0

1

0

0

0

0

0

Если в компьютере установлены процессоры i8086 или i8088, произойдёт переполнение адреса, которое будет проигнорировано процессором. В результате 21-й бит теряется и, например, логический адрес FFFF:0010h указывает туда же, куда и адрес 0000:0000h, то есть на физический адрес 00000h.

Если же используются процессоры i80286 или старше, физическая шина адреса шире 20 бит. При работе в реальном режиме используются младшие 20 адресных линий - от A0 до A19, остальные адресные линии аппаратура компьютера блокирует.

Однако есть возможность снять блокировку с адресной линии A20. При этом в реальном режиме переполнения не происходит и появляется ещё одна «льготная» область памяти, лежащая выше границы первого мегабайта. Этот сегмент называется областью верхней или старшей памяти (High Memory Area, HMA). Ему соответствует диапазон адресов от FFFFh: 0010h = 100000h до FFFFh: FFFFh = 10FFEFh. Размер области старшей памяти составляет 64 килобайта без 16 байт.

Логическое распределение оперативной памяти в реальном режиме.

Несмотря на то что в реальном режиме доступен 1Мб оперативной памяти, собственно для загрузки программ выделены первые 640 Кб адресуемого пространства, получившие название стандартной памяти (Conventional memory). Оставшиеся 384 Кб зарезервированы для системного использования и носят название верхний блок памяти (UMB - Upper Memory Block).

Замечание: Слово англ. Upper обычно переводят на русский как верхний. Но и слово англ. High переводится как верхний. С этим связано множество коллизий при переводе названий Upper Memory Block и High Memory Area. В результате, в русскоязычной литературе продолжают использоваться оригинальные англоязычные написания — UMB и HMA

Рассмотрим логическую организацию памяти более детально (рисунок 20)

Рисунок 20. Логическая организация памяти.

Стандартная память

Стандартная оперативная память начинается с адреса 00000 и заканчивается адресом 9FFFF.

Первые 1024 байта оперативной памяти занимает таблица векторов прерываний (занимает 1 Кбайт – 256 элементов по 4 байта). Вектора прерываний - это адреса сервисных программ, входящих в состав операционной системы и BIOS. Каждому прерыванию может соответствовать программа обработки этого прерывания, адрес этой программы это и есть адрес вектор или просто вектор прерывания. Номер прерывания является индексом для таблицы векторов прерываний, а ее элементы - вектора прерываний (4 байта) - представляют собой 16-битные селекторы и 16-битные смещения точек входа в процедуры обработчиков. (рис. 21

Рисунок 21 Таблица векторов прерываний в реальном режиме

Далее следует область данных операционной системы, которая занимает 768 байтов (буфер клавиатуры, счётчик таймера и другая внутренняя информация), после области буферов располагается область для загрузки операционной системы. Система загружается в стандартную оперативная память не полностью, а только частично (ядро), еще выше загружаются драйверы устройств.

Далее в основной области памяти (около 600 Kб) могут располагаться резидентные программы, т.е. программы, которые всегда остаются в памяти.Выше до адреса A000h:0000h все принадлежит только программам и данным.