- •Режимы ядра и пользователя Windows
- •Процесс, контекст процесса и потоки
- •Архитектура Windows nt
- •Уровень аппаратных абстракций
- •Диспетчер объектов
- •2. Монитор ссылок безопасности
- •3. Диспетчер процессов
- •4. Подсистема Plug and Play
- •6. Диспетчер виртуальной памяти
- •7. Диспетчер кэша
- •5. Диспетчер энергопитания
- •1. Программный интерфейс приложений ввода-вывода (I/o api)
- •2. Диспетчер ввода-вывода (I/o Manager)
- •3. Драйверы файловых систем
- •Графическая подсистема
- •Пользовательский режим
Графическая подсистема
графическая подсистема демонстрируется в режиме ядра, хотя некоторая область подсистемы также представлена и в пользовательском режиме. В Windows 2000 для повышения производительности значительный объем кода графической подсистемы был перемещен из пользовательского режима в режим ядра. В данном случае к понятию "графическая подсистема" относится весь программный код, предназначенный для обработки оконного интерфейса и поддерживающий видеоустройства, сканеры, принтеры и т.д.
Пользовательский режим
Подсистема Win32
Это наиболее важный компонент Windows NT, особенно для программистов. На основе программного интерфейса Win32 создаются другие подсистемы, такие, как POSIX.
Программный интерфейс приложений Win32 можно разделить на три категории.
1. Обработка оконного интерфейса и API для сообщений оконного интерфейса реализованы в виде динамически подключаемой библиотеки user32.dll. Эта библиотека подключается приложениями, использующими интерфейсы, которые предоставляются этим файлом. При этом несколько приложений во время работы задействуют только одну ко пию библиотеки.
2. Графический API реализован в виде динамически подключаемой библиотеки gdi32.dll. В версиях Windows NT до Windows 2000 библиотека gdi32. dll являлась клиентом, подключаемым к серверному процессу Win32 (рассматривается далее), так как соответствующие функции были реализованы в серверном процессе. А сервер Win32, в свою очередь, вызывал компонент режима ядра для графической подсистемы. В Windows 2000 библиотека gdi32.dll вызывает этот компонент безпосредников.
3. Базовые API, например функции открытия файла (CreateFile), чтения файла (ReadFile) и записи файла (WriteFile), реализованы в динамически подключаемой библиотеке, которая называется ntdll.dll. При необходимости эта библиотека делает вызовы к выполняемому модулю Windows в режиме ядра. Для этого библиотека использует одно из 256 прерываний, поддерживаемых архитектурой Intel x86. В частности, используется прерывание 46 (десятичный номер 46, шестнадца-теричный — 0х2Е). Обработчик прерывания2 идентифицирует как запрошенный API (выполнив поиск по таблице), так и передаваемые ему параметры. Если все параметры прошли проверку, обработчик вызывает соответствующую подсистему выполняемого модуля Windows для выполнения запрошенной операции.
