Он необходим при разработке больших программ с перекрытиями. Максимальный размер модуля не может превышать 64 кб, однако количество модулей не ограничено, что дает возможность разрабатывать очень крупные программы (до 580 кб оперативной памяти). И все же в некоторых случаях и этот объем может оказаться недостаточным. С помощью оверлея можно создавать программы практически неограниченной длины (имеется в виду длина кода программы; длина сегмента данных и размер программного стека не могут превышать 64 кб независимо от структуры программы).
Оверлей – это такой способ использования оперативной памяти, при котором в один и тот же участок памяти (оверлейный буфер) попеременно по мере надобности загружаются различные оверлейные модули. При этом все оверлейные модули хранятся на диске, а в оперативной памяти в каждый момент времени находится лишь один активный модуль и, возможно, несколько неактивных. При исполнении оверлейной программы в память загружается главная часть и один из модулей, например, модуль А. Если в процессе исполнения программы встретится обращение к модулю В, то с диска в оверлейный модуль будет загружен этот модуль (модуль А при этом частично разрушается), после чего программа продолжит свою работу.
|
|
Таким образом объем оперативной памяти, занимаемый оверлейной программой, определяется длиной ее главной части и наибольшего из перекрывающихся модулей. Однако оверлейная программа обладает меньшей скоростью работы, т.к. на каждую загрузку оверлейного модуля с диска в оверлейный буфер требуется дополнительное время.
Алгоритм создания оверлейных программ:
1. Выделить главную часть программы и разбить оставшуюся часть на несколько модулей.
2. В главной части программы указать с помощью директив компилятора {$O <имя>} те модули, которые будут оверлейными.
Program Over;
Uses DOS, Overlay, UnitA, UnitB;
{$O UnitA}
{$O UnitB}
{$O DOS}
Прим: из всех стандартных модулей только модуль DOS может бытьоверлейным.
3. Осуществить вызов процедуры инициализации оверлея OVRINIT перед первым обращением к оверлейному модулю.
4. В начале главной программы и каждого оверлейного модуля поместить директивы компилятора {$O+} {$F+} (разрешить создание оверлейной структуры и использовать дальнюю модель вызова), после чего откомпилировать программу на диск (Destination Disk).
Ниже приведены задания, решение которых позволит вам овладеть основными приемами работы с Турбо Паскалем.
ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