, Внутреннее устройство Windows, Часть 1, 7е изд

Внутреннее устройство Windows, Часть 1, 7е изд

Павел Йосифович

Алекс Ионеску

Марк Э. Руссинович

Дэвид А. Соломон

 

Опубликовано Microsoft Press


Первая публикация на английском языке: Май 2017

Library of Congress Control Number: 2014951935

Все права защищены. Оригинал отпечатан в Соединённых Штатах Америки. Оригинал данной публикации защищён авторским правом и должны быть получены разрешения от публикующей стороны прежде чем будет разрешено воспроизведение, сохранение в системах восстановления, либо передача в любой форме или любыми средствами, электронными, механическими, фотокопированием, записью либо каким иным способом. За информацией относящейся к разрешениям, формам запросов, а также соответствующим контактам внутри Pearson Education Global Rights & Permissions Department, пожалуйста, обращайтесь в www.pearsoned.com/permissions/. В отношении использования информации, содержащейся в настоящем документе не предполагается никакой патентной ответственности. Хотя все возможные меры предосторожности были приняты при подготовке данной книги, издатель и автор не несут никакой ответственности за ошибки или упущения. Также нет никакой ответственности за ущерб, возникший в результате использования информации, содержащейся в настоящем документе.

Оригинал опубликован Microsoft Press

ISBN-13 978-0-7356-8418-8

ISBN-10 0-7356-8418-9

www.pearsoned.com

2017-05-04

 Состав исполнителей

Авторы
Павел Йосифович
Алекс Ионеску
Марк Э. Руссинович
Дэвид А. Соломон
Редактор выпуска
Дивон Масгрейв
Редакционное производство
Polymath Publishing
Технический эксперт
Кристоф Насарр
Ответственный за макет
Шаун Морнингстар
Составитель указателя
Служба индексации Келли Талбот
Корректор
Корина Либиджайоара
Разработчик переплёта
Twist Creative, Seattle

 Об авторах

Павел Йосифович .

Алекс Ионеску .

Марк Э. Руссинович .

Дэвид А. Соломон .

 www.pearsoned.com

 Содержание

