Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lektsiya_10.docx
Скачиваний:
5
Добавлен:
05.09.2019
Размер:
2 Mб
Скачать

10.3.5. Свопінг

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

Різновидом віртуальної пам'яті є свопінг (swapping) або звичайна підкачка. На рис. 10.12 показаний графік залежності коефіцієнта завантаження процесора в залежності від числа одночасно виконуваних процесів і частки часу, проведеного цими процесами в стані очікування вводу-виводу. Для завантаження процесора на 90% достатньо всього трьох рахункових задач. Однак для того, щоб забезпечити таку ж завантаження інтерактивними завданнями, які виконують інтенсивний введення-виведення, будуть потрібні десятки таких завдань. Необхідною умовою для виконання задачі є завантаження її в оперативну пам'ять, обсяг якої обмежений. У цих умовах був запропонований метод організації обчислювального процесу, званий свопінгу.

Рис. 10.12. Залежність завантаження процесора від числа задач і інтенсивності вводу-виводу

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

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

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

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

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