Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
236
Добавлен:
20.02.2016
Размер:
133.12 Кб
Скачать

[2.4.1] Диспетчер Объектов.

Диспетчер Объектов, который является вероятно наименее известной из подсистем Исполнительной Системы NT, является также одним из наиболее важных. Главная роль операционной системы - это управление физическими и логическими ресурсами компьютера. Другие подсистемы Исполнительной Системы используют Диспетчер Объектов, чтобы определять и управлять объектами, которые представляют ресурсы.

В Таблице 2 приведен список объектов, определенных в NT 4.0, и подсистем режима ядра, которые управляют ими.

Таблица 2. NT 4.0 Типы объектов и подсистемы режима ядра, которые ими управляют

Тип Объекта

Represents

Подсистема

Тип Объекта (Object type)

Object type object

Object Manager

Directory

Object namespace

Object Manager

Символическая Связь (SymbolicLink)

Object namespace

Object Manager

Событие (Event)

Synchronization primitive

Executive

Пара Событий (EventPair)

Synchronization primitive

Executive

Мутант (Mutant)

Synchronization primitive

Executive

Таймер (Timer)

Timer notifications

Executive

Семафор (Semaphore)

Synchronization primitive

Executive

Windows Station

Interactive logon

Win32

Рабочий Стол (Desktop)

Windows desktop

Win32

Файл (File)

Tracks open files

I/O Manager

I/O Completion

Tracks I/O completion notifications

I/O Manager

Адаптер (Adapter)

Ресурс прямого Доступа к Памяти (DMA)

I/O Manager

Контроллер (Controller)

Контроллер DMA

I/O Manager

Устройство (Device)

Логическое или физическое устройство

I/O Manager

Драйвер (Driver)

Драйвер устройства

I/O Manager

Ключ (Key)

Doorway to the Registry

Configuration Manager

Порт (Port)

Канал связи

Local Procedure Call (LPC) Facility

Секция (Section)

Отображение в памяти (Memory mapping)

Memory Manager

Процесс (Process)

Active process

Process Manager

Поток (Thread)

Active thread

Process Manager

Маркер (Token)

Process security profile

Process Manager

Profile

Измерение производительности

Kernel

Диспетчер Объектов исполняет обязанности:

  • Поддержание единого пространства имен для всех именованных объектов системы

  • Отвечает за создание, удаление и управление именованными и неименованными объектами ОС

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

Для обеспечения идентификации объектов, Диспетчер Объектов реализует пространство имен NT. Все разделяемые ресурсы в NT имеют имена, располагающиеся в этом пространстве имен. Например, когда программа открывает файл, Диспетчер Объектов анализирует имя файла для выявления драйвера файловой системы (FSD) для диска, который содержит файл. Точно так же, когда прикладная программа открывает ключ Реестра, Диспетчер Объектов по имени ключа Реестра определяет, что должен быть вызван Диспетчер Конфигурации.

Рассмотрим следующий пример:

Прикладная программа вызывает функцию Win32 CreateFile() с именем файла “с:\mydir\file.txt”. При этом происходят следующие действия:

  1. Вызов системного сервиса NtCreateFile(). В качестве имени ему будет передано “\??\с:\mydir\file.txt”. Такой формат имени является «родным» для NT, точнее – это формат имени в пространстве имен Диспетчера Объектов.

  2. При обработке запроса к системному сервису NtCreateFile() будет вызван Диспетчер Объектов. Он начнет последовательно разбирать переданное имя. Первым будет разобран элемент “\??”. Корень пространства имен содержит объект с таким именем. Тип объекта – “Directory”. В этой директории будет произведен поиск объекта с именем “c:”. Это – “SymbolicLink” – ссылка на имя “\Device\Harddisk0\Partition1”. Дальнейшему разбору будет подвергнуто имя “\Device\Harddisk0\Partition1\mydir\file.txt”. Разбор будет закончен при достижении объекта, не являющегося директорией или символической связью. Таким объектом будет “Partition1”, имеющий тип “Device”. Этому объекту для дальнейшей обработки будет передано имя “\mydir\file.txt”.

Соседние файлы в папке Лабы по драйверам