|
|
|
|
Управление логическими адресами
Спецификация расширенной памяти LIM определяет обработчик как
16-битовую величину (даже когда поддерживается максимум 255 обработчиков) и номер логической страницы как 14-битовое число (логические страницы
нумеруются от 0 до 2047). Субадресация объектов
внутри логической страницы не имеет отношения к менеджеру расширенной памяти, но является главной заботой разработчика приложения расширенной
памяти. В особенности, данные какого типа следует
хранить в расширенной памяти и как ими следует управлять?
Общий метод сохранения следа элемента данных в расширенной
памяти без обращения к побитным трюкам требует от Вашей программы
обеспечивать три 16-битовые переменные на элемент - обработчик,
номер страниц и байтовое смещение внутри страницы. Эти накладные
расходы делают применение расширенной памяти наиболее пригодным
для запоминания структур данных, которые относительно велики по
сравнению с указателями, применяемыми для обращения к ним. Мало
смысла сохранять 4-байтовый элемент данных в расширенной памяти,
если при этом требуется 6-байтовый указатель для доступа к нему.
Еще одним фактором для рассмотрения является динамическое
поведение структур данных, которые Вы намереваетесь хранить в
расширенной памяти. Поддержание связного списка, состоящего из
элементов переменной длины могло бы быть интересным предложением,
если он размещается в расширенной памяти. Довольно сложная схема
управления памятью потребовалась бы для того, чтобы эффективно
уплотнять свободное пространство и обрабатывать переполнение,
когда размер списка превысит размер логической страницы.
В действительности, эффективные способы управления расширенной памятью совершенно аналогичны методам поддержания файлового
буфера и индексации, применяемым системами управления базами данных. Существующая проблема является проблемой управления элементами данных
переменного размера (записи, массивы и т.д.) в ограниченном множестве буферов фиксированного размера (16-Кбайт в
случае спецификации расширенной памяти). Неудивительно, что некоторые программы баз данных для персональных компьютеров, совместимых с IBM PC,
пользуются преимуществами данного сходства путем
хранения индексов файлов или, даже целых файлов, в расширенной
памяти, когда она имеется в наличии.
Потребовались бы значительные усилия для использования расширенной памяти в качестве средства управления памятью общего
назначения в Ваших программах. Однако, Вы можете эффективно использовать расширенную память во многих обычных задачах сохранения данных при
простых специальных подходах. Примеры приложений,
перечисленные в конце данной главы показывают, какие относительно
несложные методы управления расширенной памятью достаточны для
обработки задач управления динамической памятью. Последующие разделы в данной главе посвящены детальному рассмотрению нескольких
функций, добавленных в спецификации расширенной памяти LIM 4.0,
которые значительно сокращают усилия по программированию, необходимые для работы с кодами и данными в расширенной памяти.
|
|