Глоссарий.Адресное пространство программы - совокупность логических адресов, занимаемая программой. Байт прав доступа (AR - байт в составе поля атрибутов дескрипторов сегментов). AR содержит поля:
Дескриптор - совокупность бит, определяющая основные программные объекты: сегменты и шлюзы. Дескриптор сегмента - дескриптор, определяющий сегмент как совокупность смежных адресов, начиная с нулевого адреса. Содержит следующие поля:
Дескриптор сегмента состояния задач - дескриптор системного сегмента TSS (см. сегмент состояния задачи). Дескриптор шлюза - определяет разрешенную точку входа в программу. В зависимости от средства и механизма перехода на программу используются шлюзы вызова, ловушки, прерывания и задачи. Дескриптор шлюза содержит следующие поля:
Динамическая переадресация программ - преобразование (пересчет) адресов операндов и переходов в процессе выполнения каждой команды с учетом расположения программы в оперативной памяти. Защищенный режим работы - работа (для МП intel) в 32-разрядном режиме (IA32). Команды обращения к устройствам ввода/вывода - команды подгруппы IOPL-"чувствительных" команд. На их выполнение, кроме соотношения уровней привилегий CPL <= IOPL, влияет содержимое битовой карты разрешения ввода/вывода в сегменте состояния задачи TSS. Команды, модифицируемые в соответствии с текущим уровнем привилегии - непривилегированные команды, выполнение которых зависит от значения CPL. Это две команды: POPFD и POPF (загрузка регистра EFLAGS соответственно четырехбайтным или двухбайтным значением из стека). Эти команды могут изменять любые биты флагов, но биты IOPL могут быть изменены этими командами, только если выполняется PL0-программа, а флаг IF - если выполняется условие CPL <=IOPL. Логический адрес - адрес, заданный двумя компонентами: селектором, определяющим расположение сегмента в физической памяти, и смещением в сегменте. Мандатные поля строк каталога и таблиц страниц - поля строк каталога или таблиц механизма виртуальной памяти. Используются для дополнительной защиты при преобразовании линейных адресов в физические. Нуль-селектор - селектор с нулевым значением индекса. Определяет "пустой" дескриптор. Передача управления - тип программного перехода. Осуществляется по командам переходов или по прерываниям путем загрузки нового адреса в указатель команд (IP). В командах переходов с возвратом - осуществляется запоминание логического адреса возврата в стеке, при прерываниях в стеке дополнительно запоминается содержимое регистра флагов (EFLAGS). Переключение задач (смена контекста) - тип программного перехода. Осуществляется механизмом, который сохраняет состояния основных регистров процессора в сегменте состояния текущей задачи (TSS), а затем загружает регистры процессора новыми значениями из сегмента состояния задачи (TSS) программы - цели. Подчиненные кодовые сегменты - кодовые сегменты, отмеченные как подчиненные битом С (Conforming) в поле атрибутов дескриптора сегмента. Передача управления на подчиненный сегмент разрешена, если его уровень привилегий не ниже текущего. Передача управления на подчиненные сегменты не изменяет текущий уровень привилегий. Поле атрибутов - поле дескриптора, определяющее тип программного объекта и права доступа. Поле индекса - поле селектора, определяющее вход в таблицу дескрипторов. Поле предела (L - limit) - двадцатиразрядное поле дескриптора сегмента, определяющее размер сегмента. Задается в байтах или в страницах по 4096 байт в зависимости от бита гранулярности G (Granularity). При G = 0 сегмент задается в байтах, а при G = 1 - в страницах. Поле уровня привилегии источника запроса RPL (Requested Privilege Level) - уровень привилегий, заданный селектором команды загрузки сегментных регистров или селектором команды межсегментной передач управления. Поле типов сегментов TIPE - четырехразрядное поле, интерпретируемое по-разному в зависимости от типа дескриптора. В системных дескрипторах (S = 1) разряды поля TIPE кодируют подтипы системных дескрипторов (см. системные дескрипторы). В несистемных дескрипторах (S=0) определяют: тип сегментов (данные/команды бит - Е), направление расширения для сегмента данных или подчиненность для кодового сегмента (бит - ED/C), права использования (бит - W/R) и факт обращение к сегменту (бит - A). Реальный режим работ - работа в режиме МП i8086. Сегмент состояния задачи TSS - системный сегмент, предназначенный для сохранения содержимого основных регистров процессора при переключении задач. Смена контекста - см. переключение задач. Текущий уровень привилегии CPL (Current Privilege Level или Code Privilege Level) - уровень привилегий выполняемого кодового сегмента. При проверках берется из поля уровня привилегий селектора кодового сегмента. Уровень привилегий ввода/вывода IOPL - двухразрядное поле регистра флагов (EFLAGS), определяющее возможности использования IOPL - "чувствительных" команд. Это команды, которые изменяют состояние флажка прерываний IF, выполняют захват шины или операцию ввода-вывода. Для выполнения этих команд программа необязательно должна иметь уровень привилегий 0. Привилегированность этих команд заключается в том, что их могут выполнять программы, уровень привилегий которых выше уровня, определяемого полем IOPL уровня привилегий ввода-вывода в регистре EFLAGS. Уровень привилегий дескриптора DPL (Descriptor Privilege Level) - уровень привилегий программного объекта (сегмента или шлюза). Задается полем уровня привилегий соответствующего дескриптора. CPL - см. текущий уровень привилегий. DPL - см. уровень привилегий дескриптора. DPLЦКС - уровень привилегий целевого кодового сегмента. DPLШЛ - уровень привилегий шлюза. IOPL-"чувствительные" (IOPL-sensitive) команды - см. Уровень привилегий ввода/вывода IOPL. L - см. поле предела. PL0-команды - привилегированные команды, использование которых допускается только в кодовых сегментах с нулевым уровнем привилегий. TIPE - см. поле типа сегмента. TSS - см. сегмент состояния задачи. |