Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BorlandPascal.doc
Скачиваний:
55
Добавлен:
17.03.2015
Размер:
2.83 Mб
Скачать

Переменные

Модуль Graph содержит две переменные, которые вы можете ис-

пользовать: GraphGetMemPtr и GraphFreeMemPtr. Они применяются в

подпрограммах управления динамически распределяемой областью па-

мяти. Прочитать о них можно в Главе 1 ("Справочник по библиоте-

ке") "Справочного руководства программиста".

Глава 20. Использование оверлеев

Оверлеи представляют собой части программы, которые совмест-

но используют общую область памяти. В один и тот же момент време-

ни резидентно размещаться в памяти может та или иная часть прог-

раммы, необходимая для выполнения заданной функции. В процессе

выполнения эти части программы могут замещать друг друга.

Оверлеи полезны только в программах DOS реального режима.

Поскольку для программ Windows памятью управляет сама Windows, а

для программ защищенного режима - администратор этапа выполнения

(RTM.EXE), эти средства включают в себя полный механизм обслужи-

вания оверлеев, и в программах Windows и программах защищенного

режима необходимость использования оверлеев отпадает.

Оверлеи могут значительно сократить объем памяти, необходи-

мый для выполнения программы. Фактически, так как в любой момент

времени в памяти резидентно размещаются только части программы, с

помощью оверлеев вы можете выполнять программы, значительно пре-

восходящие по объему доступную память.

Borland Pascal управляет оверлеями на уровне модулей, кото-

рые являются наименьшей частью программы, образующей оверлей. При

компиляции программы, имеющей оверлейную структуру, Borland

Pascal генерирует наряду с выполняемым файлом (который имеет рас-

ширение .EXE) оверлейный файл (имеющий расширение .OVR). Файл с

расширением .EXE содержит статические (не оверлейные) части прог-

раммы, а файл с расширением .OVR содержит все оверлейные модули,

которые при выполнении программы будут подкачиваться в память или

выводиться из нее на диск.

За исключением нескольких правил, касающихся его программи-

рования, оверлейный модуль полностью идентичен неоверлейному мо-

дулю. Фактически, если вы соблюдаете эти правила, у вас нет необ-

ходимости перекомпилировать модуль, чтобы образовать из него

оверлей. Решение о том, будет модуль оверлейным или нет, принима-

ется программой, которая использует данный модуль.

При загрузке оверлеев в память они помещаются в оверлейный

буфер, который размещается в памяти между сегментом стека и дина-

мически распределяемой областью памяти. По умолчанию для оверлей-

ного буфера выбирается минимальный возможный размер, но во время

выполнения программы его размер может быть легко увеличен путем

выделения дополнительной области памяти из динамически распреде-

ляемой области. Аналогично сегменту данных и минимальному размеру

динамически распределяемой области, оверлейный буфер принятого по

умолчанию размера выделяется при загрузке файла .EXE. При отсутс-

твии памяти необходимого объема модулем Dos или интегрированной

программной средой IDE будет выводиться сообщение об ошибке

(Program too big to fit in memory - "Программа слишком велика,

чтобы разместиться в памяти") или (Not enough memory to run

program - "Для запуска программы не хватает памяти").

Одной из очень важных возможностей подсистемы управления

оверлеями является возможность при наличии достаточного прост-

ранства загружать оверлейный файл в дополнительную память. Для

этой цели в Borland Pascal поддерживается средство расширения па-

мяти EMS (Lotus/Intel/Microsoft Expanded Memory Specification).

При размещении оверлейного файла в памяти EMS все последующие

загрузки оверлеев сводятся к быстрой передаче информации из памя-

ти в память.

Соседние файлы в предмете Программирование на Pascal