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

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

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

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

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

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

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

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

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

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

32-бітова архітектура Pentium/x86 має тільки двохрівневий механізм сторінкової організації, і програмне забезпечення Linux використовує двохрівневу схему шляхом визначення розміру проміжного каталогу рівного одній сторінці.