4. Сегментированная организация памяти в реальном режиме

advertisement
Сервис "Обмен садиками" - бесплатный инструмент поиска обмена местами в
дошкольных образовательных учреждениях (ДОУ) между детьми одного возраста
Mini-Soft Библиотека Assembler IBM PC 4. Сегментированная организация
памяти в реальном режиме. Виды памяти в среде MS-DOS
Разделы сайта:
Образование
Курсовые
Дипломы
Рефераты
Словари
БЭМТ
БФ НГТУ
Программы
Soft
Исходники
Статьи
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-разрядных компонент:
MSDN
Библиотека
Инфо
"Segment (сегмент) : Offset (смещение)".
Ссылки
Гостевая книга
Поиск по сайту:
123302
Submit
Добавить
работу на сайт
Ваше образование
Два высших
Неполное
среднее
Среднее
Среднеспециальное
Неполное
высшее
Высшее
Здесь Segment – адрес сегмента, а Offset –
смещение в этом сегменте. По умолчанию, в реальном
режиме используется сегментная модель памяти с
объёмом сегмента в 64 Кбайта, расположение объекта
в котором, относительно его базового адреса,
определяется смещением Offset. Расположение
сегмента в адресном пространстве, а также механизм
перехода от логического адреса к физическому
показан на рис. 2.
? ???????
Новые поступления:
Анализ и оценка
эффективности
использования
оборотных активов
организации 2011-10-11
Товарные биржи и их
значение в
коммерческой
деятельности
торговых предприятий
2011-10-11
Рис. 2. Сегментированная модель памяти реального режима
Контрольная по
ботанике 2011-09-04
Контрольная работа
по ботанике 2011-09-04
RSS
Все новинки...
Проверить аттестат
Рассмотрим пример с использованием 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
Распределение первого мегабайта памяти компьютера
Номер
сегмента
Сегментный
адрес
Описание
Вид
памяти
220-1
Расширенная память
(спецификация
eXtended Memory
Specification – XMS)
11
110000h
10
100000h
F
F000h
XMS
Высокая память (High
Memory Area – HMA)
ПЗУ BIOS
E
Свободные адреса
D
Свободные адреса
Upper
Memory
Area
C
C000h
ПЗУ расширений BIOS
В
B800h
Текстовая видеопамять
B000h
Графический
видеобуфер
(UMA)
А
A000h
9
9000h
384 Кбайт
Conventional
8
Memory
Свободная память для
загружаемых
прикладных
1
0070h
и системных
(резидентных)
программ
Area
(CMA)
640 Кбайт
(~570 Кбайт)
Резидентная часть
COMMAND.COM
Загружаемые
драйверы DOS
Ядро операционной
системы DOS –
0
файлы IO.SYS и
MSDOS.SYS
0050h
Область данных DOS
(512 байт)
0040h
Область данных BIOS
(256 байт)
0000h
Таблица векторов
прерываний (1 Кбайт)
Первые 640 Кбайт адресного пространства
называются основной или стандартной CMA-памятью
и по принципу работы являются памятью с
произвольным
доступом,
допускающей
как
считывание, так и запись данных (ОЗУ или в
англоязычной транскрипции RAM – Random Access
Memory). Это та область, которую могли адресовать
первые версии DOS. Оставшаяся часть памяти
объёмом 384 Кбайт (область верхней памяти – UMA)
использовалась видеоадаптером и ПЗУ BIOS.
Начальный килобайт памяти занят векторами
прерываний (256 векторов по 4 байта). Далее, над
таблицей векторов, располагается область данных
BIOS, которая занимает объём в 256 байт. В этой
области
хранятся
разнообразные
данные,
используемые
BIOS
в
процессе
управления
периферийным оборудованием. Этими данными могут
пользоваться и разработчики прикладных программ на
ассемблере (см. табл. 2). Начиная с сегментного адреса
0050h, располагается область данных DOS. К
некоторым данным этой области (данные не являются
документированными) можно обращаться только через
посредство
программных
прерываний.
Выше
резидентной части командного процессора обычно
загружаются необходимые резидентные программы
(русификаторы,
антивирусные
программы).
Оставшаяся часть CMA-памяти для загрузки
прикладных DOS-программ, как правило, не
превышает ~ 500 Кбайт.
Таблица 2
Содержание некоторых полей области данных BIOS
Адрес Размер,
(offset)
байт
Типичное
значение
Описание
00h,
02h
2+2
03F8h, 02F8
Базовые порты COM1 и
COM2
08h
2
03BCh
Базовый порт LPT1
10h
2
C463h
Состав установленного
оборудования
13h
2
0280h=640Кбайт
Основная память
17h,
18h
1+1
–
Первый и второй байты
флагов клавиатуры
1Ah
2
001Eh – 003Ah
Головной указатель
клавиатурного буфера
1Ch
2
001Eh – 003Eh
Хвостовой указатель
клавиатурного буфера
49h
1
03h
Текущий видеорежим
4Ah
2
50h=80
Ширина экрана
4Ch
2
1000h=4байта
Размер видеостраницы
4Eh
2
50h
16
–
Позиции курсора на
каждой видеостранице
60h
2
0607h
Форма курсора
6Ch
4
–
Счётчик прерываний
системного таймера, 18,2
Гц
72h
2
0000h
Режим начальной
загрузки: 0000h – полный
цикл POST, 1234h –
укороченный цикл после
нажатия Ctrl-Alt-Del
80h
2
001Eh
Адрес начала буфера
клавиатуры
F0h FFh
16
Нули
Область межзадачных
связей
Смещение в видеобуфере
текущей видеостраницы
Блоки верхней памяти UMA различаются как по
принципу работы – ОЗУ или ПЗУ, так и по месту
расположения в компьютере. Видеопамять (тип OЗУ) –
обычно
находится
в
составе
видеоадаптера,
программы BIOS (тип ПЗУ) – на материнской плате
компьютера.
Всё, что выше первого мегабайта, получило
название расширенной или XMS-памяти (см. табл. 1).
Как уже отмечалось выше, доступ к расширенной
памяти осуществляется в защищённом режиме и она
не доступна для DOS.
Однако в составе DOS имеются два драйвера,
которые позволяют пользоваться XMS-памятью в
ограниченном объёме. Первый драйвер Himem.sys
разрешает DOS загрузить себя в первый сегмент
расширенный памяти, получившей название высокой
памяти – High Memory (HMA). Второй – Emm386.exeможет выполнять две альтернативные функции:
– отображение расширенной памяти на свободные адреса
верхней UMA-памяти (Expanded memory – EMS),
– загрузку драйверов и резидентных программ DOS
(системных и прикладных) из CMA-памяти на свободные адреса
верхней памяти UMA.
Указанные функции реализуются посредством
модификации конфигурационных файлов Config.sys и
Autoexec.bat. В начале файла Config.sys помещаются
две строки, осуществляющие загрузку данных файлов
(в начале Himem.sys, затем Emm386.exe), затем, в
третьей строке, – директиву DOS с параметрами: High
и UMB. Параметр High пролонгирует назначение
драйвера Himem.sys, UMB – разрешает DOS управлять
блоками верхней памяти через посредство драйвера
Emm386.exe. Вот, к примеру, как это выглядит для
Windows 9x:
........
Device=C:\Windows\Himem.sys
Device=C:\Windows\Emm386.exe Noems
Dos=High,Umb
В конце второй строки добавляется ключевое
слово Ram, если требуется реализация от драйвера
функции отображения расширенной памяти в UMB,
или Noems – для указанной выше альтернативной
функции. В дальнейшем записываются строки,
загружающие драйвера (при наличии Noems) в
верхнюю память с помощью команды Devicehigh.
Например:
Devicehigh=C:\Windows\Command\Ansi.sys
При этом загрузка резидентов выполняется в
Autoexec.bat командой Loadhigh(Lh). Выполнение
подобной работы позволяет освободить CMA-память
для загружаемых команд до уровня ~ 600 Кбайт.
Для просмотра
памяти
следующими командами:
можно
воспользоваться
Mem/d/p – постраничный просмотр модулей и драйверов
всей памяти;
Mem/m:<filename> – вывод подробных сведений об
использовании памяти заданным модулем.
При установке на компьютер системы Windows
2000 функция загрузки подсистемы DOS в память
HMA, через посредство драйвера Himem.sys,
выполняется по умолчанию. Кроме того, драйвер
Emm386.exe в этой системе уже не используется, а его
функции в файле Config.nt частично выполняет
команда Emm. Описание данной команды приведено в
виде комментариев в файле Config.nt для Windows
2000.
Рассмотренные выше строчки в Config.nt можно
представить в виде:
........
device=%SystemRoot%\system32\himem.sys
Emm=Ram[1]
Dos=High,Umb
Devicehigh=C:\Windows\Command\Ansi.sys
Вообще система Windows 2000 автоматически
оптимизирует использование памяти для подсистемы
MS-DOS и её программ. Для резервирования за
программой DOS определённых объёмов памяти
различных типов щёлкните правой кнопкой на значке
исполняемого файла программы и выберите из
контекстного меню команду Свойства. В окне свойств
откройте вкладку Память (рис. 3).
Рис. 3. Окно свойств с открытой вкладкой Память
 В рамке Обычная память задаётся необходимый для работы
