Руководство по языку B.Pascal 7

       

Управление объемом используемой RTM памяти


По умолчанию администратор этапа выполнения использует при загрузке всю доступную память. Затем по запросам он выделяет па- мять своим клиентам (через подпрограммы API администратора памя- ти).

В защищенном режиме нет разницы между обычной памятью (ниже 1 мегабайта) и расширенной памятью (с адресами выше 1 мегабайта); для программ защищенного режима доступны оба типа памяти. Однако администратор этапа выполнение отдает предпочтение расширенной памяти. Только после того как вся расширенная память будет выде- лена, или когда прикладная программа специально запрашивает обычную память (например, с помощью функции GlobalDosAlloc), ад- министратор этапа выполнения выделяет обычную память.

Причина, по которой администратор этапа выполнения предпочи- тает расширенную память, заключается в том, что прикладная прог- рамма может с помощью вызова подпрограммы Exec в модуле Dos по- рождать другие прикладные программы. Порожденные прикладные прог- раммы не обязательно являются программами защищенного режима; та- ким образом, им может потребоваться обычная память. Фактически, порожденные программы защищенного режима запускаются как програм- мы реального режима и переключаются в защищенный режим только после успешной загрузки фиктивным модулем средств DPMI и адми- нистратора этапа выполнения.

Администратор этапа выполнения перед порождением прикладной программы пытается освободить максимальный объем обычной памяти (например, перенеся перемещаемые блоки в расширенную память). Од- нако попытки освобождения расширенной памяти не предпринимаются. Таким образом, если должны порождаться прикладные программы защи- щенного режима, не использующие администратор этапа выполнения, то необходим споcоб управления распределением памяти администра- тором этапа выполнения.

Чтобы управлять тем, сколько памяти может использовать адми- нистратор этапа выполнения, в командной строке DOS добавьте к строке операционной среды DOS переменную среды RTM:

SET RTM={параметр nnnn}

Возможные параметры перечислены в следующей таблице. Значе- ние nnnn может быть десятичным или шестнадцатиричным числом в ви- де xAB54 или xab54.


Параметры переменной операционной среды RTM, используемые для управления памятью Таблица 17.7 ---------------------T------------------------------------------ ¦ Параметр ¦ Описание ¦ +--------------------+------------------------------------------+ ¦ EXTLEAVE nnnn ¦ Всегда оставляет не менее nnnn килобайт¦ ¦ ¦ доступной расширенной памяти. По умолча-¦ ¦ ¦ нию это значение равно 640К. ¦ +--------------------+------------------------------------------+ ¦ EXTMAX nnnn ¦ Не выделяет более nnnn килобайт расширен-¦ ¦ ¦ ной памяти. По умолчанию используется¦ ¦ ¦ значение 4 гигабайта. В Windows использу-¦ ¦ ¦ емое по умолчанию значение равно половине¦ ¦ ¦ доступной памяти. ¦ +--------------------+------------------------------------------+ ¦ EXTMIN nnnn ¦ Если после применения EXTMAX или EXTLEAVE¦ ¦ ¦ доступно менее nnnn килобайт, то програм-¦ ¦ ¦ ма завершается с сообщением о нехватке¦ ¦ ¦ памяти (Out of memory). По умолчанию это¦ ¦ ¦ значение равно 0. ¦ +--------------------+------------------------------------------+ ¦ REALLEAVE nnnn ¦ Всегда оставляет не менее nnnn параграфов¦ ¦ ¦ доступной реальной памяти. По умолчанию¦ ¦ ¦ это значение равно 64К или 4096 парагра-¦ ¦ ¦ фов. ¦ +--------------------+------------------------------------------+ ¦ REALMAX nnnn ¦ Не выделяет более nnnn параграфов реаль-¦ ¦ ¦ ной памяти. По умолчанию это значение¦ ¦ ¦ равно 1 мегабайту или 65535 параграфов. ¦ +--------------------+------------------------------------------+ ¦ REALMIN nnnn ¦ Если после применения REALMAX и REALLEAVE¦ ¦ ¦ доступно менее nnnn параграфов, то прог-¦ ¦ ¦ рамма завершается с сообщением о нехватке¦ ¦ ¦ памяти (Out of memory). По умолчанию это¦ ¦ ¦ значение равно 0. ¦ L--------------------+-------------------------------------------

Следующая команда DOS ограничивает RTM 2 мегабайтами расши- ренной памяти и обеспечивает, что нераспределенными останутся 128К реальной памяти.

SET RTM=EXTMAX 2048 REALLEAVE 8192






Содержание раздела