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

Объекты исполнительной системы NT

Что такое объект? В исполнительной системе NT — это отдельный обра­зец статически определенного типа объектов, существующий во время выполне­ния.

Тип объектов (object type), иногда называемый классом объектов (object class), включает определенный системой тип данных, сервисы, работающие с образцами этого типа, и набор атрибутов объекта. При написании Win32-приложения Вы столкнетесь с объектами, представляющими, к примеру, процесс, поток, файл, событие. В основе этих объектов лежат низкоуровневые объекты, которые создаются и управляются исполнительной системой NT. В Windows NT процесс — это пример объекта типа "процесс", файл — пример объекта типа "файл" и т. д.

Атрибут объекта(object attribute) 1 — это поле данных внутри объекта, частично определяющее его состояние. Объект типа "стек", например, имел бы в качестве одного из самых важных атрибутов указатель стека. Объектные сервисы (object services) — способы манипулирования объектами — обычно считывают или изменяют атрибуты объекта. Например, сервис "push" (поместить в стек) для объекта-стека изменял бы значение указателя стека.

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

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

  • Присвоение системным ресурсам читабельных имен
  • Совместное использование ресурсов и данных разными процессами
  • Защита ресурсов от несанкционированного доступа.

Не все структуры данных в исполнительной системе NT являются объектами. В объекты помещены только те данные, которые должны быть совместно используемыми, защищенными, именованными или видимыми (при помощи системных сервисов) программам пользовательского режима. Структуры, используемые, например, только одним компонентом исполнительной системы для реализации внутренних функций, не являются объектами.

Несмотря на то, что объекты широко используются для представления совместно используемых системных ресурсов, Windows NT не является объектно-ориентированной системой в строгом смысле слова. Большая часть кода ОС написана на С, чтобы обеспечить переносимость и из-за того, что средства разработки широко доступны. С не поддерживает непосредственно объектно-ориентированные конструкции, такие как динамическое определение типа данных, полиморфные функции или наследование классов. Таким образом, реализация объектов в Windows NT, выполненная на С, заимствует идеи, но не зависит от средств, предоставляемых конкретными объектно-ориентированными языками.

Диспетчер объектов (object manager) — это компонент исполнительной системы NT, отвечающий за создание, удаление, защиту и учет объектов NT. Диспетчер объектов централизует операции управления ресурсами, которые иначе были бы разбросаны по всей ОС. Лу Пераццоли (Lou Perazzoli), технический управляющий и руководитель проекта разработки Windows NT, и Стив Вуд (Steve Wood), программист ОС Microsoft с 9-летним стажем, спроектировали диспетчер объектов и определили следующие цели его реализации:

  • Обеспечить общий, унифицированный механизм использования системных ресурсов.
  • Сосредоточить защиту объектов в одном месте ОС, чтобы удовлетворить требованиям правительства США по защите класса С2.
  • Обеспечить схему именования объектов, которую легко было бы ис-пользовать для существующих объектов, таких как устройства, файлы и каталоги файловой системы, а также для других независимых наборов объектов.
  • Ввести способ назначения цены использования объектов процессами, так чтобы системный администратор мог устанавливать ограничения на использование системных ресурсов.
  • Задать унифицированные правила удержания объектов (т.е. сохранения объекта доступным до тех пор, пока все процессы не закончили пользоваться им).
  • Поддерживать требования разнообразных сред ОС, такие как способность процесса наследовать ресурсы родительского процесса (необходима для Windows и POSIX) и возможность использовать имена файлов, различающиеся только регистром букв (необходима для POSIX).

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

1 При создании объекта при помощи API Win32 либо базовых объектных сервисов вызывающая программа передает параметр под названием ObjectAttributes (Атрибуты Объекта), но его не сле­дует смешивать с более общим значением данного термина, которое используется в этой книге.

Использование объектов

Исполнительная система NT реализует два типа объектов: объекты исполнительной системы (executive object) и объекты ядра (kernel object). Объекты исполнительной системы представляются различными компонентами исполнительной системы NT. Они доступны программам пользовательского режима (защищенным подсистемам) посредством базовых сервисов NT и могут создаваться и использоваться как подсистемами, так и исполнительной системой NT.

Структура объектов

Каждый объект NT относится к некоторому типу объектов. Тип объекта определяет, какие данные содержит объект, а также базовые системные сервисы, которые могут к нему применяться. Для универсальности обработки разных объектов диспетчеру объектов необходимо, чтобы каждый объект содержал в заданном месте несколько полей со стандартной информацией, При наличии этих данных диспетчеру объектов не требуется знать, что еще содержится в объекте, Для отделения стандартных данных объекта от специфичных каждый объект разделен на две части — заголовок и тело. Диспетчер объектов работает с заголовком, а другие компоненты исполнительной системы — с телами объектов создаваемых ими типов.

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

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

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