18.5. Оптимизация работы оверлеев
В Турбо Паскале версии 5.5 реализован специальный алгоритм оптимизации подгрузки наиболее часто используемых оверлейных процедур и функций. В оверлейном буфере в общем случае может разместиться несколько не самых крупных оверлейных модулей. Если их объявлено несколько, то, как правило, так и происходит. Администратор следит за заполнением буфера, передвигая в нем при необходимости подгрузки нового модуля уже загруженные модули. Передвижение происходит от начала к концу буфера. Если же таким способом места в начале буфера не освободить, то наиболее «долго» сидящий в буфере (он же ближний к концу буфера) оверлей выгружается (если он, конечно, не активен в данный момент), высвобождая часть буфера. Можно активизировать механизм оптимизации, нахо-
- 401 -
дящийся по умолчанию в отключенном состоянии. Он заключается в следующем: когда оверлей подходит близко к концу буфера, он ставится на «проверку». Если в течение некоторого «испытательного срока» происходит вызов подпрограммы, которая находится в данном оверлее, то ему будет дана «отсрочка» и он не будет выгружен из памяти. Вместо этого он будет переброшен в начало буфера и сможет сделать еще один «круг» по нему. Если же за это время вызов не поступит, то оверлей при первой же необходимости будет выгружен из памяти. Таким образом, наиболее часто используемые оверлеи хранятся как бы в кольцевом буфере, в то время как малоактивные выходят из буфера без задержек. Этими процессами управляют две подпрограммы модуля Overlay.