Внутреннее устройство 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.
- Резюме.
- ГЛАВА 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.
- Уведомление о малом или большом объеме памяти.
- Оптимизаторы памяти — миф или реальность?
- Резюме.
- ГЛАВА 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.
- Виртуальный размер кэша.
- Размер рабочего набора кэша.
- Физический размер кэша.
- Структуры данных кэша.
- Общесистемные структуры данных кэша.
- Структуры данных кэша, индивидуальные для каждого файла.
- Интерфейсы файловых систем.
- Копирование данных в кэш и из него.
- Кэширование с применением интерфейсов проецирования и фиксации.
- Кэширование с применением прямого доступа к памяти.
- Быстрый ввод-вывод.
- Опережающее чтение и отложенная запись.
- Интеллектуальное опережающее чтение.
- Кэширование с обратной записью и отложенная запись.
- Отключение отложенной записи для файла.
- Принудительное включение в кэше сквозной записи на диск.
- Сброс проецируемых файлов.
- Дросселирование записи.
- Системные потоки.
- Резюме.
- ГЛАВА 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.
- Базовый анализ.
- Детальный анализ.
- Средства анализа проблем, вызывающих крах.
- Переполнение буфера и особый пул.
- Перезапись кода и защита системного кода от записи.
- Углубленный анализ аварийных дампов.
- Засорение стека.
- Зависание или отсутствие отклика системы.
- Если аварийного дампа нет.
М. Руссинович, Д. Соломон.