Інвертована таблиця сторінок

Не дивлячись на багаторівневу організацію, зберіганням декількох таблиць сторінок великого розміру як і раніше є проблему. Її значення особливе актуально для 64-розрядної архітектури, де число віртуальних сторінок дуже велике. Варіантом рішення є застосування інвертованої таблиці сторінок (inverted page table). Цей підхід застосовується на машинах POWERPC, деяких робочих станціях Hewlett-Packard, IBM RT, IBM AS/400 і ряду інших.

У цій таблиці міститься по одному запису на кожен сторінковий кадр фізичної пам'яті. Істотно, що достатньо однієї таблиці для всіх процесів. Таким чином, для зберігання функції відображення потрібна фіксована частина основної пам'яті, незалежно від розрядності архітектури, розміру і кількості процесів. Наприклад, для комп'ютера Pentium з 256 Мбайт оперативної пам'яті потрібна таблиця розміром 64 Кбайт рядків.

Не дивлячись на економію оперативної пам'яті, застосування інвертованої таблиці має істотний мінус – записи в ній (як і в асоціативній пам'яті) не відсортовані за збільшенням номерів віртуальних сторінок, що ускладнює трансляцію адреси. Одін із способів вирішення даної проблеми – використання хеш-таблицы віртуальних адрес. При цьому частина віртуальної адреси, що є номером сторінки, відображається в хеш-кодування-таблицю з використанням функції хешування. Кожній сторінці фізичної пам'яті тут відповідає один запис в хеш-таблиці і інвертованій таблиці сторінок. Віртуальні адреси, що мають одне значення хеш-функции, зчіплюються один з одним. Зазвичай довжина ланцюжка не перевищує двох записів.