3.2. Задание уровней привилегий.Основными объектами механизма защиты по привилегиям являются сегменты кодов и данных, включая стековые, и шлюзы. Именно им назначаются уровни привилегий. Уровень привилегий сегмента или шлюза определяет поле DPL (Descriptor Privilege Level) уровня привилегий, который находится в байте AR прав доступа соответствующего дескриптора. Это относится как к данным, так и к командам. Эквивалентом понятия уровня привилегий процессора в МП iх86 является понятие текущего уровня привилегий CPL (Current Privilege Level или Code Privilege Level). Текущей уровень привилегий определяется полем DPL дескриптора кодового сегмента. После загрузки кодового сегмента и передачи на него управления значение DPL копируется в поле CPL регистра кодового сегмента CS. После этого уровень привилегий кодового сегмента DPL становится текущим уровнем привилегий СPL. Таким образом, текущий уровень привилегий является уровнем привилегий исполняемого кодового сегмента. Кроме уровней привилегий DPL и СPL, механизм защиты использует понятие уровня привилегий запроса (RPL). Это уровень привилегий, заданный селектором команды загрузки регистров сегментов данных, межсегментных передач управления, шлюзов. Уровень привилегий запроса (RPL) селекторов сегментов данных сохраняется в соответствующих сегментных регистрах SS, DS, ES, FS, GS. После загрузки селекторов в сегментные регистры, хранящийся в них RPL механизмом защиты уже не используется. При межсегментных передачах управления селектор целевых сегментов кодов загружается в сегментный регистр CS, но вместо поля RPL заносится CPL = DPL дескриптора кодового сегмента. Понятие уровня привилегий запроса RPL служит для защиты программ и данных операционной системы от ошибок программ, изменивших уровень привилегий при межуровневых передачах управления.
|