Подсистемы окружения
Как уже было показано, в состав Windows 2000 входит три подсистемы окружения Win32, POSIX и OS/2.
Подсистема Win32 состоит из следующих основных элементов:
- процесса подсистемы окружения (Csrss.exe), предоставляющего:
o поддержку консольных (текстовых) окон,
o поддержку создания и удаления процессов и потоков,
o другие функции типа GetTempFile, DefineDosDevice, TxitWindowsEx, а также некоторые функции поддержки естественных языков,
- драйвера режима ядра (Win32k.sys), включающего:
o диспетчер окон, управляющий прорисовкой и выводом окон на экран, принимающий ввод с клавиатуры, мыши и других устройств, а также передающий пользовательские сообщения приложениям,
- DLL -модулей подсистем (Kernel32.dll, Advapi32.dll, User32.dll, Gdi32.dll), транслирующих вызовы документированных функций Win32 API в вызовы соответствующих недокументированных сервисов режима ядра из Ntoskrnl.exe и Win32.sys,
- драйверов графических устройств, представляющих собой специфические для конкретного оборудования драйверы дисплея, принтера и минипорт-драйверы видеокарт.16.12.14
|
|
Подсистема POSIX (Portable Operating System Interface Based on Unix – переносимый интерфейс операционной системе на основе UNIX) – это совокупность международных стандартов на интерфейсы операционных систем типа UNIX. Набор функций, доступный приложениям POSIX по умолчанию, строго ограничен сервисами, определяемыми стандартом POSIX.1. Эти ограничения заключаются в том, что приложение POSIX не может создать поток или окно в Windows 2000, а также не может использовать RPC (Remote Procedure Call – стандарт сетевого программирования, позволяющий создавать приложения, состоящие из произвольного числа процедур, часть из которых выполняется локально, а часть – на удаленных компьютерах через сеть) и сокеты (конечная точка коммуникационного соединения).
Подсистема OS/2, как и подсистема POSIX, обладает ограниченной функциональностью и поддерживает лишь 16-разрядные приложения OS/2 версии 1.2 с символьным или графическим вводом-выводом. Как и подсистема POSIX, подсистема OS/2 автоматически запускается при первой активизации OS/2 -совместимого приложения и продолжает работать до перезагрузки системы.
Модуль Ntdll.dll – специальная библиотека системной поддержки, необходимая в основном при использовании DLL -подсистем. Она содержит функции двух типов:
- интерфейсы диспетчера системных сервисов (System Service Dispatch Stubs) к сервисам исполнительной системы Windows 2000,
- внутренние функции поддержки, используемые подсистемами, DLL подсистем и другими компонентами операционной системы.
Первая группа функций предоставляет интерфейс к сервисам исполнительной системы Windows 2000, которые можно вызывать из пользовательского режима. Таких функций более 200, например, NtCreateFile, NtSetEvent и т. д. Большинство из этих функций доступно через Win32 API, но некоторые из них доступны только для внутреннего применения. Для каждой из функций в Ntdll существует точка входа с именем функции. В коде функции содержится специфическая для конкретной аппаратуры команда перехода в режим ядра для вызова системных сервисов, которая после проверки некоторых параметров вызывает уже настоящий сервис режима ядра из Ntoskrnl.exe.
|
|
Ntdll включает также множество функций поддержки, например:
- загрузчик образов (функции, имена которых начинаются с Ldr),
- диспетчер куч,
- функции для взаимодействия с процессом подсистемы Win32 (функции, имена которых начинаются с Csr),
- универсальные процедуры библиотек времени выполнения (функции, имена которых начинаются с Rtl),
- диспетчер АРС (Asynchronous Procedure Call) пользовательского режима и
- диспетчер исключений.
Исполнительная система
Исполнительная система (Executive) находится на верхнем уровне Ntoskrnl.exe (ядро располагается на более низком уровне). В ее состав входят следующие функции:
- экспортируемые функции, доступные для вызова из пользовательского режима, называемые системными сервисами и экспортирующиеся через Ntdll; большинство сервисов доступно через Win32 API или API других подсистем окружения, однако, некоторые из них недоступны через документированные функции (например, LPC – Local Procedure Call, локальный вызов процедуры, функции запросов типа NtQueryInformationxxx, специализированные функции типа NtCreatePagingFile и т. д.),
- экспортируемые функции, доступные для вызова только из режима ядра и описанные в Windows 2000 DDK (Driver Development Kit) или в Windows 2000 IFS (Installable File System) Kit,
- экспортируемые функции доступные для вызова только из режима ядра, но не описанные в Windows 2000 DDK или в Windows 2000 IFS Kit (например, функции, используемые видеодрайвером, работающим на этапе загрузки, чьи имена начинаются с Inbv),
- функции, определенные, как глобальные, но не экспортируемые символы (например, внутренние функции поддержки, вызываемые в Ntoskrnl, чьи имена начинаются с Iop – функции поддержки диспетчера ввода-вывода – или с Mi – функции поддержки управления памятью),
- внутренние функции в каком-либо модуле, не определенные как глобальные символы.
Исполнительная система состоит из следующих основных компонентов:
- диспетчер конфигурации, отвечающий за управление системным реестром,
- диспетчер процессов и потоков, создающий и завершающий процессы и потоки,
- справочный монитор безопасности, реализующий политики безопасности на локальном компьютере (он охраняет ресурсы операционной системы и контролирует объекты во время выполнения),
- диспетчер ввода-вывода, реализующий аппаратно-независимый ввод-вывод и отвечающий за пересылку ввода-вывода нужным драйверам устройств для дальнейшей обработки.
- диспетчер Plug and Play, определяющий, какие драйверы нужны для поддержки конкретного устройства, и загружающий их; требования каждого устройства к аппаратным ресурсам определяются в процессе перечисления устройств (в зависимости от требований устройств диспетчер PnP распределяет такие ресурсы, как порты ввода-вывода, IRQ, каналы DMA и области памяти, а также отвечает за посылку соответствующих уведомлений об изменениях в аппаратном обеспечении системы при добавлении или удалении устройств),
- диспетчер электропитания, который координирует события, связанные с электропитанием и генерирует уведомления системы управления электропитанием для драйверов (изменение энергопотребления отдельных устройств возлагается на их драйверы, но координируется диспетчером электропитания),
- подпрограммы WMI (Windows Management Instrumentation – инструментарий управления Windows), позволяющие драйверам публиковать информацию о своих рабочих характеристиках и конфигурации, а также получать команды от службы WMI пользовательского режима (потребители информации WMI могут находиться как на локальной машине, так и на любом компьютере в сети),
|
|
- диспетчер кэша, повышающий производительность файлового ввода-вывода за счет сохранения в основной памяти дисковых данных, к которым недавно было обращение (это уменьшает также общее число обращений к диску для записи, так как модифицированные данные предварительно накапливаются в памяти в течение определенного периода),
- диспетчер виртуальной памяти, реализующий виртуальную память – схему управления памятью, позволяющую выделять каждому процессу большое закрытое адресное пространство, объем которого может превышать доступную физическую память.
В состав исполнительной системы входит также четыре основные группы функций поддержки, которые используются уже перечисленными компонентами. К ним относятся:
- диспетчер объектов, который создает, управляет и удаляет объекты и абстрактные типы данных исполнительной системы (они используются для представления таких ресурсов операционной системы, как процессы, потоки и различные синхронизирующие объекты),
- механизм LPC (Local Procedure Call), который передает сообщения между клиентским и серверным процессами на одном компьютере (LPC является оптимизированной версией RPC – Remote Procedure Call) и представляет собой стандартный механизм взаимодействия между клиентскими и серверными процессами через сеть,
- набор стандартных библиотечных функций для обработки строк, арифметических операций, преобразования типов данных и обработки структур безопасности,
- подпрограммы поддержки исполнительной системы, например, для выделения системной памяти, доступа к памяти с взаимоблокировкой, а также два специальных типа синхронизирующих объектов: ресурс (Recourse) и быстродействующий мьютекс (Fast Mutex).