Защищенный режим процессора. уровни привилегий. определение уровней привилегий

В реальном режиме процессор неспособен адресоваться к памяти выше границы первого мегабайта. Кроме того, из-за того, что для адресации используются 16-битные смещения, невозможно работать с массивами больше 65 536 байт. Защищенный режим лишен этих недостатков, в нем можно адресоваться к участку памяти размером 4 Гб как к одному непрерывному массиву и вообще забыть о сегментах и смещениях.

В защищенном режиме все адресное пространство разбивается на 1 Мб 4-х Кб-х страниц (т.е 1стр = 4 Кб). В защищенном режиме МП обеспечивает определенные механизмы защиты на основе сегментации и на основе страничного преобразования. Они позволяют ограничивать доступ к определенным сегментам или страницам при помощи уровней привилегий (4 для сегментов и 2 для страниц). В защищенном режиме нет способа отключить механизм защиты.

  Уровни привилегий:

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

Защита на уровне сегментов представлена четырьмя уровнями привилегий. Уровни привилегии реализуются путем присвоения значения от 0 до 3 ключевым объектам, кот опознаются МП. Значение 0 соответствует наибольшим привилегиям, тогда как значение 3 - наименьшим.

Четыре уровня привилегий можно интерпретировать в виде колец защиты. Центр - уровень 0 - предназначен для сегментов, содержащих наиболее критичные программы (обычно ядро операционной системы). Внешние кольца предназначены для сегментов с менее критичными программами или данными. Использование всех 4-х уровней привилегий не явл необходимым. Существующие системы, спроектированные с меньшим кол-м уровней, могут просто игнорировать др допустимые уровни.

Механизм контроля уровня привилегий МП оперирует следующими значениями:

CPL - текущий уровень привилегий (Current Privilege Level): уровень привилегий, на котором в данный момент исполняется задача. Значение CPL хранится в поле RPL селектора сегмента кода, который помещен в регистр CS. Обычно это значение соответствует уровню привилегий дескриптора исполняемого сегмента кода. Уровень привилегий меняется, когда управление передается сегменту кода с другим значением DPL (за исключением подчиняемых сегментов кода).

DPL - уровень привилегий дескриптора (Descriptor Privilege Level): наименее привилегированный уровень, на кот задача может получить доступ к сегменту или шлюзу, связанному с этим дескриптором. Уровень DPL определяется битами 46 и 45 дескриптора.

RPL - запрашиваемый уровень привилегий (Requested Privilege Level) используется для временного понижения своего уровня привилегий при обращении к памяти. RPL заносится в младшие биты селектора.

Механизм контроля уровня привилегий обычно сравнивает уровень привилегий дескриптора (DPL) с max из двух чисел CPL и RPL. Наименее привилегированный из текущего уровня привилегий и запрашиваемого считается эффективным уровнем привилегий: EPL=max(CPL,RPL).


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



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