Как правильно установить привилегии в записях каталога страниц? - PullRequest
2 голосов
/ 28 января 2020

Прежде всего: этот вопрос касается архитектуры IA-32 (x86).

У меня есть вопрос об устаревшей (не PSE, не PAE) пейджинговой связи. В устаревшей подкачке у нас есть каталог страниц с 1024 записями, каждая из которых указывает на таблицу страниц. Каждая таблица страниц содержит 1024 записи (это страницы), каждая из которых указывает на выровненный 4096-байтовый физический адрес.

Между тем, каждая отдельная запись каталога страниц и запись таблицы страниц содержат несколько флагов, и обе они имеет флаг 'U' (бит № 2): если этот флаг установлен, то страница может быть доступна как пользователю (ring3), так и супервизору (ring0); однако, если этот флаг не установлен, только супервизор (ring0) может получить к нему доступ. Этот флаг часто называют «бит пользователя / супервизора».

Вопрос: что мне делать, если я хочу, чтобы страницы ring0 и ring3 были в одной таблице страниц? Я могу настроить записи в таблице страниц с соответствующими привилегиями, но какую привилегию должна указывать соответствующая запись каталога страниц?

Например: я установил первую таблицу страниц (диапазон виртуальных адресов: 0x00000000 - 0x003FFFFF) ) для отображения диапазона физических адресов 0x00000000 - 0x003FFFFF (это покрывает 4 мегабайта). Первый мегабайт (0x00000000 - 0x000FFFFF) должен быть доступен только супервизору (ring0), поэтому «бит пользователя / супервизора» очищается. Следующие три мегабайта (0x00100000 - 0x003FFFFF) должны быть доступны как пользователю (ring3), так и супервизору (ring0), поэтому «бит пользователя / супервизора» установлен.

На эту таблицу страниц указывает Первая страница каталога. Но «бит пользователя / супервизора» для этой записи каталога страниц должен быть очищен (только супервизор) или установлен (как пользователь, так и супервизор)? В чем разница?

1 Ответ

3 голосов
/ 28 января 2020

ЦП будет использовать наиболее ограничительную привилегию либо в записи каталога страниц (PDE), либо в записях таблицы страниц (PTE). Если PDE имеет привилегию Supervisor, то все таблицы страниц ниже будут иметь привилегию Supervisor независимо от того, какие отдельные PTE используются. Если PDE имеет уровень привилегий пользователя, то уровень защиты PTE определяет конечный уровень привилегий.

Это поведение определено в Руководстве разработчика программного обеспечения архитектур Intel® 64 и IA-32, том 3A * 1004. *.

4.11.4 Комбинированная защита обоих уровней таблиц страниц

Для любой одной страницы, атрибуты защиты ее записи в каталоге страниц (первый уровень таблица страниц) может отличаться от его записи в таблице страниц (таблица страниц второго уровня). Процессор проверяет защиту страницы как в своем каталоге страниц, так и в записях таблицы страниц. Таблица 4-3 показывает защиту, обеспечиваемую возможными комбинациями атрибутов защиты, когда флаг WP сброшен.

Таблица 4-3 выглядит как:

enter image description here

Ответ на вопрос : Если вы хотите иметь сочетание страниц с привилегиями пользователя и супервизора под конкретным PDE, тогда установите для PDE привилегию пользователя и PTE соответственно ( Пользователь или руководитель).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...