Сегментация метод управления памятью, на котором основано построение защиты. Сегмент является средством объединения областей памяти с общими атрибутами. Информация о свойствах сегмента хранится в 8-байтной структуре данных, называемой дескриптором. Все дескрипторы хранятся в таблицах, обращение к которым аппаратно поддерживается процессором. Процессор может обращаться только к тем сегментам памяти, для которых имеются дескрипторы в таблицах.
Селектор сегмента указывает на информацию, определяющую сегмент, которая называется дескриптором сегмента. Селектор сегмента идентифицирует дескриптор сегмента, задавая таблицу дескрипторов и позицию нужного дескриптора в этой таблице. Формат селектора сегмента показан на Рисунке.
Индекс: выбирает один из 8192 дескрипторов в таблице дескрипторов. Процессор умножает значение индекса на 8 (число байтов в дескрипторе сегмента) и складывает результат с базовым адресом таблицы дескрипторов (берется из регистра GDTR или LDTR). Бит-индикатор таблицы (TI): задает используемую таблицу дескрипторов. Если этот бит очищен, то выбирается таблица GDT; если же он установлен, то выбирается текущая таблица LDT. Запрошенный уровень привилегированности (RPL): если это поле содержит уровень привилегированности с большим значением, чем программа (т.е. привилегированность меньше), то оно переопределяет уровень привилегированности программы. Если программа использует менее привилегированный селектор сегмента, доступ к памяти происходит с меньшим уровнем привилегированности. Это свойство используется для защиты от нарушения безопасности данных, если менее привилегированная программа пытается использовать более привилегированную программу для доступа к защищенным данным.
Дескриптор сегмента представляет собой структуру данных в памяти, которая сообщает процессору размер и расположение в памяти сегмента, а также управляющую информацию и информацию о состоянии сегмента.
На Рисунке показан формат дескриптора.
— AVL. Доступно для использования системным программным обеспечением.
— BASE Базовый адрес сегмента
— DPL Уровень привилегированности дескриптора
— S Тип дескриптора (0=системный; 1=прикладной)
— G Грануляция
— Граница Граница сегмента
— P Присутствие сегмента
— TYPE Тип сегмента
— D Размер операции по умолчанию (Распознается только в дескрипторах кодового сегмента: 0=16-битовый размер; 1=32-битовый размер).
