Для сегмента ДАННЫХ:
· ED Expand Down– направление распространения сегмента:
o 0 – к увеличению адресов
o 1 – к уменьшению адресов
· W – writeable – бит разрешения записи в сегмент (1 – можно, 0 - нельзя)
· A – accessed – признак обращения (фиксация обращения к молю, может использоваться в алгоритме замещения сегментов в ОП)
Для сегмента КОДА:
· С - conforming – бит подчинения сегмента:
o 0 – неподчиненный сегмент, можно вызвать только при CPL = DPL
o 1 – подчиненный сегмент, можно вызвать при CPL >= DPL
· R – readable – бит разрешения чтения (1 – можно, 0 - нельзя)
· A – accessed – признак обращения (фиксация обращения к молю, может использоваться в алгоритме замещения сегментов в ОП)
1) При попытке сделать какую-то операцию – проверка допустимости операции (при загрузке сегмента в регистр, чтобы не загружали сегменты данных в регистры кода и тд).
2) Проверка ссылок операндов чтобы не
· Не читали данные из сегмента кода (он только выполняется)
· Не писали данные в кодовые сегменты
· Не писали данные в сегмент, откуда можно только читать
Привилегии подробнее:
В процессоре Пентиум – МАНДАТНЫЙспособ определения прав доступа (механизм колец защиты):
Есть 4 уровня привилений:
0 – ядро
1, 2 – системные утилиты
3 – прикладные проги
Для характеристики уровня привилегий есть несколько переменных:
· DPL – Descripror Privilege Level – (DPL –поле в дескрипторе сегмента – в таблице дескрипторов)
· RPL – Request Privilege Level – (RPL – поле в селекторе сегмента (то, с чем мы запрашиваем память))
· СPL – Current Privilege Level – (RPL – поле в селекторе кодового сегмента (то, что сейчас выполняется))
· EPL – Effective Privilege Level – эффективный уровень привилегий запроса. Что это?
Уровни привилегий назначаются дескрипторам и селекторам. В любом случае это 2 бита: 00 01 10 11. Основное из чего оно вычисляются все переменные – DPL.
При остановке процесса уровень привилегий процесса сохраняется в его контексте. В Процессоре Пентиум это записывается в системный сегмент TSS – task state segment
Контроль доступа:
- к сегментам данных
Сопоставление EPL запроса и DPL сегмента данных:
EPL = max (RPL, CPL) - худшее
CPL – привилегии выполняемого кода
RPL – это привилегии, с которыми запрашиваем данные
DPL – привилегии, с которыми данные могут быть запрошены
- к сегменту стека
Предотвратить доступ низкоуровневого кода к данным, выработанным высокоуровневым кодом и помещенным в стек
EPL кода = DPL сегмента стека, тогда разрешен доступ
Т.е. для каждого уровня привилегий используется отдельный сегмент стека.
- к сегменту кода
CPL сравниваем с DPL, а как именно – все сложно.