- •[2.2] Некоторые понятия защищенного режима
- •[2.3] Основные характеристики Windows nt
- •[2.3.1] Многопоточность
- •[2.3.2] Вытесняющая многозадачность
- •[2.3.3] Виртуальная память с подкачкой страниц по требованию [2.3.4] Мультипроцессорная обработка
- •[2.3.5] Модель модифицированного микроядра
- •[2.3.6] Независимость от архитектуры процессора
- •[2.4] Исполнительная Система (The Executive)
- •[2.4.1] Диспетчер Объектов.
- •[2.4.2] Справочный монитор защиты (security reference monitor).
- •[2.4.3] Диспетчер процессов (process manager).
- •[2.4.4] Средство локального вызова процедур (lpc).
- •[2.4.5] Диспетчер памяти и Диспетчер кэша (memory manager и cache manager).
- •[2.4.6] Поддержка среды Win32 (Win32 support)
- •[2.4.7] Диспетчер Конфигурации (configuration manager)
- •[2.4.8] Диспетчер ввода-вывода (I/o manager).
- •[2.4.9] Микроядро [2.4.10] Слой Абстрагирования от Оборудования
[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”. При этом происходят следующие действия:
Вызов системного сервиса NtCreateFile(). В качестве имени ему будет передано “\??\с:\mydir\file.txt”. Такой формат имени является «родным» для NT, точнее – это формат имени в пространстве имен Диспетчера Объектов.
При обработке запроса к системному сервису NtCreateFile() будет вызван Диспетчер Объектов. Он начнет последовательно разбирать переданное имя. Первым будет разобран элемент “\??”. Корень пространства имен содержит объект с таким именем. Тип объекта – “Directory”. В этой директории будет произведен поиск объекта с именем “c:”. Это – “SymbolicLink” – ссылка на имя “\Device\Harddisk0\Partition1”. Дальнейшему разбору будет подвергнуто имя “\Device\Harddisk0\Partition1\mydir\file.txt”. Разбор будет закончен при достижении объекта, не являющегося директорией или символической связью. Таким объектом будет “Partition1”, имеющий тип “Device”. Этому объекту для дальнейшей обработки будет передано имя “\mydir\file.txt”.