Введение
История этой книги
Изменения седьмой редакции
Эксперименты своими руками
Не обсуждаемые темы
Предупреждение и предостережение
Ваш предполагаемый уровень
Как построена эта книга
Соглашения книги
Сопроводительные материалы
Благодарности
Ошибки и поддержка книги
Обратная связь
Глава 1. Концепции и инструменты
Версии операционной системцы Windows
Windows 10 и последующие версии Windows
Windows 10 и OneCore
Основополагающие термины и понятия
Windows API
Службы, функции и процедуры
Процессы
Потоки
Задания
Виртуальная память
Сопоставление режима ядра и режима пользователя
Гипервизор
Встроенное ПО
Службы терминалов и множественные сеансы
Объекты и дескрипторы
Безопасность
Реестр
Unicode
Погружаясь во внутреннее устройство Windows
Монитор производительности и Монитор ресурсов
Отладка ядра
Набор разработки ПО Windows
Инструментарий драйверов Windows
Утилиты Sysinternals
Выводы
Глава 2. Архитектура системы
Требования и цели разработки
Модель операционной системы
Обзор архитектуры
Переносимость
Симметричная многопроцессорность
Масштабируемость
Различия между версиями клиента и сервера
Отладочная сборка
Обзор архитектуры безопасности на основе виртуализации
Ключевые компоненты системы
Подсистемы среды и подсистема библиотек
Прочие подсистемы
Супервизор
Ядро
Уровень аппаратной абстракции
Драйверы устройств
Системные процессы
Выводы
Глава 3. Процессы и задания
Создание процесса
Аргументы функций CreateProcess*
Создание современных процессов Windows
Создание прочих видов процессов
Внутреннее устройство процесса
Защищённые процессы
PPL
Сторонняя поддержка PPL
Минимальные и Пико процессы
Минимальные процессы
Пико процессы
Трастлеты (безопасные процессы)
Структура трастлета
Метаданные политики трастлета
Атрибуты трастлета
Встроенные в систему трастлеты
Подлинность трастлета
Изолированные службы режима пользователя
Системные вызовы доступа к трастлету
Поток CreateProcess
Этап 1: Преобразование и проверка правильности параметров и флагов
Этап 2: Открытие подлежащего исполнению образа
Этап 3: Создание объекта процесса супервизора
Этап 4: Создание начального потока, его стека и контектста
Этап 5: Выполнение инициализации подсистемы, относящейся к Windows
Этап 6: Запуск исполнения начального потока
Этап 7: Выполнение процесса инициализации в контексте полученного нового процесса
Прекращение процесса
Загрузчик образа
Начальная инициализация процесса
Разрешение имён DLL и перенаправление
База данных загруженных модулей
Синтаксический разбор импорта
Инициализация процесса после импорта
SwitchBack
Наборы API
Задания
Пределы заданий
Работа с заданием
Вложенные задания
Контейнеры Windows (сервер silo)
Выводы
Глава 4. Потоки
Создание потоков
Внутреннее устройство потоков
Структуры данных
Порождение потока
Исследование активности потока
Ограничения потоков защищённого процесса
Планирование потоков
Обзор планирования Windows
Уровни приоритетов
Состояния потока
Квант
Стимулирование приоритета
Переключение контекста
Простаивающие потоки
Многопроцессорные системы
Выбор потока в многопроцессорных системах
Выбор процессора
Неоднородное планирование (big.LITTLE)
Основанное на группах планирование
Динамическое планирование справедливого разделения
Ограничения скоростей ЦПУ
Динамическое добавление и подстановка процессора
Рабочие фабрики (пулы потоков)
Создание рабочей фабики
Выводы
Глава 5. Управление памятью
Введение в диспетчер памяти
Компоненты диспетчера памяти
Большие и малые страницы
Изучение загруженности памяти
Внутренняя синхронизация
Предоставляемые диспетчером памяти службы
Состояния страниц и выделение памяти
Запрос на выделение и предел выделения
Захват памяти
Грануляция выделения
Совместно используемая память и файлы соответствия
Защита памыти
Защита от выполнения
Копирование записью
Администрирование
Оконные расширения адреса
Кучи режима ядра (пулы системной памяти)
Размеры пула
Мониторинг использования пула
Ассоциативные списки
Диспетчер кучи
Обработка кучи
Типы куч
Куча NT
Синхронизация кучи
Куча со слабой фрагментацией
Сегмент кучи
Функции безопасности кучи
Функции отладки кучи
Pageheap
Устойчивая к отказам куча
Структуры виртуального адресного пространства
Структуры пространства адресов x86
Структуры адресного пространства x86 сиситем
Пространство сеанса x86
Записи таблицы системных страниц
Структуры пространства адресов ARM
Структуры пространства адресов 64-бит
Ограничения виртуальной адресации x64
Динамическое управление системным виртуальным адресным пространством
Квоты системного виртуального адресного пространства
Структуры пространства адресов пользователя
Трансляция адресов
Трансляция виртуальных адресов x86
Буфер ассоциативной трансляции адресов
Трансляция виртуальных адресов x64
Трансляция виртуальных адресов ARM
Обработка отказов страниц
Недействительные PTE
PTE прототипы
Внутристраничный ввод/ вывод
Конфликтные отказы страниц
Кластерные отказы страниц
Файлы страниц
Запрос на выделение и предел выделения системе
Запрос на выделение и размер файла страниц
Стеки
Стеки пользователя
Стеки ядра
Стек DPC
Дескрипторы виртуальных адресов
Дескрипторы виртуальных адресов процесса
Карусельные дескрипторы виртуальных адресов
NUMA
Объекты раздела
Рабочие наборы
Запрос страниц
Логическоая упреждающая выборка и ReadyBoot
Политика размещения
Управление рабочим набором
Диспетчер балансировки набора и планировщик подкачки
Системные рабочие наборы
События уведомления памяти
База данных номеров кадров страниц
Динамики списков страниц
Приоритеты страниц
Подсистемы записи изменённых страниц и страниц соответствия
Структуры данных PFN
Резервирование файла страниц
Ограничения физической памяти
Пределы памяти клиента Windows
Сжатие памяти
Иллюстрация сжатия
Архитектура сжатия
Разделы памяти
Объединение памяти
Фаза поиска
Фаза классификации
Фаза объединения страниц
От частных к совместно используемым PTE
Выпуск объединённых страниц
Анклавы памяти
Программный интерфейс
Инициализация анклава памяти
Построение анклава
Загрузка данных в анклав
Инициализация анклава
Упреждающее управление памятью (SuperFetch)
Компоненты
Отслеживание и регистрация
Сценарии
Приоритет страницы и повторная балансировка
Устойчивое выполнение
ReadyBoost
ReadyDrive
Отражение процессов
Выводы
Глава 6. Система ввода/ вывода
Компоненты системы ввода/ вывода
Диспетчер ввода/ вывода
Типичная обработка ввода/ вывода
Уровни запросов прерывания и вызовы отложенной процедуры
Уровни запросов прерывания
Вызовы отложенной процедуры
Драйверы устройств
Типы драйверов устройств
Структура драйвера
Объекты драйвера и объекты устройства
Открытие устройств
Обработка ввода/ вывода
Типы ввода/ вывода
Пакеты запроса ввода/ вывода
Запросы ввода/ вывода к одноуровневому драйверу аппаратному драйверу
Запросы ввода/ вывода к многоуровневым драйверам
Не зависящий от потоков ввод/ вывод
Отмена ввода/ вывода
Порты выполнения ввода/ вывода
Приоритезация ввода/ вывода
Оповещение контейнера
Driver Verifier
Опции проверки, относящиеся к вводу/ выводу
Опции проверки, относящиеся к памяти
Диспетчер PnP
Уровень поддержки PnP
Перечисление устройств
Стеки устройств
Поддержка драйвером PnP
Установка драйвера PnP
Обычные загрузка и установка драйвера
Загрузка драйвера
Установка драйвера
Windows Driver Foundation
Общая схема написания драйвера уровня ядра
Общая схема написания драйвера уровня пользователя
Диспетчер электропитания
Connected Standby и Modern Standby
Операции диспетчера электропитания
Работа драйвера по управлению электропитанием
Управление электропитанием из драйвера и приложения
Общая схема управления питанием
Запросы на доступность электропитания
Выводы
Глава 7. Безопасность
Ранжирование безопасности
Критерии оценки Заслуживающих доверия систем
Общие критерии
Компоненты системы безопасности
Безопасность на основе виртуализации
Credential Guard
Device Guard
Защита объектов
Проверка учётных записей
Идентификаторы безопасности
Учётные записи виртуальных служб
Дескрипторы безопасности и управление доступом
Динамическое управление доступом
API AuthZ
Условный ACE
Права и привилегии учётной записи
Права и привилегии учётной записи
Привилегии
Супер привилегии
Маркеры учётных записей процессов и потоков
Аудит безопасности
Аудит учётной записи объекта
Политика Глобального аудита
Настройка расширенной политики аудита
AppContainer
Обзор приложений UWP
Собственно AppContainer
Регистрация
Инициализация Winlogon
Этапы входа пользователя в систему
Подтверждённая аутентификация
Среда биометрии Windows
Windows Hello
Управление учётными записями пользователей и виртуализация
Виртуализация файловой системы и реестра
Повышение полномочий
Эксплуатация миграций
Политики миграции процесса
Целостность потока управления
Декларации безопасности
Идентификация приложения
AppLocker
Политики ограничения ПО
Защита от исправлений ядра
PatchGuard
HyperGuard
Выводы
Указатель

 Введение

 История этой книги

 Изменения седьмой редакции

 Эксперименты своими руками

 Не обсуждаемые темы

 Предупреждение и предостережение

 Ваш предполагаемый уровень

 Как построена эта книга

 Соглашения книги

 Сопроводительные материалы

Мы включили включили сопроводительные материалы чтобы обогатить вашу практику обучения. Сопроводительные материалы к этой книге доступны на следующей странице: https://aka.ms/winint7ed/downloads.

Также мы выложили все исходные коды для тех инструментов, которые были написаны специально для данной книги: https://github.com/zodiacon/windowsinternals.

 Благодарности

 Ошибки и поддержка книги

 Обратная связь

l>