Відмінності між версіями «1. Адресація віртуальної пам'яті»
Рядок 4: | Рядок 4: | ||
Активний процес має єдиний каталог сторінок, розмір каталогу дорівнює одній сторінці. Кожен запис в каталог сторінок вказує на одну сторінку проміжного каталогу сторінок. Каталог сторінок активного процесу повинен знаходитись в активній пам'яті. | Активний процес має єдиний каталог сторінок, розмір каталогу дорівнює одній сторінці. Кожен запис в каталог сторінок вказує на одну сторінку проміжного каталогу сторінок. Каталог сторінок активного процесу повинен знаходитись в активній пам'яті. | ||
− | '''* Проміжний каталог сторінок.''''' | + | '''* Проміжний каталог сторінок.'''''каталог таблиць другого рівня''(PMD - Medium Page Table Directory). Може об'єднувати кілька сторінок. Кожен запис проміжного каталогу вказує на одну сторінку таблиці сторінок. |
'''* Таблиця сторінок.'''''таблиця дескрипторів''(PTE - Page Table Entry). Може об'єднувати (містити в собі дані) кілька сторінок. Кожен запис вказує на одну віртуальну сторінку процесу. | '''* Таблиця сторінок.'''''таблиця дескрипторів''(PTE - Page Table Entry). Може об'єднувати (містити в собі дані) кілька сторінок. Кожен запис вказує на одну віртуальну сторінку процесу. | ||
+ | |||
+ | Перетворення віртуальної адреси в фізичну відбувається відповідно 3 етапи. Береться показник (запис) PGD, що є в контексті кожного процесу, перетворюється в показник запису PMD, а показник PMD перетворюється в показник у таблиці дескрипторів PTE. І накінець, до реальної адреси, що вказує на початок сторінки додається зсув. | ||
+ | |||
+ | Для використання трьохрівневої структури таблиці сторінок віртуальна адреса в Linux розглядається як складова з чотирьох частин. | ||
+ | |||
+ | ''Ліве''(найбільше, що значиме) поле використовується в якості індексу в каталозі сторінок; ''наступне (друге)'' поле служить в якості індеексу в проміжному каталозі сторінок. ''Третє'' поле представляє собою індекс таблиці сторінок, а ''четверте'' - зсув в межах сторінки пам'яті. | ||
+ | |||
+ | Структура таблиці сторінок Linux - платформонезалежна і розроблена для роботи з 64-бітовим процесором Alpha. |
Поточна версія на 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.