1. Адресація віртуальної пам'яті

Матеріал з Вікі ЦДУ
Версія від 14:37, 28 квітня 2011; Чернявська Діана В. (обговореннявнесок)

(різн.) ← Попередня версія • Поточна версія (різн.) • Новіша версія → (різн.)
Перейти до: навігація, пошук

Linux використовує трьохрівневу структуру таблиці сторінок, що складається з наступних типів таблиць (кожна окрема таблиця має розмір рівний одній сторінці):

* Каталог сторінок.каталог таблиць першого рівня(PGD - Page Table Directory). Активний процес має єдиний каталог сторінок, розмір каталогу дорівнює одній сторінці. Кожен запис в каталог сторінок вказує на одну сторінку проміжного каталогу сторінок. Каталог сторінок активного процесу повинен знаходитись в активній пам'яті.

* Проміжний каталог сторінок.каталог таблиць другого рівня(PMD - Medium Page Table Directory). Може об'єднувати кілька сторінок. Кожен запис проміжного каталогу вказує на одну сторінку таблиці сторінок.

* Таблиця сторінок.таблиця дескрипторів(PTE - Page Table Entry). Може об'єднувати (містити в собі дані) кілька сторінок. Кожен запис вказує на одну віртуальну сторінку процесу.

Перетворення віртуальної адреси в фізичну відбувається відповідно 3 етапи. Береться показник (запис) PGD, що є в контексті кожного процесу, перетворюється в показник запису PMD, а показник PMD перетворюється в показник у таблиці дескрипторів PTE. І накінець, до реальної адреси, що вказує на початок сторінки додається зсув.

Для використання трьохрівневої структури таблиці сторінок віртуальна адреса в Linux розглядається як складова з чотирьох частин.

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

Структура таблиці сторінок Linux - платформонезалежна і розроблена для роботи з 64-бітовим процесором Alpha.