Книга: 2.Внутреннее устройство Windows (гл. 5-7)

Smss, Csrss и Winlogon

Smss, Csrss и Winlogon

Smss похож на любой другой процесс пользовательского режима, но имеет два существенных отличия. Во-первых, Windows считает его доверяемой (trusted) частью системы. Во-вторых, Smss является встроенным (native) приложением. Как доверяемый компонент Smss может выполнять операции, доступные лишь немногим процессам, например создавать маркеры защиты. A как встроенное приложение Smss использует не Windows API, а базовые API-функции исполнительной системы, в совокупности называемые Windows Native API. Smss не обращается к Windows API, поскольку при его запуске подсистема Windows еще не функционирует. Запуск подсистемы Windows и является одной из его первых задач.

Затем Smss вызывает диспетчер конфигурации, который завершает инициализацию реестра, заполняя все его разделы. Диспетчер конфигурации запрограммирован так, что ему известно местонахождение всех кустов реестра на диске, кроме содержащих пользовательские параметры. Пути ко всем загружаемым им кустам реестра записываются в раздел HKLMSYSTEMCurrentControlSetControlHivelist.

Основной поток Smss выполняет следующие инициализирующие операции.

1. Создает объект «порт LPC» (SmApiPort) и два потока, ожидающие клиентские запросы (например, на загрузку новой подсистемы или на создание сеанса).

2. Определяет символьные ссылки на имена устройств MS-DOS (вроде COM1 и LPT1).

3. Если установлены Terminal Services, создает в пространстве имен диспетчера объектов каталог Sessions (для нескольких сеансов).

4. Запускает программы, указанные в HKLMSYSTEMCurrentControlSetCon-trolSession ManagerBootExecute. Как правило, в нем содержится одна команда на зaпycк Autochk (версия Chkdsk, работающая на этапе загрузки).

5. Выполняет отложенные действия по переименованию и удалению файлов, указанные в разделах HKLMSYSTEMCurrentControlSetControlSession ManagerPendingFileRenameOperations и HKLMSYSTEMCurrentControlSetControlSession ManagerPendingFileRenameOperations2.

6. Открывает известные DLL и создает для них объекты «раздел» в каталоге Knowndlls пространства имен диспетчера объектов. Список DLL, считаемых известными, находится в разделе HKEY_LOCAL_MACHINESYSTEM CurrentControlSetControlSession ManagerKnownDLLs, а путь к каталогу, где расположены эти DLL, хранится в параметре Dlldirectory этого раздела. Об использовании разделов Known DLLs при загрузке DLL см. главу 6.

7. Создает дополнительные страничные файлы. Их конфигурация хранится в разделе HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl Session ManagerMemory ManagementPagingFiles.

8. Инициализирует реестр. Диспетчер конфигурации заполняет реестр, загружая кусты HKLMSAM, HKLMSECURITY и HKLMSOFTWARE. Хотя информация о местонахождении файлов кустов содержится в разделе HKLM SYSTEMCurrentControlSetControlHivelist, диспетчер конфигурации ищет эти файлы в каталоге WindowsSystem32Config.

9. Создает системные переменные окружения, определенные в HKLMSystemCurrentControlSetSession ManagerEnvironment.

10. Загружает часть подсистемы Windows, работающую в режиме ядра (Win32k.sys). Smss определяет местонахождение Win32k.sys и других загружаемых им компонентов по путям, хранящимся в HKLMSYSTEMCurrentControlSetControlSession Manager. Инициализирующий код в Win32k.sys использует видеодрайвер для переключения экрана в разрешение, определенное в профиле по умолчанию. Таким образом, в этот момент видеоадаптер переключается с VGA-режима, используемого загрузочным видеодрайвером, в выбранное для данной системы разрешение.

11. Запускает процессы подсистем, в том числе Csrss. (Как говорилось в главе 2, подсистемы POSIX и OS/2 в Windows 2000 запускаются по требованию.)

12.3апускает процесс Winlogon. Этапы запуска Winlogon кратко описываются ниже.

1З. Создает порты LPC для сообщений об отладочных событиях (DbgSsApiPort и DbgUiApiPort) и потоки, прослушивающие эти порты.

Оглавление книги

Оглавление статьи/книги

Генерация: 1.346. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз