→ Пошук по сайту       Увійти / Зареєструватися
Знання Архитектура пк ДИСПЕТЧЕР ОБЪЕКТОВ И КОНТРОЛЬ ДОСТУПА Объекты исполнительной системы NT

Типы объектов

В заголовке объекта хранятся данные, формат которых одинаков для всех объектов, но значения могут быть разными. Например, у каждого объекта есть уникальное имя и может быть уникальный дескриптор защиты. Однако, есть и некоторые данные, которые постоянны для всех объектов данного типа. Например, при открытии описателя объекта данного типа можно выбирать права доступа из некоторого набора прав, специфичных для этого типа. Исполнительная система NT поддерживает (помимо других) права доступа "завершить" и "приостановить" для объектов-потоков и права доступа "чтение", "запись", "дописывание к концу" и "удаление" для файловых объектов. Другим примером типозависимого атрибута является синхронизация, или, коротко говоря, способность потока ожидать установления объектов некоторых типов в состояние "свободен".

В целях экономии памяти и сокращения расходов на управление объектами диспетчер объектов задает эти статические, типозависимые атрибуты один раз при создании нового типа объектов. Для хранения этих данных он использует специальный объект, называемый типовым объектом (type object). Помимо этого, типовой объект связывает друг с другом все объекты одного типа, как показано на рис. 3-2, что позволяет диспетчеру объектов при необходимости перебрать их все.

Пользовательский режим не имеет доступа к типовым объектам, так как диспетчер объектов не предоставляет никаких сервисов для них. Однако некоторые определяемые ими атрибуты видимы посредством базовых сервисов и функций API Win32. Атрибуты, хранящиеся в телах типовых объектов, приведены в табл. 3-4.

Объекты-процессы и типовой объект процесс

Рис. 3-2. Объекты-процессы и типовой объект "процесс".


Таблица 3-2. Стандартные атрибуты заголовка объекта

Атрибут Назначение
Имя типа объекта Название объектов данного типа ("процесс", "событие", "порт" и т. д.)
Типы доступа Типы доступа, которые могут быть запрошены потоком при открытии описателя объекта данного типа ("чтение", "запись", "завершить", "приостановить" и т. д.)
Возможности синхронизации Может ли поток ожидать у объектов данного типа
Резидентный / нерезидентный Могут ли объекты данного типа выгружаться из памяти
Методы Одна или несколько процедур, вызываемых диспетчером объекта автоматически в некоторых точках времени жизни объекта

Синхронизация (synchronization), один из атрибутов, видимых приложениям Win32, указывает на то, что поток может синхронизировать свое выполнение, ожидая, пока не изменится состояние объекта. Поток синхронизируется со следующими о бъектами исполнительной системы: процесс, поток, файл, событие, пара событий, семафор, мутант и таймер. Объекты секция, порт, маркер доступа, каталог объектов, символическая связь, профиль и параметр реестра не поддерживают синхронизацию.

Последний атрибут в списке — методы — состоит из набора внутренних процедур, аналогичных конструкторам и деструкторам C++, т.е. процедурам, которые автоматически вызываются при создании и разрушении объекта. Диспетчер объектов развивает эту идею, вызывая методы объектов и в других ситуациях, таких как открытие и закрытие описателя объекта или попытка изменения параметров защиты объекта. Некоторые типы объектов определяют методы, а некоторые нет, в зависимости от назначения типа. Методы, иногда еще называемые виртуальными методами (virtual methods), описаны в разд. 3.2.3.

Итак, объекты исполнительной системы NT состоят из двух частей: заголовка объекта, управляемого диспетчером объектов, и тела объекта, которое управляется компонентом ОС, создавшим данный тип. Одним из атрибутов заголовка объекта является указатель на типовой объект — структуру, определяющую статические атрибуты объектов данного типа. Новый тип объектов может быть определен любым компонентом исполнительной системы NT, и каждый компонент предоставляет сервисы для определенных им типов объектов.

загрузка...
Сторінки, близькі за змістом