Бит E – для отличия сегмента данных (0) от сегмента кода (1)

Для сегмента ДАННЫХ:

· 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, а как именно – все сложно.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: