- •Алгоритмические языки программирования.
- •ОВЕРЛЕЙ
- •КАК СОЗДАТЬ ПРОГРАММУ БОЛЬШОГО РАЗМЕРА?
- •Оверлей - это такой способ использования оперативной памяти, при котором в один и
- •ГДЕ ХРАНЯТСЯ ОВЕРЛЕЙНЫЕ МОДУЛИ?
- •При выполнении программы, построенной по оверлейному принципу, в памяти находятся только те из
- •Программа
- •Оверлейный
- •Последовательность выполнения оверлейной программы
- •Загрузка нужных модулей в оверлейный буфер осуществляется автоматически и программисту не нужно об
- •Главное преимущество оверлейной структуры:
- •Главный недостаток оверлейной структуры:
- •ОБРАТИТЕ ВНИМАНИЕ!
- •Новые термины и понятия:
- •По умолчанию для оверлейн
- •Турбо Паскаль управляет оверлеями на уровне модулей
- •Файл с оверлейной частью программы должен размещаться в том же каталоге, что и
- •Оптимизация методов управления оверлейным буфером
- •АДМИНИСТРАТОР ОВЕРЛЕЕВ.
- •Подсистема управления оверлеями сохраняет в оверлейном буфере с
- •ОБРАТИТЕ ВНИМАНИЕ!
- •Оформление
- ••Поскольку оверлеи оформляются в виде модулей, то все правила построения модулей применимы и
- •ОФОРМЛЕНИЕ ОВЕРЛЕЕВ.
- •Директива компилятора
- •Пример:
- •ОБРАТИТЕ ВНИМАНИЕ!
- ••Если в оверлейном модуле есть раздел инициализации, то в нем, с одной стороны,
- •Последовательность создания оверлейных программ.
- •Процедуры и функции модуля Overlay
- •Инициализация
- •Процедура OvrInit(OvrFileName : STRING);
- •Условие:
- •Хотя использование кода инициализации и
- •Рациональный подход:
- •В модуле Overlay объявлена переменная
- •Возможные значения переменной OvrResult, а также список соответствующих им констант:
- •Для размещения оверлеев в расширенной памяти
- •Рекомендуется всегда использовать процедуру OvrInitEMS.
- •Управление
- •УПРАВЛЕНИЕ ОВЕРЛЕЙНЫМ БУФЕРОМ
- •Для управления оверлейным буфером применяется функция OvrGetBuf,
- ••Доступный объем памяти определяется разницей значений переменных MaxAvail, содержащей размер максимального непрерывного
- •УПРАВЛЕНИЕ ОВЕРЛЕЙНЫМ БУФЕРОМ
- •Оверлейный буфер Турбо Паскаля лучше всего представить в виде кольцевого буфера.
- •ПРОБЛЕМА В УПРАВЛЕНИИ ОВЕРЛЕЯМИ.
- •В Турбо Паскале найдено компромиссное решение этой
- •Оптимизация алгоритма управления оверлеями 57
- •Использование механизма испытаний (проб/отказов) приводит к тому, что часто используемые оверлеи будут сохраняться
- •УПРАВЛЕНИЕ МЕХАНИЗМОМ ИСПЫТАНИЙ.
- •По умолчанию механизм испытаний не используется.
Последовательность создания оверлейных программ.
31
1
32
4
33
Процедуры и функции модуля Overlay
Подпрограмма |
Описание |
OvrClearBuf
OvrGetBuf
OvrGetRetry
OvtInit
OvrInitEMS
OvrSetBuf
OvrSetRetry
Очищает оверлейный буфер
Возвращает текущий размер оверлейного буфера
Возвращает текущий размер области испытаний - последнее значение, установленное OvrSetRetry; По умолчанию – 0.
Инициализирует подсистему управления оверлеями и открывает оверлейный файл
Загружает оверлейный файл в память EMS, если это возможно.
Устанавливает размер оверлейного буфера
Задает размер области испытаний в оверлейном буфере
Инициализация
оверлеев
Инициализация администратора оверлеев.
Анализ результатов инициализации.
Использование расширенной памяти.
Процедура OvrInit(OvrFileName : STRING); |
|
инициализирует администратор оверлеев и |
|
открывает указанный оверлейный файл (.OVR). |
|
Инициализация администратора оверлеев |
36 |
Условие:
•Пусть файл с главной частью программы называется MAIN.РАS;
•В программе используются два оверлейных модуля;
•Разместим их в файлы UNITA.PAS и UNITB.PAS.
37
38
39
Хотя использование кода инициализации и |
допускается в оверлейных модулях, |
по ряду причин его следует избегать. |
1.Код инициализации, даже если он выполняется только один раз, является частью оверлея и будет занимать пространство в оверлейном буфере при каждой загрузке оверлея.
2.Если большое число оверлейных модулей содержит код инициализации, каждый из них при загрузке программы придется считывать в память.
Инициализация администратора оверлеев40