Оверлейна структура

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

Потреба в такому способі завантаження з'являється, якщо логічний адресний простір системи малий, наприклад 1 Мбайт (MS-DOS) або навіть всього 64 Кбайта (PDP-11), а програма відносно велика. На сучасних 32-розрядних системах, де віртуальний адресний простір вимірюється гігабайтами, проблеми з браком пам'яті вирішуються іншими способами (див. розділ "Віртуальна пам'ять").

Рис. 9.5. Організація структури з перекриттям. Можна по черзі завантажувати в пам'ять гілки A-B, A-C-D і A-C-E програми

Коди гілок оверлейної структури програми знаходяться на диску як абсолютні образи пам'яті і прочитуються драйвером оверлеїв при необхідності. Для опису оверлейної структури зазвичай використовується спеціальна нескладна мова (overlay description language). Сукупність файлів виконуваної програми доповнюється файлом (зазвичай з розширенням .odl), що описує дерево викликів усередині програми. Для прикладу, приведеного на мал. 8.5, текст цього файлу може виглядати так:

A-(B,C)

C-(D,E)

Синтаксис подібного файлу може розпізнаватися завантажувачем. Прив'язка до фізичної пам'яті відбувається у момент чергового завантаження одного з гілок програми.

Оверлеї можуть бути повністю реалізовані на призначеному для користувача рівні в системах з простий файловою структурою. ОС при цьому лише робить дещо більше операцій введення-виводу. Типове рішення – породження лінкером спеціальних команд, які включають завантажувач кожного разу, коли потрібне звернення до однієї з гілок програми, що перекриваються.

Ретельне проектування оверлейної структури віднімає багато часу і вимагає знання пристрою програми, її коди, даних і мови опису оверлейної структури. З цієї причини застосування оверлеїв обмежене комп'ютерами з невеликим логічним адресним простором. Як ми побачимо надалі, проблема оверлейних сегментів, контрольованих програмістом, відпадає завдяки появі систем віртуальної пам'яті.

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