Инвертированные таблицы страниц
Однако поскольку 64-разрядные компьютеры встречаются все чаще, ситуация радикально меняется. Если адресное пространство увеличивается до 264 байт с размером страницы 4 Кбайт, нам требуется таблица страниц с числом записей 252. Если каждая запись равна 8 байт, таблица займет больше 30 Тбайт. Выделение 30 Тбайт только для таблицы страниц не реально уже сейчас и не будет реальным когда-либо в будущем. Следовательно, для 64-разрядного страничного виртуального пространства необходимо другое решение.
Одним из таких решений является инвертированная таблица страниц.
В этой модели таблица содержит по одной записи на страничный блок в реальной памяти, а не на страницу в виртуальном адресном пространстве. Например, при 64-раз- рядных виртуальных адресах, размере страниц 4 Кбайт и оперативной памятиобъемом 256 Мбайт инвертированная таблица страниц потребует всего лишь 65 536 записей. Каждая запись позволяет отслеживать, что (процесс, виртуальная страница) расположено в данном страничном блоке.
Хотя инвертированные таблицы страниц экономят много места, по крайней мере, когда виртуальное адресное пространство намного превышает физическую память, они имеют серьезный недостаток: преобразование виртуального адреса в физический значительно усложняется. Когда процесс п обращается к виртуальной странице /?, аппаратное обеспечение не может больше найти физическую страницу, отталкиваясь от номера/? как от индекса в таблице страниц. Вместо этого оно должно производить поиск записи (я, р) во всей инвертированной таблице страниц.
Более того, этот поиск должен выполняться при каждом обращении к памяти, а не только при ошибке отсутствия страницы. Операция поиска в таблице размером 64 К записей при каждом обращении к памяти вовсе не повысит быстродействие вашей машины.
Выйти из этого затруднительного положения позволяет буфер быстрого преобразования адресов (TLB). Если в TLB-буфер удастся включить все часто используемые страницы, трансляция адреса будет происходить так же быстро, как и в случае обычных таблиц страниц. Но при промахе в TLB-буфере поиск в инвертированной таблице страниц должен выполняться программно. Один из возможных способов усовершенствовать поиск — поддерживать хеширование виртуальных адресов. Все виртуальные страницы, находящиеся в данный момент в памяти и имеющие одинаковое значение хеш-функции, сцепляются друг с другом (рис. 4.12). Если хеш-таблица состоит из такого же количества ячеек, сколько есть в машине физических страниц, средняя цепочка будет длиной только в одну запись, что значительно повысит скорость отображения адресов. Как только обнаруживается номер страничного блока, новая пара (виртуальная, физическая) помещается в TLB-буфер, а вызвавшая ошибку команда перезапускается.
Инвертированные таблицы страниц в настоящее время используются на некоторых рабочих станциях компаний IBM, Sun и Hewlett-Packard и будут встречаться все чаще, так как 64-разрядные машины получают все большее распространение.
О других методах управления виртуальной памятью большого размера можно узнать в [62, 113, 114]. Некоторые проблемы реализации виртуальной памяти, связанные с аппаратным обеспечением, рассмотрены в [65].
4.4.
Еще по теме Инвертированные таблицы страниц:
- ПОВЕДЕНИЕ ИНВЕРТИРОВАННОЕ
- Первая страница
- Таблица 2 Таблица баллов лучей мандалы
- ТАБЛИЦА ИЗОХРОМАТИЧЕСКАЯ
- Таблица. Иерархия функций
- Таблица типов
- Таблица 5. Диапазоны излучений патогенных микрооганизмов
- таблица болезней и их причин
- Периодическая таблица переживаний
- Таблица 3.1. Виды нарушений в когнитивном процессе
- Таблица №1 На что мы тратим свое время?
- ВВЕДЕНИЕ: ТАБЛИЦА РЕЗУЛЬТАТОВ НАБЛЮДЕНИЯ ЗА ЛЮДЬМИ
- ВВЕДЕНИЕ: ТАБЛИЦА РЕЗУЛЬТАТОВ НАБЛЮДЕНИЯ ЗА ЛЮДЬМИ
- 4. Таблица кратности сроков лишения свободы
- Таблица 6. Русский алфавит в девятиарканной системе
- Таблица 8. Энергетические свойства продуктов питания
- Таблица 3 Некоторые энергослоги числовой мандалы
- Таблица последствий смещения позвонков и дисков
- Таблица контент-критериев для анализа показаний