Методи розподілу пам'яті без використання зовнішньої пам'яті

§ Схема з фіксованими розділами.

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

Рис 20. Схема з фіксованими розділами: (a) із загальною чергою процесів,

(B) з окремими чергами процесів.

Підсистема управління пам'яттю в цьому випадку виконує наступні завдання:

· Порівнює розмір програми, що надійшла на виконання, і вільних розділів, вибирає відповідний розділ,

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

· Стратегія першого підходящого (First fit). Завдання поміщається в перший відповідний за розміром розділ.

· Стратегія найбільш підходящого (Best fit). Завдання поміщається в той розділ, де йому найбільш тісно.

· Стратегія найменш придатного (Worst fit). При приміщенні в найбільший розділ в ньому залишається достатньо місця для можливого розміщення ще одного процесу.

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

Недоліки цієї схеми:

· Число одночасно виконуваних процесів обмежена числом розділів,

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

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

Мал. 21. Організація структури з перекриттям.

Можна по черзі завантажувати в пам'ять гілки A-B, A-C-D і A-C-E програми. Коди гілок оверлейной структури програми знаходяться на диску як абсолютні образи пам'яті і зчитуються драйвером оверлеїв при необхідності.

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

Наприклад, для прикладу, наведеного на малюнку 21, текст цього файлу може виглядати так:

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

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

§ Схема зі змінними розділами

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

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

Мал. 22. Розподіл пам'яті динамічними розділами

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

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

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

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

§ Схема з переміщуваними розділами

Мал. 23. Розподіл пам'яті перемещаемвмі розділами

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

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

Було запропоновано перекласти проблему на комп'ютер. Розвиток архітектури комп'ютерів привело до значного ускладнення організації пам'яті, відповідно, ускладнилися і розширилися завдання операційної системи з управління пам'яттю. Одним з головних удосконалень архітектури стала поява віртуальної пам'яті (virtual memory). Вона вперше була реалізована в 1959 р на комп'ютері Атлас, розробленому в Манчестерському університеті, і стала популярною тільки через десятиліття.

Визначення. віртуальним називається ресурс, який користувачу чи користувача програмі представляється що володіє властивостями, якими він насправді не володіє.

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

Визначення: віртуальна пам'ять ¾ це сукупність програмно-апаратних засобів, що дозволяють користувачам писати програми, розмір яких перевершує наявну оперативну пам'ять; для цього віртуальна пам'ять вирішує наступні завдання:

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

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

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

Таким чином, за допомогою віртуальної пам'яті зазвичай вирішують двезадачі:

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

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

· Обсяг введення-виведення для вивантаження частини програми на диск може бути менше, ніж у варіанті класичного свопінгу, в результаті, кожна програма буде працювати швидше.

По-друге, забезпечення контролю доступу до окремих сегментів пам'яті і зокрема захист призначених для користувача програм один від одного і захист ОС від призначених для користувача програм - забезпечення захисту.

Схожі статті