Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лек 11.doc
Скачиваний:
3
Добавлен:
03.09.2019
Размер:
167.42 Кб
Скачать

Переміщувані розділи

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

Рис. 11.4. Розподіл пам'яті переміщуваними розділами

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

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

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

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

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

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

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

  • перетворить віртуальні адреси у фізичні.

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

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

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