Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 модуль.Лекції з ВНС.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1 Мб
Скачать
☆

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

Оскільки розмір логічного адресного простору процесу може бути більше, ніж розмір виділеного йому розділу (або більше, ніж розмір найбільшого розділу), іноді використовується техніка, звана оверлей (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)

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

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

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

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

Динамічний розподіл. Свопінг.

Маючи справу з пакетними системами, можна обходитися фіксованими розділами і не використовувати нічого складнішого. У системах з розділенням часу можлива ситуація, коли пам'ять не в змозі містити всі призначені для користувача процеси. Доводиться удаватися до свопінгу (swapping) – переміщення процесів з головної пам'яті на диск і назад цілком. Часткове вивантаження процесів на диск здійснюється в системах із сторінковою організацією (paging) і буде розглянута нижче.

Вивантажений процес може бути повернений в той же самий адресний простір або в інше. Це обмеження диктується методом скріплення. Для схеми скріплення на етапі виконання можна завантажити процес в інше місце пам'яті.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]