Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Климов. Лекции / Алг_яз_Лекция_1.pptx
Скачиваний:
37
Добавлен:
14.05.2015
Размер:
1.49 Mб
Скачать

Рациональный подход:

весь код инициализации собрать в оверлейный модуль инициализации,

модуль инициализации вызывается только один раз при загрузке программы

больше программа к нему не обращается.

41

В модуле Overlay объявлена переменная

OvrResult : INTEGER;

в которой хранится код завершения процедур и

функций модуля.

в том числе и код завершения процедуры OvrInit.

Анализ результатов инициализации 42

Возможные значения переменной OvrResult, а также список соответствующих им констант:

Значение

Константа

Описание

0

OvrOK

Нормальное завершение

-1

OvrError

Ошибка управления оверлеями

-2

OvrNotFound

Файл .OVR не найден

-3

OvrNoMemory

Не хватает памяти для буфера

-4

OvrIOError

Ошибка при обращении к оверлейному файлу

-5

OvrNoEMSDriver

Драйвер EMS не установлен

-6

OvrNoEMSMemory

Размер EMS-памяти недостаточен

Анализ результатов инициализации 43

Для размещения оверлеев в расширенной памяти

(EMS-памяти), предназначена процедура

OvrInitEMS, не имеющая параметров.

Эта процедура проверяет возможность использования в системе расширенной памяти, и если это возможно, то оверлейный файл полностью размещается там.

Процедура OvrInitEMS не является обязательной и не заменяет процедуру OvrInit. При использовании расширенной памяти необходимо вызывать обе эти процедуры.

Использование расширенной памяти

Рекомендуется всегда использовать процедуру OvrInitEMS.

в случае неудачного завершения она

никак не повлияет на работу программы и не вызовет появления фатальной ошибки

в случае удачного завершения вся работа с оверлеями будет происходить в памяти, что приведет к значительному ускорению работы программы.

45

Управление

оверлейным

буфером

Механизм управления буфером.

Управление механизмом испытаний.

УПРАВЛЕНИЕ ОВЕРЛЕЙНЫМ БУФЕРОМ

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

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

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

Программист может увеличить размер буфера.

Тогда при загрузке в буфер очередного модуля программа проверит, достаточно ли в буфере свободного места, и, если места достаточно, загрузит новый модуль сразу за старым, который таким образом не будет уничтожен.

47

Для управления оверлейным буфером применяется функция OvrGetBuf,

а также процедуры OvrSetBuf и

OvrClearBuf.

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

48

49

50

Соседние файлы в папке Климов. Лекции