Использование вложенного пейджинга для пейджинга на уровне приложений - PullRequest
1 голос
/ 07 апреля 2011

Я не слишком знаком с функцией виртуализации Nested Paging новых процессоров, и поэтому этот вопрос может быть не очень хорошим вопросом, но я подумал над идеей:

Можно ли использовать вложенные подкачки в наших приложениях для включения нашего собственного механизма подкачки (что-то вроде файлов с отображением в памяти)?

Это может позволить вам перенаправлять доступ к памяти из любого места приложения в любое другое место, даже если у вас нет доступа к перенаправляемому коду. (Это даже не потребует сопоставления с файлами - вы можете создавать данные на лету, когда происходит сбой страницы.)

1 Ответ

1 голос
/ 28 апреля 2011

Я не думаю, что это возможно.Я не знаю деталей, но я думаю, что настройка вложенных таблиц страниц должна быть выполнена в режиме гипервизора, который даже более привилегирован, чем режим ядра.Чтобы использовать его в пользовательском режиме, вам понадобится гипервизор, который предоставит некоторый API для пользовательского режима (или для режима ядра, который затем предоставит его для пользовательского режима).Это не будет простым вопросом использования некоторых расширенных инструкций процессора из приложения пользовательского режима.Я сомневаюсь, что выигрыш оправдал бы требуемое усилие.

Правка: звучит так, как будто я прав.Цитирование Вложенный пейджинговый документ AMD-V ™ , раздел 4.2.3: «Использование вложенного пейджинга»:

Вложенный пейджинг - это функция, предназначенная для использования гипервизором.Гость не может наблюдать никаких отличий (кроме производительности) во время работы под гипервизором с использованием вложенной подкачки.Вложенный пейджинг не требует никаких изменений в гостевом программном обеспечении.

...