- •4. Адресация и защита
- •4.1. Виртуальная адресация
- •4.1.1. Буфер трансляции адресов (tlb)
- •4.1.1.1. Регистры трансляции (tr)
- •4.1.1.2. Кэш трансляции (tc)
- •4.1.1.3. Объединенные буфера трансляции адресов
- •4.1.1.4. Сбрасывающее поведение вставок и сбросов tlb
- •4.1.1.5. Формат вставки трансляции
- •4.1.1.6. Права доступа к странице
- •4.1.1.7. Размеры страниц
- •4.1.2. Регистры регионов (rr)
- •4.1.3. Ключи защиты
- •4.1.4. Инструкции трансляции
- •4.1.5. Таблица виртуальных хэш страниц (vhpt)
- •4.1.5.1. Конфигурация vhpt
- •4.1.5.2. Поиск vhpt
- •4.1.5.3. Короткий формат базирования региона vhpt
- •4.1.5.4. Длинный формат vhpt
- •4.1.6. Хэширование vhpt
- •4.1.6.1 Индекс короткого формата vhpTбазирования региона
- •4.1.6.2. Длинно форматный vhpTхэш
- •4.1.7. Среда vhpt
- •4.1.8. Поиск трансляции
- •4.1.9. 32-Битная виртуальная адресация
- •4.1.10. Виртуальное совмещение (aliasing)
- •4.2. Физическая адресация
- •4.3. Не реализованные адресные биты
- •4.3.1. Не реализованные физические адресные биты
- •4.3.2. Не реализованные виртуальные адресные биты
- •4.3.3 Поведение инструкций с не реализованными адресами
- •4.4. Атрибуты памяти
- •4.4.1. Атрибуты памяти виртуальной адресации
- •4.4.2. Атрибуты памяти физической адресации
- •4.4.3. Атрибуты кэшируемости и когерентности
- •4.4.4. Атрибут политики записи кэша.
- •4.4.5. Атрибут объединения
- •4.4.6. Атрибуты спекулятивности
- •4.4.7. Атрибуты последовательности и упорядочивание
- •4.4.8. Атрибут «не вещь» (NaTPage)
- •4.4.9. Эффекты атрибутов памяти в инструкциях обращения к памяти
- •4.4.10. Эффекты атрибутов памяти в предварительных и проверяемых загрузках
- •4.4.11. Передача атрибутов памяти
- •4.4.11.1. Передача атрибутов памяти виртуальной адресации
- •4.4.11.2. Передача атрибутов физической адресации – отключение предвыборок/спекуляций и удаление кэшируемости
- •4.5. Выравнивание элементов памяти и атомистичность
4.1.1.6. Права доступа к странице
Постранично гранулированные средства управления доступом используют 4 уровня привилегий. Уровень привилегий 0 является наиболее привилегированным и имеет доступ ко всем привилегированным командам, а уровень привилегий 3 является наименее привилегированным. Доступ (включая IA-32) к странице задается полямиTLB.arиTLB.pl, а также уровнем привилегий доступа так, как это определено в табл. 4.3. Заливания и сливанияRSEполучают свой уровень привилегий изRSC.pl, все другие обращения (включаяIA-32) получают свой уровень привилегий изPSR.cpl. В ячейках имеются значки: «–» обозначает нет доступа, «R» - доступно для чтения, «W» - доступно для записи, «X» - доступно для выполнения, а «P» - повышаетPSR.cplдо уровня привилегий «n» при выполнении инструкцииepc(EnterPrivilegedCode– войти в привилегированный код).
Табл. 4.3. Права доступа к странице
|
TLB.ar |
TLB.pl |
Уровень привилегийA |
Описание | |||
|
3 |
2 |
1 |
0 | |||
|
0 |
3 |
R |
R |
R |
R |
Только чтение |
|
2 |
–– |
R |
R |
R | ||
|
1 |
–– |
–– |
R |
R | ||
|
0 |
–– |
–– |
–– |
R | ||
|
1 |
3 |
RX |
RX |
RX |
RX |
Чтение, выполнение |
|
2 |
–– |
RX |
RX |
RX | ||
|
1 |
–– |
–– |
RX |
RX | ||
|
0 |
–– |
–– |
–– |
RX | ||
|
2 |
3 |
RW |
RW |
RW |
RW |
Чтение, запись |
|
2 |
–– |
RW |
RW |
RW | ||
|
1 |
–– |
–– |
RW |
RW | ||
|
0 |
–– |
–– |
–– |
RW | ||
|
3 |
3 |
RWX |
RWX |
RWX |
RWX |
Чтение, запись, выполнение |
|
2 |
–– |
RWX |
RWX |
RWX | ||
|
1 |
–– |
–– |
RWX |
RWX | ||
|
0 |
–– |
–– |
–– |
RWX | ||
|
4 |
3 |
R |
RW |
RW |
RW |
Только чтение / Чтение, запись |
|
2 |
–– |
R |
RW |
RW | ||
|
1 |
–– |
–– |
R |
RW | ||
|
0 |
–– |
–– |
–– |
RW | ||
|
5 |
3 |
RX |
RX |
RX |
RWX |
Чтение, выполнение / Чтение, запись, выполнение |
|
2 |
–– |
RX |
RX |
RWX | ||
|
1 |
–– |
–– |
RX |
RWX | ||
|
0 |
–– |
–– |
–– |
RWX | ||
|
6 |
3 |
RWX |
RW |
RW |
RW |
Чтение, запись, выполнение / Чтение, запись |
|
2 |
–– |
RWX |
RW |
RW | ||
|
1 |
–– |
|
RWX |
RW | ||
|
0 |
–– |
|
|
RW | ||
|
7 |
3 |
X |
X |
X |
RX |
Выполнение, повышениеB/ Чтение, выполнение |
|
2 |
XP2 |
X |
X |
RX | ||
|
1 |
XP1 |
XP1 |
X |
RX | ||
|
0 |
XP0 |
XP0 |
XP0 |
RX | ||
Для заполнений и сливаний RSE– этоRSC.pl, а для всех остальных обращений – этоPSR.cpl.
Пользователь может выполнять только те страницы, для которых задан уровень привилегий равный 3.
Программа может проверить полномочия уровня страницы с помощью инструкции probe, которая проверяет доступность для данной виртуальной страницы, путем верификации уровня привилегий, полномочия чтения и записи уровня страницы, а также полномочия чтения и записи ключа защиты.
Страницы, предназначенные только для выполнения (TLB.ar=7), могут быть использованы для повышения уровня привилегий при входе в операционную систему. Код уровня пользователя для перехода на повышенную страницу (управляемую операционной системой), обычно выполняет инструкциюepc(EnterPrivilegedCode). Еслиepcуспешно повысила уровень, то следующая группа инструкций выполняется на том уровне привилегий, который был задан повышенной страницей. Переход типа возврата из процедуры (br.ret) может понизить текущий уровень привилегий.
