Проектирование программного обеспечения. Николаев С.В. - 118 стр.

UptoLike

Составители: 

118
Оверлейным может быть только программный код, данные оверлейными
не бывают. Программы, использующие оверлейные структуры, обычно тре-
буют меньше памяти, но они работают медленнее, так как требуется допол-
нительное время для считывания кода с диска в память. Оверлейные части
определяются посредством заключения их в скобки при задании списка объ-
ектных файлов
для компоновщика. Каждый модуль или комбинация модулей
в скобках обозначают один оверлей. К примеру, зададим в командной строке
link (или в процессе ввода ответов в диалоговом режиме) в поле объектных
файлов следующий список (расширения в именах файлов опущены - подра-
зумеваются .obj):
mod1+(mod2+mod3)+(mod4+mod5)+mod6+(mod7)
В данном примере модули (mod2+mod3), (mod4+mod5) и (mod7) являются
оверлеями.
Как только управление передается на данные модули, они считы-
ваются с диска в память. Модули mod1 и mod6, а также любые модули из
библиотек составляют "резидентную часть" (или "корень") оверлейной про-
граммы. Оверлеи загружаются в один и тот же раздел памяти, так, что в от-
дельный момент времени резидентным является только
один модуль.
Компоновщик передает вызовы из корня в оверлей и вызовы из одного
оверлея в другой с помощью прерывания, за которым следует идентификатор
модуля и смещение. По умолчанию номер прерывания 63 (3F в
шестнадцатеричной системе). Для изменения номера прерывания можно
воспользоваться опцией компоновщика /O. Эта опция должна применяться
только в программах, использующих оверлейные
структуры и порождающих
другие оверлейные структуры. В данном случае каждая программа должна
использовать отдельный номер оверлейного прерывания, откуда следует, что
хотя бы одна программа должна быть скомпонована с данной опцией.
Ограничения на оверлеи. Оверлейными можно сделать только те модули,
на которые передается управление и осуществляется возврат с помощью
стандартного 32-битового вызова
или возврата. Однако, вызовы функций,
определяемые ключевым словом near (ближний), являются 16-битовыми. Это
означает, что нельзя сделать оверлейными модули, содержащие "ближние"
функции (процедуры), если остальные модули вызывают данные процедуры.
3.7. Тестирование
Основным постулатом программирования является утверждение о том,
что "программ без ошибок не бывает". Как бы это не казалось парадоксаль-
ным, но это действительно так, и вся практика создания и использования
программного обеспечения только подтверждает истинность этого постулата.
Другое дело, что количество остающихся ошибок и возможные последствия