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

       

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


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

Оверлеи полезны только в программах 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 все последующие загрузки оверлеев сводятся к быстрой передаче информации из памя- ти в память.



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