Оверлей (програмування)

метод програмування

Оверлей (від англ. overlay — накладення, перекриття) — метод програмування, що дозволяє створювати програми, які займають більше оперативної пам'яті, ніж установлено в системі. Метод полягає в поділі програми на виконувані блоки, які почергово записуються в одну ділянку пам'яті поверх попередніх, виконують свої функції і перезаписуються наступними. Вбудовані комп'ютери часто використовують оверлеї, бо зазвичай система на кристалі містить мало пам'яті і не підтримує віртуальної пам'яті.

Використання

ред.

Метод передбачає поділ програми на фрагменти, звані оверлеями. Розмір кожного оверлея обмежений розміром доступної пам'яті. Місце в пам'яті, куди буде завантажено оверлей, називають регіоном (англ. 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 кБ. Найбільший обсяг пам'яті, який можна було встановити в систему без спеціальних технологій, був обмежений 640 кБ. Для більших обсягів доводилось використовувати стандарти 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. Архів оригіналу за 2 жовтня 2009. Процитовано 27 червня 2016.

Див. також

ред.