Объекты Windows 2000
Устройство операционной системы W2K в значительной мере основано на объектно-ориентированных концепциях. Этот подход способствует совместному использованию ресурсов и данных различными процессами, а также защите ресурсов от несанкционированного доступа. Операционная система W2K использует следующие объектно-ориентированные концепции.
• Инкапсуляция.Объект состоит из одного или нескольких полей данных
(атрибутов), и одной или нескольких процедур, с помощью которых можно
обрабатывать эти данные (методов, сервисов). Единственный способ получить доступ к данным объекта — запросить один из его методов (сервисов).
Таким образом, данные объекта легко защитить от несанкционированного
или некорректного использования.
• Классы объектов и экземпляры.Класс объекта представляет собой шаблон,
в котором перечислены его атрибуты и сервисы, а также определены некоторые его характеристики. При необходимости операционная система может создавать экземпляры объектов класса. Например, имеется класс одиночных процессов, объектом которого является текущий процесс. Такой подход упрощает создание объектов и управление ими.
• Наследование.Этот механизм не поддерживается на уровне пользователя, но в
некоторой степени поддерживается на уровне исполнительной системы. Например, объекты-каталоги являются примерами объектов-контейнеров, одним из
свойств которых является то, что содержащиеся в них объекты могут наследовать свойства контейнеров. Например, предположим, что у нас имеется каталог
файловой системы с установленным флагом сжатия. В таком случае у всех
файлов, создаваемых в этом каталоге, будет установлен этот флаг.
• Полиморфизм.Для управления объектами любого типа операционная система W2K использует общий набор функций API — в этом и заключается
ее полиморфизм. Однако W2K не является полностью полиморфной, потому
что в ее состав входит множество API для конкретных типов объектов.
Не все сущности операционной системы W2K являются объектами. Объекты используются в тех случаях, когда данные открыты для доступа в пользовательском режиме, а также при совместном использовании данных и ограничении доступа. Среди представляемых объектами сущностей —файлы, процессы, потоки, семафоры, таймеры и окна. Система W2K создает все типы объектов и управляет ими одним и тем же способом — с помощью диспетчера объектов.
Этот диспетчер отвечает за создание и удаление объектов, нужных для работы приложений, а также за предоставление доступа к сервисам и данным объектов.
Каждый объект исполнительной системы (иногда эти объекты называются объектами ядра, чтобы отличать их от объектов пользовательского уровня, не имеющих отношения к исполнительной системе) находится в области памяти, выделяемой ядром, доступ к которой имеет только ядро. Некоторые элементы структуры данных присущи объектам всех типов (например, имена объектов, параметры безопасности, счетчик использований). С другой стороны, каждый отдельный тип объектов имеет свои специфические элементы (например, приоритет потока объекта). Структуры данных объектов ядра доступны только через ядро; приложение не может ни размещать в памяти эти структуры данных, ни непосредственно считывать или записывать в них информацию. Вместо этого приложения манипулируют объектами опосредованно, через набор функций для работы с объектами, которые поддерживаются исполнительной системой. Когда создается объект для какого-нибудь приложения, последнему возвращается дескриптор созданного объекта, который, по сути, является указателем на объект. Впоследствии дескриптор объекта может использоваться любым потоком этого процесса при вызове функций Win32, работающих с объектами.
С объектами может быть связана информация о безопасности, представленная в виде дескриптора безопасности (Security Descriptor — SD). Эта информация используется для ограничения доступа к объекту. Например, процессом может быть создан объект, являющийся именованным семафором, открывать и использовать который будет позволено лишь некоторым пользователям. В дескрипторе защиты этого семафора могут быть перечислены пользователи, которым разрешен (или запрещен) к нему доступ, а также тип разрешенного доступа (для чтения, записи, изменения и т.д.).
В операционной системе W2K объекты могут быть именованными или неименованными. Если при работе процесса создается неименованный объект, то диспетчер объектов возвращает дескриптор этого объекта. Впоследствии обратиться к этому объекту можно будет только через его дескриптор. У именованного объекта есть имя, с помощью которого другие процессы могут получить его дескриптор. Например, если нужно, чтобы процесс А выполнялся синхронно с процессом В, в нем можно создать объект-событие, а затем передать его имя процессу В, в котором это событие будет использовано для синхронизации. Однако если нужно синхронизовать два потока одного и того же процесса А, то в нем можно создать неименованный объект-событие, потому что другие процессы не должны ничего о нем знать.
В качестве примера объектов, которые управляются операционной системой W2K, ниже приведены две категории объектов, управляемых микроядром.
• Объекты управления. Объекты этого типа используются для управления
операциями микроядра, не связанными с диспетчеризацией и синхронизацией. Объекты управления микроядра перечислены в табл. 2.6.
• Объекты диспетчера. Используются для диспетчеризации и синхронизации
операций системы. Эти объекты описаны в главе 6, "Взаимоблокировка и
голодание".
Таблица 2.6. Объекты управления микроядра NT [MS96]
Асинхронный Используется для прерывания выполнения определенного потока и
вызов процедуры вызова процедуры в указанном режиме процессора
Прерывание Используется для связи источника прерывания с программой обслужива
ния прерывания посредством записи из таблицы диспетчеризации прерываний (Interrupt Dispatch Table — IDT). Такая таблица, используемая для диспетчеризации прерываний, имеется у каждого процессора
Процесс Представляет собой виртуальное адресное пространство и управляющую
информацию, которые необходимы для выполнения набора потоков. В процессе содержится указатель на карту адресов, список готовых к выполнению потоков, список всех потоков процесса, совокупное время выполнения всех потоков процесса, а также базовый приоритет
Профиль Используется в качестве меры при распределении времени выполне-
ния в пределах блока кода. Профиль может быть определен как для кода пользователя, так и для кода системы
Операционная система W2K не является объектно-ориентированной в полном смысле. Она реализована не на объектно-ориентированном языке программирования. Структуры данных, содержащиеся в компоненте исполнительной системы, не представлены в виде объектов. Тем не менее W2K иллюстрирует мощь объектно-ориентированной технологии и ее использование при разработке операционных систем.
Дата добавления: 2016-06-05; просмотров: 1792;