is_реклам:

пошук, категорії та ін. показати ▼

керування пам’яттю

керування пам’яттю
автор опубліковано

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

Простий розподіл пам’яті

фіксований процес розподілу пам’яті між процесами мал. 1. Фіксований процес розподілу пам’яті між процесами

Стратегія простого розподілу пам’ятібула найпершою. Її суть в тому, що доступна пам’ять ділиться на блоки фіксованого розміру, одні з яких доступні тільки ядру, а інші — решті процесів. Для поділу пам’яті на блоки використовуються різні апаратні і програмні методи.

Кожен блок пам’яті може бути зайнятим тільки одним процесом і буде зайнятий, навіть якщо процес ще не почав виконуватися. Ядро забезпечує захист блоків пам’яті, зайнятих різноманітними процесами.

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

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

Свопінг (swapping) — організація підкачки

Поки процеси і розміри оброблюваних даних були невеликими, всіх цілком влаштовував фіксований розподіл пам’яті. З появою багатозадачних операційних систем запущені процеси не завжди вміщались в оперативну пам’ять. Тому було вирішено вивантажувати на жорсткий диск дані (і процеси!), які в даний момент не використовуються. В оперативній пам’яті залишається тільки структура процесу, а все інше вивантажується. Ця процедура називається свопінгом або підкачкою.

Коли системі потрібні дані, що знаходяться в файлі (розділі) підкачки, система підвантажує їх в оперативну пам’ять, вивантаживши попередньо в файл підкачки інші дані.

Віртуальна пам’ять і сторінковий обмін

Закон Мерфі говорить:
програма збільшується до тих пір, доки не заповнить всю доступну пам’ять. (Більше законів можна прочитати в пості про закони Мерфі для програмістів )

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

Кожному процесу виділений віртуальний адресний простір, тобто діапазон адрес, обмежений тільки архітектурою процесора, а не об’ємом фізично встановленої оперативної пам’яті. Віртуальний адресний простір ділиться на сторінки однакового розміру, зазвичай 4 Кб. Фізична оперативна пам’ять ділиться на так звані фрейми, розмір кожного фрейму дорівнює розміру сторінки.

Перед кожним зверненням до пам’яті процесор робить запит до так званого блоку керування пам’яттю (MMU, Memory Management Unit), щоб він перетворив віртуальну адресу в фізичну.

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

мал 2. Перетворення віртуального адресу в фізичний мал 2. Перетворення віртуального адресу в фізичний

мал. 3. запис таблиці сторінок мал. 3. запис таблиці сторінок

Найбільш важливий біт - біт присутності сторінки. Якщо він встановлений, то ця сторінка збережена у фреймі, номер якого (адреса) визначений у фізичній адресі. Інші біти в таблиці визначають права доступу для сторінки (read / write / execute) або використовуються для буферу. Таблиця сторінок індексована номером віртуальної сторінки.

Розглянемо приклад трансляції (перетворення) віртуальної адреси у фізичну.

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

мал. 4. принцип перетворення віртуального адресу в фізичниймал. 4. принцип перетворення віртуального адресу в фізичний

За номером сторінки шукається стрічка в таблиці сторінок. Біт присутності в цій стрічці вказує чи знаходиться віртуальна сторінка в фізичній пам’яті комп'ютера (біт P встановлений в 1) або в файлі (розділі) підкачки на диску.

Якщо сторінка присутня в фізичній пам’яті, то до фізичної адреси (номера фрейму) додається зміщення, і потрібна фізична адреса готова. Якщо сторінка вивантажена з оперативної пам’яті (біт P встановлений в 0), то процесор (або його MMU) викликає переривання "Сторінка не знайдена" (Page Not Found), яке має бути оброблене операційною системою.

У відповідь на переривання "Сторінка не знайдена" операційна система має завантажити потрібну сторінку в фізичну оперативну пам’ять. Якщо зайняті не всі фрейми, то ОС завантажує сторінку з файлу підкачки у вільний фрейм, виправляє таблицю сторінок і закінчує обробку переривання.

Якщо вільного фрейму немає, то операційна система має вирішити, яку сторінку перемістити з фрейму в область підкачки, щоб звільнити фізичну пам’ять. У звільнений фрейм буде завантажена сторінка, яка першопочатково викликала переривання. Після цього ОС виправить біти присутності в записах про обидві сторінки і закінчить обробку переривання.

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

В x86-сумісних комп’ютерах кожна програма може мати декілька адресних просторів по 4 Гб. В захищеному режимі значення, завантажені в сегментні регістри, використовуються як індекси таблиці дескрипторів, яка описує властивості окремих сегментів, або областей, пам’яті. Розгляд сегментів виходить далеко за межі даної статті.

матеріал взятий з книги Рудольфа Марека "Ассемблер на примерах. Базовый курс" із серії "Просто о сложном".

схоже за тегами

Залишити коментар:

Яндекс цитирования UA TOP Bloggers