TURBO PASCAL |
Новости
|
Управление объемом используемой RTM памятиПо умолчанию администратор этапа выполнения использует при загрузке всю доступную память. Затем по запросам он выделяет па- мять своим клиентам (через подпрограммы API администратора памя- ти). В защищенном режиме нет разницы между обычной памятью (ниже 1 мегабайта) и расширенной памятью (с адресами выше 1 мегабайта); для программ защищенного режима доступны оба типа памяти. Однако администратор этапа выполнение отдает предпочтение расширенной памяти. Только после того как вся расширенная память будет выде- лена, или когда прикладная программа специально запрашивает обычную память (например, с помощью функции GlobalDosAlloc), ад- министратор этапа выполнения выделяет обычную память. Причина, по которой администратор этапа выполнения предпочи- тает расширенную память, заключается в том, что прикладная прог- рамма может с помощью вызова подпрограммы Exec в модуле Dos по- рождать другие прикладные программы. Порожденные прикладные прог- раммы не обязательно являются программами защищенного режима; та- ким образом, им может потребоваться обычная память. Фактически, порожденные программы защищенного режима запускаются как програм- мы реального режима и переключаются в защищенный режим только после успешной загрузки фиктивным модулем средств DPMI и адми- нистратора этапа выполнения. Администратор этапа выполнения перед порождением прикладной программы пытается освободить максимальный объем обычной памяти (например, перенеся перемещаемые блоки в расширенную память). Од- нако попытки освобождения расширенной памяти не предпринимаются. Таким образом, если должны порождаться прикладные программы защи- щенного режима, не использующие администратор этапа выполнения, то необходим споcоб управления распределением памяти администра- тором этапа выполнения. Чтобы управлять тем, сколько памяти может использовать адми- нистратор этапа выполнения, в командной строке DOS добавьте к строке операционной среды DOS переменную среды RTM: SET RTM={параметр nnnn} Возможные параметры перечислены в следующей таблице. Значе- ние nnnn может быть десятичным или шестнадцатиричным числом в ви- де xAB54 или xab54. B.Pascal 7 & Objects/LR - 296 - Параметры переменной операционной среды RTM, используемые для управления памятью Таблица 17.7 ┌────────────────────┬──────────────────────────────────────────┐ │ Параметр │ Описание │ ├────────────────────┼──────────────────────────────────────────┤ │ 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. │ └────────────────────┴──────────────────────────────────────────┘ Следующая команда DOS ограничивает RTM 2 мегабайтами расши- ренной памяти и обеспечивает, что нераспределенными останутся 128К реальной памяти. SET RTM=EXTMAX 2048 REALLEAVE 8192 |
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |