База полезных знаний

Диспетчер объектов

Как уже говорилось для обеспечения последовательного и безопасного доступа к различным внутренним службам, реализованным в исполняющей системе, в Windows реализуется объектная модель. Дальше будет рассматриваться диспетчер объектов Windows, компонент исполняющей системы, отвечающий за создание, удаление, защиту и отслеживание объектов.

Диспетчер объектов централизует операции управления, которые в противном случае были бы разбросаны по всей операционной системе. Он был разработан для достижения целей, перечисленных далее.

Исследование диспетчера объектов.

В данном разделе будут представлены эксперименты, показывающие способы изучения базы данных диспетчера объектов. В этих экспериментах используются следующие средства, с которыми вы познакомитесь, если они вам еще не известны:

Средство WinObj предоставляет способ проникновения в пространство имен, поддерживаемое диспетчером объектов. (Чуть позже будет объяснено, что имена имеются не у всех объектов.) Запустите WinObj и изучите показанную ниже схему.

WinObj

Как уже упоминалось, Windows-команда Openfiles/query требует установки глобального флага Windows, который называется флагом обслуживания списка объектов — maintain objects list.

Если набрать команду Openfiles/Local, можно получить информацию о том, установлен этот флаг или нет. Этот флаг можно установить с помощью команды Openfiles/Local ON. В любом случае, чтобы установка возымела эффект, нужно перезапустить систему. Process Explorer, Handle и Монитор ресурсов (Resource Monitor) не требуют включения отслеживания объектов, поскольку они запрашивают все системные дескрипторы и создает список объектов, принадлежащих каждому объекту.

Диспетчер объектов был разработан для достижения следующих целей:

Согласно своему внутреннему устройству у Windows есть три типа объектов: объекты исполняющей системы, объекты ядра и объекты GDI/User. Объекты исполняющей системы представлены объектами, реализованными различными компонентами исполняющей системы (такими как диспетчер процессов, диспетчер памяти, подсистема ввода-вывода и т. д.). Объекты ядра представлены более простым набором, реализованным ядром Windows.

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

Объекты исполняющей системы, содержащие объекты ядра.

ПРИМЕЧАНИЕ. С другой стороны, объекты GDI/User принадлежат подсистеме Windows (Win32k.sys) и не взаимодействуют с ядром. Получить дополнительную информацию о них можно из Windows SDK.

Подробности структуры объектов ядра и того, как они используются для реализации синхронизации, будут рассмотрены чуть позже. Вся оставшаяся часть этого раздела будет сфокусирована на том, как работает диспетчер объектов, и на структуре объектов исполняющей системы, дескрипторах и таблицах дескрипторов, в ней также будет дано краткое описание использования объектов в реализации в Windows проверки безопасности доступа.

Exit mobile version