Смекни!
smekni.com

Планування ресурсу Оперативна память (стр. 5 из 8)

Рис. 24. Розподіл пам'яті сегментами

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

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

Недоліком даного методу розподілу пам'яті є фрагментація на рівні сегментів і більш повільне в порівнянні зі сторінковою організацією перетворення адреси.

4.4. Сторінково-сегментний розподіл

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

Віртуальний адрес (g , p , S)


Таблиці сегментів

Таблиця сторінок

сегменту g


Фізичний адрес

Рис. 25. Схема перетворення віртуальної адреси у фізичну для

сегментно-сторінкової організації пам'яті

5. Управління віртуальною памяттю

5.1. Організація ВП

ВП відрізняється від звичайної ОП тим, що якісь її рідко використовувані фрагменти можуть знаходитися на диску і довантажуватися в реальну ОП у міру необхідності. Така організація пам'яті дозволяє зняти обмеження, що накладається обсягом фізичної пам'яті, установленої на ЕОМ. Для реалізації ВП використовують, наприклад, динамічнупереадресацію. Сегментом у термінах ВП називається область пам'ятіз 2Lсторінок. Спочатку по номеру в таблиці сегментів відшукується сегмент. Таблиця сегментів міститьпочаткову адресу таблиці сторінок. Друга частина адресу використовується для звертання в цютаблицю, і по нійзнаходитьсяфізичний адрес даноїсторінки. Результатипошуку по таблицяхзапам'ятовуються у швидкодіючомуасоціативному ЗП, названомуTLB. Найбільш часто вживаніадресивідкладаються в TLB і тому 98-99% звертань до пам'ятійдуть без перегляду таблиць.

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

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

Віртуальний адресний простір. Теоретично будь-який ВАП може бути розрідженим, так що здатність використовувати велику кількість розкиданих секцій не є в дійсності властивістю архітектури ВП. Іншими словами, будь-яка 32-х бітна машина повинна дозволяти процесу мати 50 000 секцій даних, розділених проміжками по 100 Мбайт, у межах від 0 до 4 Гбайт. Однак, у багатьох реалізаціях лінійна сторінкова таблиця від 0 до самої старшої використовуваної сторінки зберігається в пам'яті ядра. На машині з розміром сторінки в 1 Kб. ця конфігурація вимагає 4 мільйони елементів таблиці сторінок, роблячи таку схему дуже дорогою. Навіть при багаторівневій організації сторінкової таблиці така розрідженість у кращому випадку неприйнятна. Наприклад у ядрі Mach ОCUNIX при його розробці споконвічно ставилася задача повної підтримки розріджених адресних просторів.

Мал. 26. Адресний простір із призначеними областями,
відображеними об'єктами і не використовуваними адресами

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

Звичайно, відображення файлів у пам'ять не єдиний спосіб доступу до них. Їхній вміст можна читати і звичайним способом. Однак і в цьому випадку бібліотечні функції можуть відображати файли в пам'ять крім бажання користувача, а не використовувати систему в/в. Такий спосіб дозволяє сторінкам файлів використовувати систему ВП, а не спеціально виділені буфери де-небудь у системі.

Таблиця
Примітиви для керування віртуальним адресним простором

Виклик Опис
Allocate Робить область віртуального адресного простору використовуваною
Deallocate Звільняє область віртуального адресного простору
Map Відображає об'єкт пам'яті у віртуальний простір
Copy Копіює область в інший діапазон віртуальних адрес
Inherit Встановляє атрибут спадкування для області
Read Читає дані з адресного простору іншого процесу
Write Записує дані в адресний простір іншого процесу

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