Завантаження процесу виконується ОС посторінково, при цьому частина сторінок розміщається в ОП, а частина на диску. Для кожного сегмента створюється своя таблиця сторінок, структура якої цілком збігається зі структурою таблиці сторінок, використовуваної при сторінковому розподілі. Для кожного процесу створюється таблиця сегментів, у якій вказуються адреси таблиць сторінок для всіх сегментів даного процесу. Адреса таблиці сегментів завантажується в спеціальний регістр процесора, коли активізується відповідний процес. На рис. 25 показана схема перетворення ВА у фізичну для даного методу.
Пошук
Оперативна пам'ять
Предмет:
Тип роботи:
Реферат
К-сть сторінок:
41
Мова:
Українська
5. Управління віртуальною пам'яттю
5.1 Організація ВП
ВП відрізняється від звичайної ОП тим, що якісь її рідко використовувані фрагменти можуть знаходитися на диску і довантажуватися в реальну ОП у міру необхідності. Така організація пам'яті дозволяє зняти обмеження, що накладається обсягом фізичної пам'яті, установленої на ЕОМ. Для реалізації ВП використовують, наприклад, динамічну переадресацію. Сегментом у термінах ВП називається область пам'яті з 2L сторінок. Спочатку по номеру в таблиці сегментів відшукується сегмент. Таблиця сегментів містить початкову адресу таблиці сторінок. Друга частина адресу використовується для звертання в цю таблицю, і по ній знаходиться фізичний адрес даної сторінки. Результати пошуку по таблицях запам'ятовуються у швидкодіючому асоціативному ЗП, названому TLB. Найбільш часто вживані адреси відкладаються в TLB і тому 98-99% звертань до пам'яті йдуть без перегляду таблиць.
Сторінкова організація пам'яті – організація, при якій адресний простір пам'яті розбивається на малі ділянки – сторінки. Використовується для керування пам'яттю в системах, що працюють у захищеному режимі. Як правило, така організація пам'яті має на увазі пейджинг – механізм ВП, при якому сторінки витісняються на диск і підкачуються з диска.
Кожен сегмент має зв'язок з дисковим простором, на якому зберігаються дані, відображувані в даний сегмент ВАП. Це може бути чи файл частина файлу на диску, чи ж це може бути область свопінгу, що файлом не є. Сегмент чи сегмент коду ініціалізованих даних звичайно зв'язаний з файлом, у якому зберігається програма, що виконується. Під зв'язком з файлом розуміється відображення віртуального сегмента і його сторінок на визначену область диска, з якої завантажуються дані віртуальних сторінок сегмента при їхньому переміщенні в ОП, а також куди містяться дані при витисненні віртуальних сторінок на диск. Віртуальні сторінки, що були споконвічно узяті з визначеного файлу, називаються vnode-сторінками, а сторінки, що з'явилися тільки при розгортанні процесу (а це звичайно сторінки чи стека неініціалізованих сегментів даних) – анонімними сторінками. Однак анонімні сторінки також мають зв'язок з файлом, у який вони виштовхуються при їхньому витисненні з фізичної пам'яті (так званий свопінг-прилад). На свопінг-прилад також указує vnode, тому в цій якості може виступати будь-як файл, а переміщення сторінок зі свопінг-прилад в пам'ять здійснюється тими ж функціями, що використовуються для vnode-сторінок.
Віртуальний адресний простір. Теоретично будь-який ВАП може бути розрідженим, так що здатність використовувати велику кількість розкиданих секцій не є в дійсності властивістю архітектури ВП. Іншими словами, будь-яка 32-х бітна машина повинна дозволяти процесу мати 50 000 секцій даних, розділених проміжками по 100 Мбайт, у межах від 0 до 4 Гбайт. Однак, у багатьох реалізаціях лінійна сторінкова таблиця від 0 до самої старшої використовуваної сторінки зберігається в пам'яті ядра. На машині з розміром сторінки в 1 Kб. ця конфігурація вимагає 4 мільйони елементів таблиці сторінок, роблячи таку схему дуже дорогою. Навіть при багаторівневій організації сторінкової таблиці така розрідженість у кращому випадку неприйнятна. Наприклад у ядрі Mach ОC UNIX при його розробці споконвічно ставилася задача повної підтримки розріджених адресних просторів.
Мал. 26. Адресний простір із призначеними областями, відображеними об'єктами і не використовуваними адресами
Ключовим поняттям, зв'язаним з використанням ВАП, є об'єкт пам'яті (memory object). Об'єкт пам'яті може бути сторінкою чи набором сторінок, а також може бути файлом чи більш спеціальною структурою даних, наприклад, записом БД. Об'єкт пам'яті може бути відображений у не використовувану частину ВАП, формуючи нову область, як це показано на рис. 26. Коли файл відображений у ВАП, то його можна читати в нього чи можна писати за допомогою звичайних машинних команд. Відображені (mapped) файли посторінково витісняються з пам'яті звичайним чином. Коли процес завершується, то його відображені в пам'ять файли автоматично повертаються у ФС разом із усіма змінами, що відбулися з їхнім змістом у той час, коли вони були відображені в пам'ять. Також можливо скасувати відображення файлу іншого об'єкта пам'яті, звільняючи його адресний простір і роблячи його доступним для послідовного його розподілу відображення.
Звичайно, відображення файлів у пам'ять не єдиний спосіб доступу до них. Їхній вміст можна читати і звичайним способом. Однак і в цьому випадку бібліотечні функції можуть відображати файли в пам'ять крім бажання користувача, а не використовувати систему в/в. Такий спосіб дозволяє сторінкам файлів використовувати систему ВП, а не спеціально виділені буфери де-небудь у системі.
Таблиця
Примітиви для керування віртуальним адресним простором
Виклик Опис
Allocate Робить область віртуального адресного простору використовуваною
Deallocate Звільняє область віртуального адресного простору
Map Відображає об'єкт пам'яті у віртуальний простір
Copy Копіює область в інший діапазон віртуальних адрес
Inherit