Внутреннее устройство Windows.

Предыстория. Благодарности. Структура книги. История написания книги. Особенности четвертого издания. Инструменты для проведения экспериментов. Тематика, не рассматриваемая в книге. Подводные камни. Техническая поддержка. От Microsoft Press. ГЛАВА 1. Концепции и инструменты. Версии операционных систем Windows. Windows NT и Windows 95. Базовые концепции и термины. Windows API. Как насчет. NET и WinFX? История создания Win32 API. Сервисы, функции и процедуры. Процессы, потоки и задания. Волокна и потоки. Виртуальная память. Режим ядра и пользовательский режим. Terminal Services и несколько сеансов. Объекты и описатели. Безопасность. Реестр. Unicode. Изучение внутреннего устройства Windows. Оснастка Performance. Windows Support Tools. Ресурсы Windows. Отладка ядра. Символы для отладки ядра. Windows Debugging Tools. Отладка в пользовательском режиме. Утилита LiveKd. SoftlCE. Platform Software Development Kit (SDK). Device Driver Kit (DDK). Утилиты Sysinternals. Резюме. ГЛАВА 2. Архитектура системы. Требования и цели проекта. Модель операционной системы. Основана ли Windows на микроядре? Обзор архитектуры. Переносимость. Симметричная многопроцессорная обработка. Масштабируемость. Различия между клиентскими и серверными версиями. Проверочный выпуск. Ключевые компоненты системы. Подсистема Windows. He пострадала ли стабильность Windows от перевода USER и GDI в режим ядра? Подсистема POSIX. Подсистема OS/2. Ntdll.dll. Исполнительная система. Ядро. Объекты ядра. Поддержка оборудования. Уровень абстрагирования от оборудования. Драйверы устройств. Усовершенствования в модели драйверов Windows. Недокументированные интерфейсы. Системные процессы. Процесс IdIe. Прерывания и DPC. Процесс System и его потоки. Диспетчер сеансов (Smss). Winlogon, LSASS и Userinit. Диспетчер управления сервисами (SCM). Резюме. ГЛАВА 3. Системные механизмы. Диспетчеризация ловушек. Диспетчеризация прерываний. Обработка аппаратных прерываний. Контроллеры прерываний на платформе x86. Контроллеры прерываний на платформе x64. Контроллеры прерываний на платформе IA64. Уровни запросов программных прерываний. Увязка прерываний с IRQL. Предопределенные IRQL. Объекты «прерывание» (interrupt objects). Windows и обработка данных в реальном времени. Программные прерывания. Прерывания DPC или диспетчеризации. Прерывания APC. Диспетчеризация исключений. Необработанные исключения. Windows-поддержка отчетов об ошибках. Диспетчеризация системных сервисов. Диспетчеризация 32-разрядных системных сервисов. Диспетчеризация 64-разрядных системных сервисов. Диспетчеризация системных сервисов режима ядра. Таблицы дескрипторов сервисов. Диспетчер объектов. Объекты исполнительной системы. Структура объектов. Заголовки и тела объектов. Объекты типа. Методы объекта. Описатели объектов и таблица описателей, принадлежащая процессу. Защита объектов. Хранение объектов в памяти. Учет ресурсов. Имена объектов. Объекты «каталоги объектов» (object directory objects). Символьные ссылки (symbolic links). Пространство имен сеанса. Синхронизация. Синхронизация ядра при высоком IRQL. Взаимоблокирующие операции. Спин-блокировки. Спин-блокировки с очередями. Внутристековые спин-блокировки с очередями. Взаимоблокирующие операции в исполнительной системе. Синхронизация при низком IRQL. Объекты диспетчера ядра. Ожидание на объектах диспетчера ядра. Условия перехода объектов в свободное состояние. События с ключом и критические секции. Структуры данных. Быстрые и защищенные мьютексы. Ресурсы исполнительной системы. Блокировки с заталкиванием указателя. Обнаружение взаимоблокировки с помощью Driver Verifier. Системные рабочие потоки. Глобальные флаги Windows. Трассировка событий ядра. Wow64. Системные вызовы. Диспетчеризация исключений. Пользовательские обратные вызовы. Перенаправление файловой системы. Перенаправление реестра и отражение. Запросы управления вводом-выводом. 16-разрядные программы установки. Печать. Ограничения. Резюме. ГЛАВА 4. Механизмы управления. Реестр. Просмотр и изменение реестра. Использование реестра. Типы данных в реестре. Логическая структура реестра. HKEY_CURRENT_USER. HKEY_USERS. HKEY_CLASSES_ROOT. HKEY_LOCAL_MACHINE. HKEY_CURRENT_CONFIG. HKEY_PERFORMANCE_DATA. Анализ и устранение проблем с реестром. Как работает Regmon. Методики анализа проблем с применением Regmon. Протоколирование операций под непривилегированными учетными записями или во время входа/выхода. Внутренние механизмы реестра. Кусты. Лимиты на размеры кустов. Структура куста. Карты ячеек. Пространство имен и механизмы работы реестра. Надежность хранения данных реестра. Оптимизация операций с реестром. Сервисы. Сервисные приложения. Утилита SrvAny. Учетные записи сервисов. Учетная запись локальной системы. Учетная запись Network Service. Учетная запись Local Service. Выполнение сервисов под другими учетными записями. Интерактивные сервисы. Диспетчер управления сервисами. Буквы сетевых дисков. Запуск сервиса. Ошибки при запуске. Критерии успешной загрузки и последняя удачная конфигурация. Сбои сервисов. Завершение работы сервиса. Разделяемые процессы сервисов. Программы управления сервисами. Windows Management Instrumentation. Архитектура WMI. Провайдеры. CIM и язык Managed Object Format. Пространство имен WMI. Классы сопоставления. Реализация WMI. WMIC. Защита WMI. Резюме. Внутреннее устройство Windows. ГЛАВА 5. Запуск и завершение работы системы. Процесс загрузки. Что предшествует загрузке на платформах x86 и x64. Загрузочный сектор и Ntldr на платформах x86 и x64. Процесс загрузки на платформе IA64. Инициализация ядра и компонентов исполнительной системы. Smss, Csrss и Winlogon. Отложенные действия по переименованию файлов. Автоматически запускаемые образы. Анализ проблем при загрузке и запуске системы. Последняя удачная конфигурация. Безопасный режим. Загрузка драйверов в безопасном режиме. Программное обеспечение с поддержкой безопасного режима. Ведение протокола при загрузке в безопасном режиме. Консоль восстановления. Решение распространенных проблем загрузки. Повреждение MBR. Повреждение загрузочного сектора. Неправильная конфигурация Boot.ini. Повреждение системных файлов. Windows FiIe Protection. Повреждение куста System. Крах или зависание после вывода экрана-заставки. Завершение работы системы. Резюме. ГЛАВА 6. Процессы, потоки и задания. Внутреннее устройство процессов. Структуры данных. Переменные ядра. Счетчики производительности. Сопутствующие функции. Что делает функция CreateProcess. Этап 1: открытие образа, подлежащего выполнению. Этап 2: создание объекта «процесс». Этап 2A: формирование блока EPROCESS. Этап 2B: создание начального адресного пространства процесса. Этап 2C: создание блока процесса ядра. Этап 2D: инициализация адресного пространства процесса. Этап 2E: формирование блока PEB. Этап 2F: завершение инициализации объекта «процесс» исполнительной системы. Этап 3: создание первичного потока, его стека и контекста. Этап 4: уведомление подсистемы Windows о новом процессе. Этап 5: запуск первичного потока. Этап 6: инициализация в контексте нового процесса. Сборки, существующие в нескольких версиях. Внутреннее устройство потоков. Структуры данных. Адрес Идентификатор ETHREAD потока Адрес TEB. Переменные ядра. Счетчики производительности. Сопутствующие функции. Рождение потока. Наблюдение за активностью потоков. Планирование потоков. Обзор планирования в Windows. Уровни приоритета. Функции Windows API, связанные с планированием. Сопутствующие утилиты. Диспетчер системных ресурсов Windows. Приоритеты реального времени. Уровни прерываний и уровни приоритета. Состояния потоков. База данных диспетчера ядра. Квант. Учет квантов времени. Управление величиной кванта. Динамическое увеличение кванта. Параметр реестра для настройки кванта. Сценарии планирования. Самостоятельное переключение. Вытеснение. Завершение кванта. Завершение потока. Переключение контекста. Поток простоя. Динамическое повышение приоритета. Динамическое повышение приоритета после завершения ввода-вывода. Динамическое повышение приоритета по окончании ожидания событий и семафоров. Динамическое повышение приоритета потоков активного процесса после выхода из состояния ожидания. Динамическое повышение приоритета после пробуждения GUI-потоков. Динамическое повышение приоритета при нехватке процессорного времени. Многопроцессорные системы. База данных диспетчера ядра в многопроцессорной системе. Системы с поддержкой Hyperthreading. Системы NUMA. Привязка к процессорам. Идеальный и последний процессоры. Алгоритмы планирования потоков в многопроцессорных системах. Выбор процессора для потока при наличии простаивающих процессоров. Выбор процессора для потока в отсутствие простаивающих процессоров. Выбор потока для выполнения на конкретном процессоре (Windows 2000 и Windows XP). Выбор потока для выполнения на конкретном процессоре (Windows Server 2003). Объекты-задания. Резюме. ГЛАВА 7. Управление памятью. Введение в диспетчер памяти. Компоненты диспетчера памяти. Внутренняя синхронизация. Конфигурирование диспетчера памяти. Исследование используемой памяти. Сервисы диспетчера памяти. Большие и малые страницы. Резервирование и передача страниц. Блокировка памяти. Гранулярность выделения памяти. Разделяемая память и проецируемые файлы. Защита памяти. Запрет на выполнение. Программный вариант DEP. Копирование при записи. Диспетчер куч. Типы куч. Структура диспетчера кучи. Синхронизация доступа к куче. Ассоциативные списки. Куча с малой фрагментацией. Средства отладки. Pageheap. Address Windowing Extensions. Системные пулы памяти. Настройка размеров пулов. Мониторинг использования пулов. Ассоциативные списки. Утилита Driver Verifier. Настройка и инициализация Driver Verifier. Special Pool (Особый пул). Pool Tracking (Слежение за пулом). Force IRQL Checking (Обяз. проверка IRQL). Low Resources Simulation (Нехватка ресурсов). Структуры виртуального адресного пространства. Структуры пользовательского адресного пространства на платформе x86. Структура системного адресного пространства на платформе x86. Пространство сеанса на платформе x86. Системные PTE. Структуры 64-разрядных адресных пространств. Трансляция адресов. Трансляция виртуальных адресов на платформе x86. Каталоги страниц. Страницы таблиц и PTE. Адрес байта в пределах страницы. Ассоциативный буфер трансляции. Physical Address Extension (PAE). Трансляция виртуальных адресов на платформе IA64. Трансляция виртуальных адресов на платформе x64. Обработка ошибок страниц. Недействительные PTE. Прототипные PTE. Операции ввода-вывода, связанные с подкачкой страниц. Конфликты ошибок страницы. Страничные файлы. Дескрипторы виртуальных адресов. Объекты-разделы. Рабочие наборы. Подкачка по требованию. Средство логической предвыборки. Правила размещения. Управление рабочими наборами. Диспетчер настройки баланса и подсистема загрузки-выгрузки. Системный рабочий набор. База данных PFN. Динамика списков страниц. Подсистема записи модифицированных страниц. Структуры данных PFN. Уведомление о малом или большом объеме памяти. Оптимизаторы памяти — миф или реальность? Резюме. Внутреннее устройство Windows. ГЛАВА 8. Защита. Классы безопасности. Trusted Computer System Evaluation Criteria. Common Criteria. Компоненты системы защиты. Защита объектов. Проверка прав доступа. Идентификаторы защиты. Маркеры. Олицетворение. Ограниченные маркеры. Дескрипторы защиты и управление доступом. Присвоение ACL. Определение прав доступа. Будьте осторожны при использовании GUI-средств изменения параметров защиты. AuthZ API. Права и привилегии учетных записей. Права учетной записи. Привилегии. Суперпривилегии. Аудит безопасности. Вход в систему. Инициализация Winlogon. Как реализована SAS. Этапы входа пользователя. Политики ограниченного использования программ. Резюме. ГЛАВА 9. Подсистема ввода-вывода. Компоненты подсистемы ввода-вывода. Диспетчер ввода-вывода. Типичная обработка ввода-вывода. Драйверы устройств. Типы драйверов устройств. WDM-драйверы. Многоуровневые драйверы. Структура драйвера. Объекты «драйвер» и «устройство». Открытие устройств. Обработка ввода-вывода. Типы ввода-вывода. Синхронный и асинхронный ввод-вывод. Быстрый ввод-вывод. Ввод-вывод в проецируемые файлы и кэширование файлов. Ввод-вывод по механизму «scatter/gather». Пакеты запроса ввода-вывода. Блок стека IRP. Управление буфером IRP. Запрос ввода-вывода к одноуровневому драйверу. Обслуживание прерывания. Завершение обработки запроса на ввод-вывод. Синхронизация. Запрос ввода-вывода к многоуровневому драйверу. Порты завершения ввода-вывода. Объект loCompletion. Использование портов завершения. Как работает порт завершения ввода-вывода. Driver Verifier. Диспетчер Plug and Play (PnP). Уровень поддержки Plug and Play. Поддержка Plug and Play со стороны драйвера. Загрузка, инициализация и установка драйвера. Параметр Start. Перечисление устройств. Узлы устройств. Загрузка драйверов для узла устройств. Установка драйвера. Диспетчер электропитания. Работа диспетчера электропитания. Участие драйверов в управлении электропитанием. Как драйвер управляет электропитанием устройства. Резюме. ГЛАВА 10. Управление внешней памятью. Базовая терминология. Драйверы дисков. Ntldr. Драйвер класса дисков, порт- и минипорт-драйверы. Драйверы iSCSI. МРIО-драйверы. Объекты «устройство» для дисков. Диспетчер разделов. Управление томами. Эволюция управления внешней памятью. Базовые диски. Разбиение на разделы по схеме MBR. Разбиение на разделы по схеме GPT. Диспетчер томов на базовых дисках. Динамические диски. База данных LDM. Схемы разбиения на разделы LDM и GPT или MBR. Диспетчер томов на динамических дисках. Управление составными томами. Перекрытые тома. Чередующиеся тома. Зеркальные тома. Тома RAID-5. Пространство имен томов. Диспетчер монтирования. Точки монтирования. Монтирование томов. Операции ввода-вывода на томах. Служба виртуального диска. Служба теневого копирования тома. Теневые копии для общих папок. Резюме. ГЛАВА 11. Диспетчер кэша. Основные возможности диспетчера кэша. Единый централизованный системный кэш. Диспетчер памяти. Когерентность кэша. Кэширование виртуальных блоков. Кэширование потоков данных. Поддержка восстанавливаемых файловых систем. Управление виртуальной памятью кэша. Размер кэша. LargeSystemCache. Виртуальный размер кэша. Размер рабочего набора кэша. Физический размер кэша. Структуры данных кэша. Общесистемные структуры данных кэша. Структуры данных кэша, индивидуальные для каждого файла. Интерфейсы файловых систем. Копирование данных в кэш и из него. Кэширование с применением интерфейсов проецирования и фиксации. Кэширование с применением прямого доступа к памяти. Быстрый ввод-вывод. Опережающее чтение и отложенная запись. Интеллектуальное опережающее чтение. Кэширование с обратной записью и отложенная запись. Отключение отложенной записи для файла. Принудительное включение в кэше сквозной записи на диск. Сброс проецируемых файлов. Дросселирование записи. Системные потоки. Резюме. Внутреннее устройство Windows. ГЛАВА 12. Файловые системы. Файловые системы Windows. CDFS. UDF. FAT12, FAT16 и FAT32. Элементы каталога для файлов. NTFS. Архитектура драйвера файловой системы. Локальные FSD. Удаленные FSD. Работа файловой системы. Явный файловый ввод-вывод. Подсистемы записи модифицированных и спроецированных страниц. Подсистема отложенной записи. Поток, выполняющий опережающее чтение. Обработчик ошибок страниц. Драйверы фильтров файловой системы. Filemon. System Restore. Анализ проблем в файловой системе. Базовый и расширенный режимы Filemon. Методики анализа проблем с применением Filemon. Цели разработки и особенности NTFS. Требования к файловой системе класса «high end». Восстанавливаемость. Защита. Избыточность данных и отказоустойчивость. Дополнительные возможности NTFS. Множественные потоки данных. Имена на основе Unicode. Универсальный механизм индексации. Динамическое переназначение плохих кластеров. Жесткие связи и точки соединения. Сжатие и разреженные файлы. Протоколирование изменений. Квоты томов, индивидуальные для каждого пользователя. Отслеживание ссылок. Шифрование. Поддержка POSIX. Дефрагментация. Фрагментированный файл Непрерывный файл. Поддержка доступа только для чтения. Драйвер файловой системы NTFS. Структура NTFS на диске. Тома. Кластеры. Главная таблица файлов. Структура файловых ссылок. Записи о файлах. Имена файлов. Резидентные и нерезидентные атрибуты. Сжатие данных и разреженные файлы. Сжатие разреженных данных. Сжатие неразреженных данных. Разреженные файлы. Файл журнала изменений. Индексация. Идентификаторы объектов. Отслеживание квот. Консолидированная защита. Точки повторного разбора. Поддержка восстановления в NTFS. Эволюция архитектуры файловых систем. Файловые системы с точной записью. Файловые системы с отложенной записью. Восстанавливаемые файловые системы. Протоколирование. Сервис файла журнала. Типы записей журнала. Записи модификации. Записи контрольной точки. Восстановление. Проход анализа. Проход повтора. Проход отмены. Восстановление плохих кластеров в NTFS. Стандартная. Механизм EFS. Стойкость алгоритмов шифрования FEK. Первое шифрование файла. Создание связок ключей. Шифрование файловых данных. Сводная схема процесса шифрования. Процесс расшифровки. Кэширование расшифрованного FEK. Расшифровка файловых данных. Резервное копирование шифрованных файлов. Резюме. ГЛАВА 13. Поддержка сетей. Сетевая архитектура Windows. Эталонная модель OSI. Сетевые компоненты Windows. Сетевые API. Windows Sockets. Функционирование Winsock на клиентской стороне. Функционирование Winsock на серверной стороне. Расширения Winsock. Принципы расширения Winsock. Реализация Winsock. Windows Sockets Direct. SAN-соединения. Архитектура WSD. Remote Procedure CaII (RPC). Функционирование RPC. Защита в RPC. Реализация RPC. API-интерфейсы доступа к Web. WinInet. WinHTTP. HTTP. Именованные каналы и почтовые ящики. Функционирование именованных каналов. Функционирование почтового ящика. Реализация именованных каналов и почтовых ящиков. NetBIOS. NetBIOS-имена. Функционирование NetBIOS. Реализация NetBIOS API. Другие сетевые API. RTC. DCOM. Message Queuing. UPnP. Поддержка нескольких редиректоров. Маршрутизатор многосетевого доступа. Многосетевой UNC-провайдер. Разрешение имен. DNS. WlNS. Драйверы протоколов. Расширения TCP/IP. Трансляция сетевых адресов. IP-фильтрация. IP-фильтр и ловушка фильтра. IP-безопасность. Драйверы NDIS. Разновидности минипорт-драйверов NDIS. NDIS, ориентированная на логические соединения. Remote NDIS. QoS. Привязка. Многоуровневые сетевые сервисы. Удаленный доступ. Active Directory. Network Load Balancing. Служба репликации файлов. DFS. Резюме. ГЛАВА 14. Анализ аварийного дампа. Почему происходит крах Windows? «Синий экран». Файлы аварийного дампа. Генерация аварийного дампа. Windows Error Reporting. Анализ аварийных дампов через Интернет. Базовый анализ аварийных дампов. Notmyfault. Базовый анализ. Детальный анализ. Средства анализа проблем, вызывающих крах. Переполнение буфера и особый пул. Перезапись кода и защита системного кода от записи. Углубленный анализ аварийных дампов. Засорение стека. Зависание или отсутствие отклика системы. Если аварийного дампа нет.