программы объём памяти в Кбайтах (от 0 до 640 Кб.). В
раскрывающемся списке Переменные среды задаётся объём памяти
(в байтах) для интерпретатора команд Command.com (проявляет себя
только при запуске Windows 9x). Установка флажка Защищённый
режим препятствует изменению программой установленной
структуры и объёма обычной памяти, что защищает систему от
зависания в случае ошибок в программе.

В
рамке
Отображаемая
(EMS)
память
указывается
максимальный объём физической памяти, отображаемой в
диапазоне свободных адресов верхней памяти, который может быть
выделен программе.
 В рамке Дополнительная (XMS)-память можно установить
флажок Использовать HMA для загрузки программы в высокую
память, однако если в HMA-память загружена DOS (что более
необходимо), положение флажка не играет роли.
 В рамке Память DPMI для защищённого режима MS-DOS
задаётся предельный объём памяти DPMI для защищённого режима
DOS, который может быть выделен программе (проявляет себя
только при запуске Windows 9x).
Для просмотра
памяти
следующими командами:
можно
воспользоваться
mem/d – выводит сведения о загруженных программах и внутренних
драйверах, а также вывод других сведений о программах (при
необходимости используйте постраничный вывод с помощью
команды more, например, mem/d|more);
mem/c – выводит сведения о программах, загруженных в обычную
память и в верхнюю область памяти, а также итоговые сведения об
использовании памяти.
Ram указывает, что система должна распределить
только 64 Кбайт из области UMB для буфера страниц EMS памяти и оставить остальное место (если таковое имеется) для
использования DOS, чтобы обеспечить поддержку команд
LOADHIGH и DEVICEHIGH. По умолчанию система
использует всю доступную память из области UMB для буфера
страниц EMS-памяти. Размер Emm указывается в PIF-файле для
данного приложения, либо в файле _default.pif. Если в PIFфайле в качестве размера EMS задан нуль, то строка Emm в
файле настройки DOS игнорируется.
Вам помог данный материал: Да | Нет
[1]
Mini-Soft Библиотека Assembler IBM PC 4. Сегментированная организация
памяти в реальном режиме. Виды памяти в среде MS-DOS
О проекте
MiniSoft.ru Рекла
ма на сайте
Copyright ©
Mini-Soft
2003-2009
minisoft@narod.ru
Download