Overlay (программирование)

Overlay (оверлей) — метод программирования, позволяющий создавать программы, занимающие больше оперативной памяти, чем установлено в системе. Метод заключается в разделении программы на исполняемые блоки, которые поочерёдно записываются в одну область памяти поверх предыдущих, выполняют свои функции и перезаписываются следующими. Встроенные компьютеры часто используют оверлеи, так как обычно Система на кристалле содержит мало памяти и не поддерживает виртуальную память.

ИспользованиеПравить

Метод предполагает разделение программы на фрагменты, называемые оверлеями (overlays). Размер каждого оверлея ограничен, согласно размеру доступной памяти. Место в памяти, куда будет загружен оверлей называется регионом (region, destination region). Хотя часто программы используют только один блок памяти для загрузки различных оверлеев, возможно определение нескольких регионов различного размера. Менеджер оверлеев, иногда являющийся частью ОС, подгружает запрашиваемый оверлей из внешней памяти (НЖМД, флеш-память, Ппзу // Научно-технический энциклопедический словарь.) в регион. Некоторые редакторы связей (компоновщики) поддерживают работу с оверлеями.[1]

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

Оверлеи в PC/MS DOSПравить

Во времена DOS оверлеи были популярны, так как операционные системы и большинство компьютеров не обеспечивали работу с виртуальной памятью. Изначально IBM PC даже не использовал НЖМД, таким образом, единственным вторичным устройством хранения являлся НГМД 5-1/4".

Ранние IBM PC имели очень мало ОЗУ по современным меркам. Тогда как дискеты 5-1/4" могли хранить 360 килобайт, ОЗУ компьютеров 1981—1985 годов было, в основном, еще меньше (64, 128 или 256 килобайт, иногда 384 кб). Первые модели IBM PC имели от 16 до 64 кб. Наибольший объем памяти, который можно было установить в систему без специальных технологий, был ограничен 640K. Для больших объемов требовалось использовать стандарты EMS (expanded memory) и XMS (extended memory) и устанавливать дополнительную память на картах ISA. Спорный метод для тяжёлых для СУБД , требующий дополнительных инвестиций. Как финансовых, так и интеллектуальных.

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

Таким образом, для больших программ приходилось использовать оверлеи.[2] В DOS двоичные файлы, содержащие оверлеи, часто имели расширение .OVL

ПримечанияПравить

  1. The GNU Linker documentation: Overlay Description (3 июня 2008). Архивировано 12 августа 2012 года.
  2. all about the .ovl file type. www.cryer.co.uk. Дата обращения: 27 июня 2016.

См. такжеПравить