Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler (Уч_пос_Лаб_Ч1).doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.43 Mб
Скачать

4. Сегментированная организация памяти в реальном режиме. Виды памяти в среде ms-dos

В компьютерах IBM PC используются процессоры фирмы Intel серии i80x86 (i8086 в компьютерах PC/XT и Pentium 4 – условно i80886 – в последних моделях компьютеров). При этом каждый из процессоров, начиная с i80286, имеет специальный режим эмуляции (программной совместимости) базового процессора i8086 с добавлением возможности использования 32-разрядных регистров, начиная с i80386. Обычно этот режим называется режимом реального адреса (Real Address Mode) или R-режим. На какие же параметры процессора i8086 была сориентирована разработка операционной системы MS-DOS, работающая в данном режиме? Данный процессор имеет 16-разрядную внутреннюю архитектуру и такой же разрядности шину данных. Таким образом, диапазон представления целых чисел (данные или адрес) не превышает 216 – 1 = 65535 (или 64 К – 1). Однако адресная шина включает 20-линий, что соответствует объёму адресуемой памяти 220 = 1 Мбайт (память в компьютере состоит из однобайтовых ячеек, а порядковый номер ячейки образует её физический адрес).

Для того, чтобы с помощью 16-разрядных адресов можно было обращаться в любую точку 20-разрядного адресного пространства, введён двухкомпонентный логический адрес из 16-разрядных компонент:

"Segment (сегмент) : Offset (смещение)".

Здесь Segment – адрес сегмента, а Offset – смещение в этом сегменте. По умолчанию, в реальном режиме используется сегментная модель памяти с объёмом сегмента в 64 Кбайта, расположение объекта в котором, относительно его базового адреса, определяется смещением Offset. Расположение сегмента в адресном пространстве, а также механизм перехода от логического адреса к физическому показан на рис. 2.

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

Рассмотрим пример с использованием 16-теричной системы счисления. Пусть логический адрес равен 0040h : 0220h. Тогда соответствующий ему физический адрес равен 0040h*10h + 0220h = 00620h. Надо отметить, однако, что обратный переход – от физического адреса к логическому – неоднозначен. В общем случае, сегментация – механизм адресации, обеспечивающий несколько независимых адресных пространств как в пределах одной задачи, так и в системе в целом для защиты задач от взаимодействия друг на друга. Назначением базовых адресов сегментов занимается операционная система, а внутри каждого сегмента адреса формируются программой. Это эффективный адрес или смещение Offset. Важные замечания:

  • DОS в зависимости от объёма кода и данных программы может так назначить базовые адреса, что они будут перекрываться;

  • физический адрес базы сегмента кратен числу 16, поэтому сегменты начинаются на границах блоков с разницей в 16 байт (параграф);

  • сегментная организация обеспечивает создание позиционно – независимых или динамически перемещаемых программ. Каждое исполнение программы может происходить с различными значениями базовых адресов сегментов, которые выбираются DОS, исходя из особенностей загрузки памяти.

Основной недостаток реального режима заключается в малом объеме адресного пространства (всего 1Мбайт) в сочетании с малыми значениями сегментов (всего 64 Кбайт). Однако, в то время – 1981 г. – думалось иначе. Этот недостаток был устранён в старших моделях процессоров i80x86 с 32-разрядной архитектурой, использующих защищённый режим виртуального адреса Protected Virtual Address Mode (или просто защищённый режим – P-ре-жим) равный в пределе 4 Гбайтам (64 Гбайта для 36-разрядной адресной шины).

Рассмотрим распределение первого мегабайта памяти компьютера. В зависимости от модификации компьютера, настройки драйверов, управляющих памятью (а также типа версии используемой Windows), структура памяти несколько меняется. Однако размещение основных компонентов памяти (табл. 1) строго унифицировано.

Таблица 1

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]