Банк лекцій - формальні, технічні, природничі, суспільні, гуманітарні, і інші науки

8.5.2. управління пам'яттю

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

Як ми вже знаємо, що запам'ятовують пристрої комп'ютера поділяють, як мінімум, на два рівня: основну (оперативну) і вторинну (зовнішню) пам'ять.

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

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

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

Банк лекцій - формальні, технічні, природничі, суспільні, гуманітарні, і інші науки

Методи розподілу пам'яті. Всі методи управління пам'яттю можуть бути розділені на два класи: методи, які не використовують переміщення процесів між оперативною пам'яттю і диском, і методи, які роблять це (рисунок 8.3).

Банк лекцій - формальні, технічні, природничі, суспільні, гуманітарні, і інші науки

Малюнок 8.3 - Класифікація методів розподілу пам'яті


Кожен розділ може мати свою чергу процесів, а може існувати і глобальна чергу для всіх розділів (рисунок 8.4).

Ця схема була реалізована в IBM OS / 360 (MFT), DEC RSX-11 і ряді інших систем.

Очевидний недолік цієї схеми - число одночасно виконуваних процесів обмежена числом розділів.

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

Малюнок 8.4 - Розподіл пам'яті фіксованими розділами

а) - із загальною чергою; б) - з окремими чергами

Банк лекцій - формальні, технічні, природничі, суспільні, гуманітарні, і інші науки

Малюнок 8.5 - Динаміка розподілу пам'яті між процесами

Завданнями операційної системи при реалізації даного методу керування пам'яттю є:

· Завантаження програми в виділений їй розділ і коректування таблиць вільних і зайнятих областей;

· Після завершення програми коригування таблиць вільних і зайнятих областей.

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

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

При роботі з віртуальною пам'яттю ОС вирішує наступні завдання:

· Розміщує дані в запам'ятовуючих пристроях різного типу, наприклад, частина програми в оперативній пам'яті, а частина - на диску;

· Переміщує по мірі необхідності дані між пристроями, що запам'ятовують різного типу, наприклад, підвантажує потрібну частину програми з диска в оперативну пам'ять;

Найбільш поширеними реалізаціями віртуальної пам'яті є сторінкове. сегментное і сторінково-сегментний розподіл пам'яті, а також свопинг.

ВС - віртуальна сторінка; ФС - фізична сторінка;
ВП - зовнішня пам'ять

Малюнок 8.6 - Сторінкове розподіл пам'яті

Банк лекцій - формальні, технічні, природничі, суспільні, гуманітарні, і інші науки

Малюнок 8.8 - Розподіл пам'яті сегментами

Сторінково-сегментний розподіл. Зберігати в пам'яті сегменти великого розміру цілком так само незручно, як і зберігати процес безперервним блоком. Напрошується ідея розбивки сегментів на сторінки. У цьому випадку віртуальний простір процесу ділиться на сегменти, а кожен сегмент в свою чергу ділиться на віртуальні сторінки, які нумеруються в межах сегмента (рисунок 8.9).

Малюнок 8.9 - сторінковий-сегментний розподіл пам'яті

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

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


***** Яндекс.Пошук по сайту: