На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 7 / Управление физическими адресами Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Управление физическими адресами

В спецификации расширенной памяти LIM 3.2 физический адрес элемента данных в логической странице, которая в данный момент отображается в физическую страницу, вычисляется по отношению к базе 64-Кбайтного кадра страниц. Адрес сегмента для этого кадра страниц получается посредством функции 2 "Получить адрес сегмента кадра страниц", спецификации расширенной памяти. Деление размера кадра страниц на размер стандартной логической страницы дает четыре физических страницы, пронумерованных от 0 до 3, которые могут указываться в вызовах функции спецификации расширенной памяти. Все четыре страницы являются смежными в памяти - адрес каждой следующей на 16Кбайт выше, чем адрес предшествующей.


Спецификация расширенной памяти LIM 4.0, включающая в себя идею многих, возможно несмежных, кадров страниц усовершенствованной спецификации расширенной памяти AQA, делает вычисление физического адреса или более простым или более сложным в зависимости от Вашей точки зрения. В дополнение к функции 2 спецификации LIM 4.0 менеджер расширенной памяти может теперь обеспечить Вашу программу таблицей номеров физических страниц и адресов сегментов, соответствующих каждой физической странице.


Функция 25, подфункция 1, "Получить отсчет элементов адресов физической страницы", спецификации расширенной памяти возвращает количество отображаемых физических страниц, поддерживаемых менеджером расширенной памяти. Используйте эту подфункцию для определения размера массива, адрес которого передается функции 25, подфункции 0, "Получить массив отображаемых физических адресов", спецификации расширенной памяти, которая заполнит данный массив адресами сегментов в нарастающем порядке и номерами соответствую- щих страниц.


В то время как в спецификации расширенной памяти LIM 4.0 не требуется от менеджера расширенной памяти обеспечивать более четырех стандартных физических страниц, определенных в спецификации 3.2, менеджер расширенной памяти может обеспечивать до 36 16-Кбайтных физических страниц. До 12 страниц может размещаться в пространстве между 768К и 960К (шестнадцатиричные адреса от С0000 до F0000) и до 24 страниц может размещаться между 256К и 640К (шестнадцатиричные адреса от 40000 до A0000).


Доступ к кадру страниц над 640К возможен для любого приложения спецификации расширенной памяти. Доступ к отображаемой памяти ниже 640К, на которую спецификация ссылается как на отображаемую обычную память, предназначен для разработчиков расширений операционной системы, таких как Windows 2.0 фирмы Microsoft.


Количество физических страниц в кадре страниц над 640К может изменяться в зависимости от раскладки пространства ПЗУ на конкретной машине. Видеоадаптеры различных типов могут занимать существенную долю пространства ПЗУ для своих дисплейных буферов. Многие типы адаптеров ввода-вывода, включая сетевые платы и дисковые контроллеры, содержат расширения ПЗУ BIOS, которые появляются в адресном пространстве между C0000 и F0000.


Программные эмуляторы должны обычно размещать кадр страниц спецификации расширенной памяти вне адресного пространства DOS, ниже 640К, потому что у большинства компьютеров, совместимых с IBM PC, нет ОЗУ между 640К и 960К. Некоторые программные эмуляторы спецификации расширенной памяти могут пользоваться преимуществом возможности некоторых плат расширенной памяти отображать 64К или более ОЗУ в пространство над 640К.


Опасно делать какие-либо упрощающие предположения о положении и выравнивании кадра страниц. Некоторые существующие приложения спецификации расширенной памяти делают такие допущения, полагаясь на выравнивание кадра страниц, обычно обеспечиваемое оборудованием спецификации расширенной памяти, для того чтобы сохранить пространство памяти для указателей расширенной памяти или для упрощения вычисления адресов в расширенной памяти. Однако, кадр страниц, обеспечиваемый чисто программными реализациями менеджера расширенной памяти, может не обладать таким же выравниванием, как кадр страниц платы спецификации расширенной памяти. Для того чтобы позволить Вашим приложениям использоваться в системах с чисто программными менеджерами расширенной памяти, здесь приводятся некоторые упрощающие допущения, которые Вам следует избегать при программировании:


1. Поскольку аппаратура спецификации расширенной памяти обеспечивает кадры страниц, выровненные на 16-Кбайтных границах, только старший байт адреса сегмента имеет значение при формировании физического адреса. В результате некоторые программы не запоминают младший байт сегмента кадра страниц, полагая, что он будет равен нулю. В спецификации расширенной памяти LIM не указывается, что физические страницы должны выравниваться по любой границе, более высокой, чем граница параграфа.


2. Некоторые приложения спецификации расширенной памяти выполняют вычисление адреса расширенной памяти, полагая, что кадр страниц находится над 640К или, что его адрес в памяти больше, чем адрес самого приложения. Кадр страниц, обеспечиваемый программным менеджером расширенной памяти может не подчиняться этому допущению.


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz