Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Windows NT. Понятия и назначение объекта ядра.






 

Объекты ядра Windows используются системой и приложениями для управления самыми разнообразными ресурсами, например, процессами, потоками, файлами и др.

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

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

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

Объекты ядра можно защитить с помощью дескриптора защиты. Он описывает, кто создал процесс, и кто имеет доступ к нему. Почти все функции создания объекта ядра принимают указатель на структуру SECURITY_ATTRIBUTES.

В большинстве случаев, вместо этого параметра можно передать NULL, тогда объект создается с защитой по умолчанию. Такая защита подразумевает, что создатель объекта и любой член группы администраторов получают полный доступ к объекту, а остальные пользователи к нему не допускаются. Однако можно инициализировать и передать структуру SECURITY_ATTRIBUTES, а затем передать ее адрес.

 







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.