Где хранится хешированная таблица страниц - PullRequest
0 голосов
/ 18 февраля 2019

Что я понимаю, мы не можем гарантировать большой объем (больше, чем размер страницы) непрерывной памяти.Если размер самой таблицы страниц достаточно велик, что не может быть сохранено на 1 странице, это проблема.Таким образом, мы снова делаем пейджинг на таблицу страниц, что называется многоуровневой таблицей страниц.Но многоуровневая таблица страниц не является хорошим выбором, если адрес больше 32 бит, потому что больше вычислений требует больше вычислений.

Чтобы избежать этой хешированной таблицы страниц, используется.

Насколько я понимаю, размер хешированной таблицы страниц должен быть меньше размера страницы.Так что для большого размера адреса будет много коллизий.Если размер страницы составляет 12 бит, таблица страниц состоит из 2 ^ 52 записей, а размер хеш-таблицы будет равен 2 ^ 12 (приблизительный точный расчет не известен), а затем для каждого связанного списка размером в индекс 2 ^ 40.Так как это будет возможно?Поэтому я предполагаю, что hashtable собирается хранить с использованием других методов или в другом месте.Книга концепций операционной системы dint объясняет многое об этом и о других сайтах.

Я прочитал концепцию операционной системы, девятое издание, страница 380.

1 Ответ

0 голосов
/ 18 февраля 2019

Я понимаю, что мы не можем гарантировать большой объем (больше, чем размер страницы) непрерывной памяти.

Почему?Часто диспетчер физической памяти должен иметь возможность обрабатывать выделение физически смежных буферов для (некоторых) драйверов устройств.

Поэтому мы снова выполняем разбиение по страницам на таблицу страниц, которая называется многоуровневой таблицей страниц.Но многоуровневая таблица страниц не является хорошим выбором, если адрес больше 32 бит, потому что больше вычислений требует больше вычислений.

Почему?Большинство процессоров используют многоуровневые таблицы страниц;и затем иметь TLB («буфер просмотра перевода»), чтобы избежать затрат на поиск в таблицах страниц.Современные 80x86 идут дальше и также имеют кэши структуры подкачки более высокого уровня (в дополнение к TLB).

Насколько я понимаю, размер хешированной таблицы страниц [indexable] должен быть меньше размера страницы.Так что для большого размера адреса будет много коллизий.Если размер страницы составляет 12 бит, таблица страниц состоит из 2 ^ 52 записей, а размер хеш-таблицы будет равен 2 ^ 12 (приблизительный точный расчет не известен), а затем для каждого связанного списка размером в индекс 2 ^ 40.Итак, как это будет возможно?

Дело в том;если перевода нет в хеш-таблице (например, из-за ограниченного размера хеш-таблицы), обычно ЦП генерирует ошибку, чтобы попросить ОС обратиться за помощью, а ОС вычисляет перевод и помещает его в хеш-таблицу (после исключения чего-либоостальное из хеш-таблицы, чтобы освободить место).Конечно, ОС, вероятно, будет использовать свою собственную многоуровневую таблицу страниц, чтобы выяснить перевод (запихнуть в хеш-таблицу);так что вся эта «хэш-таблица» в итоге становится целым слоем раздражающего дополнительного раздувания (по сравнению с процессорами, которые сами поддерживают многоуровневые таблицы страниц).

...