информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медСтрашный баг в WindowsПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Маск поддержал создателя Дилберта,... 
 Утечка сертификатов GitHub Desktop... 
 С наступающим 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / operating systems
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[NT] Деление на ядро и исполнительную систему - довольно условное [upd2] 12.07.04 13:53  Число просмотров: 1764
Автор: amirul <Serge> Статус: The Elderman
Отредактировано 12.07.04 14:27  Количество правок: 3
<"чистая" ссылка>
Гораздо более значимым является деление на модули (каждый из которых имеет свой префикс) или как их еще называть (в аглицком называются менеджерами).

> Например я хочу открыть файл на чтение, то куда идет
> запрос? Вначале в исполнительную часть и там вызывается
> объект исполнительной системы, а потом уже он вызывает
> объект ядра – файл, который уже работает с физическим
> файлам.
Когда ты делаешь NtCreateFile (native подсистема) он сразу уходит в менеджер ввода/вывода IoCreateFile, после валидирования аргументов настройки кучи параметров IoCreateFile уходит в ObOpenObjectByName, который в свою очередь уходит в ObpLookupObject (обе функции - части менеджера объектов). Если объект-файл уже есть, то он возвращается, если нет - то создается новый (объект-файл связан с объектом-устройством, которому будут посылаться все IRP для обращения к этому файлу, например \Device\HarddiskVolume1 и т.д.). Когда указатель на объект-файл найден, для него создается хендл в таблице вызывающего процесса ObpCreateHandle, который опять таки уходит в другой модуль - ExCreateHandle

По ходу работы менеджера объектов выполняется куча вызовов монитора безопасноти (Reference Security Monitor) для проверки имеет ли ACCESS_TOKEN вызывающего процесса права на доступ к файлу с данным SECURITY_DESCRIPTOR-ом.

> И какие запросы доходят только до исполнительной системы и
> не доходят до ядра, а какие объекты создаются напрямую в
> ядре, не создаваясь в исполнительной части(что с
> синхронизацией вроде)???
> И чем отличается представление того же файла в файловой
> системе, исполнительной системе и в ядре????
Представление файла в файловой системе - ее личное дело. Она может хранить его как в памяти, так и на диске в любом виде, а исполнительная система работает с объектом FILE_OBJECT (который описан в DDK), а в ядре вообще нет файлов.
------------------
Немного поправлюсь. Деление на исполнительную систему и ядро не условное. Просто часть менеджеров относится к исполнительной системе, а часть - к ядру. Объекты, которые есть и в ядре и в исполнительной системе (например процесс, поток и пр.) создаются по аналогии с ООП-шным наследованием.

Например:

// kernel process
typedef struct _KPROCESS {
// ....
// ....
} KPROCESS, *PKPROCESS;

// executive process
typedef struct _EPROCESS {
KPROCESS Pcb;
// ....
// ....
} EPROCESS, *PEPROCESS;

Обрати внимание, что в начали executive процесса лежит НЕ указатель на kernel-процесс, а сам kernel-процесс. Таким образом любой указатель на executive процесс будет одновременно и указателем на kernel.
<operating systems> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2023 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach