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










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

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

Размещение расширенной памяти

В зависимости от динамического поведения Вашей программы Вы можете выбирать, разместить ли всю расширенную память, которая будет необходима единовременно, или делать отдельные запросы на размещение, когда требования времени выполнения программы меняются. Первый вариант более всего подходит, если количество страниц в течение времени выполнения варьируется незначительно. Второй вариант более уместен, если ожидается, что требования расширенной памяти программы будут расти и убывать существенно во время выполнения программы. Этот вариант также более целесообразен, поскольку остается больше расширенной памяти, доступной другим программам, которые могут выполняться параллельно. Например, одна популярная программа электронных таблиц восстанавливает доступный объем расширенной памяти и размещает 1/8 этого объема каждый раз, когда требуется дополнительная память. Конечно, существует другой популярный пакет электронных таблиц, который размещает целый неразмещенный пул расширенной памяти, когда начинает выполняться, не оставляя ничего другим программам, которые впоследствии могут вызываться самой этой программой.


При спецификации расширенной памяти LIM 3.2 обеспечивалась только одна функция размещения расширенной памяти: "Разместить страницы", функция 4 спецификации расширенной памяти. Каждый запрос на размещение возвращает отдельный обработчик, который следует использовать для ссылки на страницы, относящиеся к этому конкретному размещению. Количество страниц, связанное с этим обработчиком, фиксировано с того момента, когда страницы были размещены, до того, когда они возвращаются менеджеру расширенной памяти. Это ограничение препятствует динамическому размещению и освобождению расширенной памяти, так как невозможно вернуть менеджеру расширенной памяти только некоторые из страниц, принадлежащие конкретному обработчику.


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


Для того, чтобы завершить обсуждение размещения расширенной памяти, рассмотрим идею исходных страниц, введенную в спецификации расширенной памяти LIM 4.0. Исходные страницы - логические страницы, которые некоторым подмножеством стандартного размера страниц спецификации расширенной памяти - 16Кбайт - были ведены для обеспечения дополнительной гибкости оборудования и программного обеспечения расширенной памяти, способного поддерживать меньшие размеры страниц. Например, менеджер расширенной памяти, базирующийся на аппаратуре Intel 80386, мог бы поддерживать размер исходных страниц, равный 4Кбайт, обеспечивая надлежащим образом написанное программное обеспечение способностью управлять расширенной памятью более эффективно, чем было бы возможно при размере страниц в 16Кбайт. Менеджеры расширенной памяти спецификации расширенной памяти 4.0, написанные для поддержки существующих плат спецификации расширенной памяти, поддерживают идею исходных страниц тривиальным образом - размер исходной страницы идентичен размеру стандартной страницы.


Исходные страницы размещаются с помощью функции 27, подфункции 1, "Разместить исходные страницы", спецификации расширенной памяти. У функции 27 спецификации расширенной памяти также есть подфункция 0, "Разместить стандартные страницы", которая обеспечивает идентичную услугу для функции "Разместить страницы" спецификации расширенной памяти LIM 3.2 с одним расширением: она позволяет разместить нуль страниц для обработчика. Данное расширение также имеет место для подфункции 1.


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

Hosted by uCoz