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