Pages Menu
Categories Menu

Опубликовано | Нет комментариев

Объекты и дескрипторы

В операционной системе Windows объект ядра является единственным экземпляром типа объекта времени выполнения, определенного в статическом режиме.

Тип объекта состоит из определяемого системой типа данных, функций (методов), работающих с экземплярами типа объекта и набора свойств объекта. При написании Windows-приложений могут встретиться объекты процессов, потоков, файлов и событий (и это лишь несколько примеров). Эти объекты основаны на низкоуровневых объектах, создаваемых и управляемых операционной системой Windows, в которой процесс является экземпляром типа объекта process, файл является экземпляром типа объекта file и т. д.

Свойство объекта является находящимся в объекте полем данных, которое в той или иной степени определяет состояние объекта. К примеру, у объекта типа process будут свойства, включающие идентификатор процесса (process ID), основной приоритет, учитываемый при планировании запуска процесса, и указатель на объект маркера доступа. Методы объекта, то есть средства манипуляции объектами, обычно считывают или изменяют свойства объекта. Например, методу "open" объекта "process" в качестве входных данных будет передаваться идентификатор процесса, а на выходе он будет возвращать указатель на объект.

ПРИМЕЧАНИЕ Хотя при создании объекта с использованием API диспетчера объектов ядра вызывающий код предоставляет аргумент "ObjectAttributes" (свойства объекта), этот аргумент не нужно путать с более общим значением термина «свойства объекта».

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

Благодаря такой технологии реализацию объектов впоследствии будет нетрудно изменить.

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

  • Предоставление легких для человеческого восприятия имен системных ресурсов.
  • Распределение ресурсов и данных среди процессов.
  • Защита ресурсов от неавторизованного доступа.
  • Отслеживание ссылок, позволяющее системе узнать, когда объект больше не используется, чтобы можно было автоматически освободить выделенные под него ресурсы.

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

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.

↓