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

Администратор оверлеев


Администратор оверлеев (или подсистема управления оверлеями) Borland Pascal реализуется с помощью стандартного модуля Overlay. В модуле Overlay используются усовершенствованные методы управле- ния буферами, что обеспечивает оптимальное выполнение программы в имеющейся области памяти. Например, подсистема управления оверле- ями сохраняет в оверлейном буфере столько оверлеев, сколько воз- можно. Это позволяет уменьшить частоту считывания оверлеев с дис- ка. После загрузки оверлея вызов одной из его подпрограмм выпол- няется также быстро, как обращение к неоверлейной программе. Кро- ме того, когда у администратора оверлеев возникает необходимость вывести один оверлей, чтобы освободить место для другого, он сна- чала пытается вывести те оверлеи, которые не являются активными (то есть те, которые в данный момент времени не содержат активных программ).

Для реализации улучшенных методов управления оверлеями Borland Pascal требует от вас при написании программы, в которой используются оверлеи, соблюдать два важных правила:

1. Все оверлейные модули должны содержать директиву {$O+}, приводящую к тому, что компилятор обеспечивает генериро- вание оверлейного кода.

2. При каждом обращении к оверлейной процедуре или функции вы должны обеспечить использование всеми активными про- цедурами и функциями вызовов типа FAR (дальний тип вызо- ва).

Оба правила будут поясняться далее в разделе под заголовком "Разработка оверлейных программ". Сейчас мы просто отметим, что вы можете легко удовлетворить эти правила, поместив в начале оверлейных модулей директиву компилятора {$O+,F+}, а в начале всех других модулей и основной программы - директиву {$F+}.

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

Директива компилятора {$O имя_модуля} используется в прог-

рамме для указания того, какой из модулей будет оверлейным. Эта директива должна размещаться за оператором uses программы, в кото- ром перед именами всех других оверлейных модулей должно указы- ваться имя стандартного модуля Overlay. Приведем следующий при- мер:


program Editor; {$F+} { Все процедуры и функции будут использовать дальний тип вызова } uses Overlay, Crt, Dos, EdInOut, EdFormat, EdPrint, EdFind, EdMain; {$O EdInOut } {$O EdFormat } {$O EdPrint } {$O EdFind } {$O EdMain }

Если вы пытаетесь использовать в качестве оверлейного мо- дуль, при компиляции которого не была указана директива {$O+}, то компилятор выведет сообщение об ошибке. Что касается стандартных модулей, то оверлейным может быть только модуль Dos. Другие стан- дартные модули не могут использоваться в качестве оверлейных. К тому же программы, содержащие оверлейные модули, при использова- нии IDE реального режима должны компилироваться на диск. Если вы пытаетесь выполнить компиляцию таких программ в память, то компи- лятор выводит сообщение об ошибке.


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