Внутреннее устройство windows руссинович часть 2

Вторая часть статьи о внутреннем устройстве операционной системы Windows предоставляет ещё больше информации о том, как работает эта мощная платформа. Автор этой серии статей, Марк Руссинович, является одним из главных экспертов в области Windows и совместно с его коллегой Dave Solomon’ом написал многочисленные книги о внутреннем устройстве ОС Windows.

В этой части статьи Руссинович делится своим опытом и экспертизой в области системных вопросов операционной системы. Он освещает различные аспекты работы операционной системы, начиная с управления памятью и заканчивая работой с файловой системой. Также особое внимание уделено различным инструментам, которые разработчики могут использовать для анализа и отладки процессов в Windows.

Помимо того, что в статье представлены подробные объяснения основных концепций и принципов работы Windows, авторы также рассказывают о своем опыте и экспериментах в области безопасности операционной системы. Они обсуждают различные уязвимости и угрозы, с которыми операционная система может столкнуться, и предлагают методы защиты и противодействия вредоносным атакам.

Статья «Внутреннее устройство Windows: рассмотрение Руссиновичом (часть 2)» является неотъемлемым ресурсом для всех, кто заинтересован в работе операционной системы Windows на глубоком уровне. Благодаря четкому и подробному объяснению сложных технических концепций, статья помогает разработчикам и администраторам лучше понять внутреннее устройство Windows и эффективно решать различные проблемы в работе ОС.

Содержание

  1. Разбор внутреннего устройства Windows: анализ Сергеем Руссиновичем
  2. Структура системы
  3. Процессы и потоки
  4. Работа с файлами и директориями
  5. Память и управление ресурсами
  6. Работа с реестром
  7. Сетевое взаимодействие и безопасность

Разбор внутреннего устройства Windows: анализ Сергеем Руссиновичем

В своих исследованиях Руссинович рассматривает различные аспекты внутренней структуры Windows, включая работу с файлами, реестром, процессами, памятью и многим другим. Он использует методы обратного инжиниринга и анализа программного кода, чтобы раскрыть тайны операционной системы.

Благодаря анализу Руссиновича стали известны многие важные детали о работе Windows. Например, он исследовал механизмы работы виртуальной памяти и показал, как операционная система разделяет физическую и виртуальную память для эффективного управления ресурсами. Также он исследовал структуру файловой системы NTFS и принципы работы с файлами и каталогами.

Анализ Руссиновича позволяет понять, как Windows управляет процессами и потоками, как она обрабатывает системные вызовы и как внутри системы организована коммуникация между различными компонентами. Он также исследовал механизмы безопасности операционной системы и выявил некоторые уязвимости, которые могут быть использованы злоумышленниками.

Анализ внутреннего устройства Windows Сергеем Руссиновичем является ценным источником информации для программистов, системных администраторов и всех, кто интересуется операционной системой Windows. Его исследования позволяют разобраться в том, как работает эта система и как управлять ее ресурсами для достижения максимальной эффективности и безопасности.

Структура системы

Внутреннее устройство операционной системы Windows основывается на иерархической структуре, которая состоит из нескольких уровней.

  1. Аппаратный уровень: Этот уровень представляет собой аппаратное обеспечение компьютера, такое как процессор, память и устройства ввода-вывода.
  2. Ядро операционной системы: Ядро операционной системы является основным компонентом, который управляет аппаратным уровнем. Оно обеспечивает взаимодействие между программным обеспечением и аппаратным обеспечением, а также контролирует доступ к ресурсам компьютера.
  3. Службы операционной системы: Службы операционной системы предоставляют различные функции и возможности для работы пользователей и программ. Некоторые из этих служб включают управление памятью, файловой системой, сетью и безопасностью.
  4. Графический интерфейс пользователя: Графический интерфейс пользователя (GUI) — это то, с чем пользователи работают для взаимодействия с операционной системой. Он предоставляет пользовательский интерфейс, который позволяет пользователям выполнять задачи с помощью мыши и клавиатуры.

Каждый уровень в структуре операционной системы Windows играет важную роль в обеспечении ее правильной работы. Они работают вместе, чтобы обеспечить пользователю удобное и надежное использование компьютера под управлением Windows.

Процессы и потоки

Поток — это управляемая единица выполнения внутри процесса. В каждом процессе может быть один или несколько потоков. Каждый поток имеет свой собственный стек вызовов и набор регистров процессора, но разделяет с другими потоками внутренние ресурсы процесса.

Процессы и потоки в операционной системе Windows взаимодействуют друг с другом через механизмы синхронизации и коммуникации, такие как мьютексы, семафоры, события и разделяемая память.

Процессы и потоки имеют различные приоритеты выполнения, которые определяют, какой процесс или поток получает больше ресурсов процессора. Операционная система Windows использует алгоритмы планирования для управления приоритетами выполнения процессов и потоков.

Процессы и потоки также имеют механизмы для взаимодействия с операционной системой и другими процессами, такие как создание, завершение, приостановка и возобновление. Операционная система предоставляет набор API-функций, которые позволяют программисту работать с процессами и потоками.

  • Процессы в Windows могут быть запущены из командной строки, из другого процесса или из планировщика заданий операционной системы.
  • Потоки внутри процесса могут быть созданы и запущены при помощи функций Win32 API, таких как CreateThread или _beginthreadex.
  • Каждый процесс и поток имеет свой собственный набор ресурсов, таких как память, файлы, устройства ввода-вывода.

Работа с файлами и директориями

Операционная система Windows предоставляет множество инструментов для работы с файлами и директориями. Один из основных инструментов — командная строка (Command Prompt), которая позволяет выполнять различные операции над файлами и директориями.

Основные команды для работы с файлами и директориями:

  • dir — отображает список файлов и директорий в текущей директории;
  • cd — изменяет текущую директорию;
  • mkdir — создает новую директорию;
  • copy — копирует файлы и директории;
  • del — удаляет файлы;
  • ren — переименовывает файлы;
  • move — перемещает файлы и директории.

Кроме командной строки, можно также использовать графический интерфейс операционной системы для работы с файлами и директориями. В Windows Explorer можно просматривать содержимое директорий, создавать новые директории, копировать, перемещать и удалять файлы.

Для разработчиков также доступны специальные API для работы с файлами и директориями. В Windows API предусмотрены функции для создания, чтения, записи и удаления файлов, а также для навигации по структуре директорий.

В целом, работа с файлами и директориями в Windows достаточно гибкая и удобная. Знание основных команд и инструментов позволяет эффективно управлять файловой системой и выполнять различные задачи связанные с файлами и директориями.

Память и управление ресурсами

В Windows используется виртуальная память, которая позволяет операционной системе эффективно работать даже при ограниченном объеме физической памяти. Виртуальная память делит физическую память на равные части, называемые страницами. Каждая страница имеет свой уникальный адрес, по которому ее можно найти в памяти.

Управление виртуальной памятью осуществляется с помощью пейджера, который отвечает за загрузку и выгрузку страниц из физической памяти на диск. Пейджер также отслеживает доступность страниц и решает, какие страницы следует загрузить в память, а какие выгрузить на диск, чтобы освободить место.

Помимо управления памятью, в Windows также есть механизмы управления другими ресурсами, такими как процессор, диски и сеть. Операционная система следит за использованием ресурсов и обеспечивает эффективное их распределение между различными приложениями и процессами.

Для управления процессором в Windows используется планировщик задач, который определяет, какие процессы получают доступ к процессору и насколько долго. Планировщик учитывает приоритеты задач и их потребности в ресурсах, чтобы обеспечить справедливое распределение вычислительной мощности.

Управление дисками и сетью в Windows осуществляется с помощью драйверов, которые обеспечивают взаимодействие операционной системы с оборудованием. Драйверы отвечают за управление ресурсами, такими как жесткий диск или сетевая карта, и обеспечивают правильную работу устройств.

В целом, управление памятью и ресурсами в операционной системе Windows является сложным процессом, который требует эффективного использования ресурсов и справедливого распределения их между различными задачами и приложениями. Операционная система должна быть способной эффективно работать при ограниченных ресурсах и предоставлять удобные средства для управления памятью и другими ресурсами.

Работа с реестром

Реестр представляет собой базу данных, в которой каждый ключ и значение имеют свой уникальный путь, называемый полным именем ключа. Информация в реестре организована в виде дерева, где каждый ключ может содержать подкючи и значения.

Работа с реестром в Windows может быть весьма полезной для пользователей и системных администраторов. С помощью реестра можно изменять настройки системы, добавлять и удалять программы, а также осуществлять дополнительную настройку операционной системы и приложений.

Для работы с реестром в Windows можно использовать утилиту «Редактор реестра» (regedit.exe), которая предоставляет графический интерфейс для просмотра и изменения содержимого реестра. В «Редакторе реестра» можно создавать, изменять и удалять ключи и значения, а также экспортировать и импортировать данные реестра.

Кроме того, существует ряд команд, которые можно использовать для работы с реестром через командную строку или сценарии. Например, команда «reg add» позволяет добавить ключ или значение в реестр, «reg delete» — удалить ключ или значение, «reg query» — отобразить информацию о ключе или значении, «reg import» — импортировать данные реестра из файла и т.д.

Важно отметить, что работа с реестром может быть опасной и влиять на стабильность работы операционной системы. Перед внесением изменений в реестр рекомендуется создать резервную копию или экспортировать нужные разделы для случая возможных проблем.

В итоге, работа с реестром является одним из способов настройки и настраиваемости операционной системы Windows, позволяющим изменять настройки и параметры системы, программ и приложений.

Сетевое взаимодействие и безопасность

Внутреннее устройство Windows основано на сетевом взаимодействии между различными компонентами операционной системы. Сетевое взаимодействие играет важную роль в обеспечении функциональности Windows и обеспечении безопасности данных.

Windows поддерживает различные протоколы и технологии сетевого взаимодействия, такие как TCP/IP, UDP, DNS, DHCP и другие. Эти протоколы позволяют компонентам Windows обмениваться данными и управлять сетевыми ресурсами.

Одним из ключевых аспектов сетевого взаимодействия в Windows является безопасность. Windows обеспечивает механизмы защиты данных и контроля доступа к сетевым ресурсам. Для этого Windows использует различные механизмы аутентификации и авторизации, такие как учетные записи пользователей и группы, механизмы шифрования и цифровых подписей.

Windows также предоставляет средства для обнаружения и предотвращения атак на сетевую безопасность. Одним из таких средств является фаервол Windows, который контролирует входящий и исходящий сетевой трафик и блокирует подозрительные попытки доступа. Кроме того, Windows предоставляет инструменты для мониторинга сетевой активности и обнаружения возможных угроз.

В целом, сетевое взаимодействие и безопасность являются неотъемлемой частью внутреннего устройства Windows. Они обеспечивают функциональность и защиту данных операционной системы, а также позволяют пользователям взаимодействовать с сетевыми ресурсами и обмениваться данными в безопасной среде.

  1. Главная
  2. Компьютеры и Интернет
  3. Зарубежная компьютерная, околокомпьютерная литература
  4. «Внутреннее устройство Microsoft Windows. Часть 2. Основные подсистемы ОС. 6-е издание»

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

Внутреннее устройство Microsoft Windows. Часть 2. Основные подсистемы ОС. 6-е издание

Описание

Шестое издание этой легендарной книги посвящено внутреннему устройству и алгоритмам работы
основных компонентов операционной системы Microsoft Windows 7, а также Windows Server 2008 R2.
Вторая часть книги охватывает основные подсистемы Windows: ввод-вывод, хранение данных, управле-
ние памятью, диспетчер кэша и файловые системы. Рассмотрены процессы запуска и завершения работы
и дано описание анализа аварийного дампа. Книга предназначена для системных администраторов, раз-
работчиков сложных приложений и всех, кто хочет понять, как устроена операционная система Windows.

Настроики

Фон текста:

  • Текст
  • Текст
  • Текст
  • Текст
  • Аа

    Roboto

  • Аа

    Garamond

  • Аа

    Fira Sans

  • Аа

    Times

Внутреннее устройство Microsoft Windows. Часть 2. Основные подсистемы ОС. 6-е издание (pdf) — Внутреннее устройство Microsoft Windows. Часть 2. Основные подсистемы ОС. 6-е издание 13129K (скачать pdf) — Марк Руссинович — Дэвид Соломон — Алекс Ионеску

Fueled by Johannes Gensfleisch zur Laden zum Gutenberg

Технология операционных систем Windows известна своей сложностью и глубиной. Чтобы понять, как работает Windows внутри и научиться эффективно использовать ее функции, необходимы тщательные исследования. В серии статей Марк Руссинович, известный эксперт Microsoft, рассказывает о внутреннем устройстве Windows и раскрывает его тайны.

Во второй части своей серии статей Руссинович продолжает свои исследования системы Windows и дает более глубокое понимание ее работы. В этой части он сосредоточивается на таких аспектах, как процессы, потоки, виртуальная память и файловая система. Узнайте, как Windows управляет ресурсами, осуществляет многозадачность и обеспечивает безопасность данных.

Руссинович является экспертом в своей области и имеет обширный опыт работы с операционными системами Windows. Его статьи являются незаменимым ресурсом для разработчиков, системных администраторов и всех тех, кто хочет глубоко понять внутреннее устройство Windows. В его работе полно использовано практическое знание и исследования, что делает его статьи непременными для всех, кто хочет быть экспертом в области операционных систем Windows.

Содержание

  1. Файловая система Windows: архитектура и особенности
  2. Процессы и потоки в Windows: работа и управление
  3. Внутреннее устройство Windows Registry: структура и роль
  4. Сервисы Windows: роль и механизмы работы

Файловая система Windows: архитектура и особенности

В Windows операционная система использует несколько различных файловых систем, включая NTFS (New Technology File System), FAT32 (File Allocation Table) и exFAT (Extended File Allocation Table). Каждая из этих файловых систем имеет свои особенности и применяется в различных случаях.

Главная файловая система, используемая в Windows, — это NTFS. NTFS имеет множество преимуществ, включая поддержку больших файлов и дисков, шифрование данных, контроль доступа и восстановление после сбоев. NTFS также имеет встроенную защиту от повреждения файлов, что делает его надежным выбором для операционной системы.

Однако некоторые устройства и операционные системы, такие как некоторые версии Windows Mobile, не поддерживают NTFS. В таких случаях можно использовать другую файловую систему — FAT32 или exFAT. FAT32 является старой файловой системой, которая имеет ограничения на размеры файлов и дисков. exFAT, с другой стороны, является более современной файловой системой, которая не имеет таких ограничений.

Файловая система Windows также поддерживает иерархическую структуру файлов и директорий. Файловая система организована в виде дерева, где каждый узел представляет собой файл или директорию. Узел-директория может содержать другие узлы-файлы или узлы-директории, которые представляют собой подпапки.

Файловая система Windows также поддерживает атрибуты файлов, такие как атрибуты только для чтения, скрытые атрибуты и атрибуты системы. Эти атрибуты дают возможность устанавливать дополнительные ограничения на файлы и директории.

Кроме того, файловая система Windows поддерживает механизм журналирования, который записывает изменения файловой системы в специальный журнал. Это позволяет системе восстановить файловую систему после сбоя или отказа.

Процессы и потоки в Windows: работа и управление

Процессы выполняют программы и обеспечивают их изоляцию друг от друга. Каждый процесс имеет свою виртуальную память, в которой хранятся данные и код, а также уникальный идентификатор процесса (PID).

Потоки – это составляющие процессы исполнительные единицы, которые могут выполняться параллельно. Потоки используют общую виртуальную память процесса и могут совместно оказывать влияние на его состояние. Каждый поток имеет свое собственное состояние, включая указатель на выполняемый код, стек вызовов и регистры процессора.

Управление процессами и потоками в Windows осуществляется с помощью системных вызовов и функций операционной системы. Библиотеки, такие как Kernel32.dll и Ntdll.dll, предоставляют API для работы с процессами и потоками.

Создание нового процесса в Windows происходит с помощью функции CreateProcess, которая принимает в качестве параметра имя исполняемого файла и опции запуска. После успешного создания процесса, операционная система выделяет ему собственную виртуальную память и запускает его в исполнение.

Управление потоками в Windows осуществляется с помощью функции CreateThread, которая принимает в качестве параметра указатель на функцию, которую необходимо выполнить в потоке. Созданные потоки могут быть запущены немедленно или по требованию, а также могут быть приостановлены и возобновлены при помощи функций операционной системы.

Для взаимодействия между процессами и потоками в Windows используются различные механизмы синхронизации и обмена данными. Например, с помощью объектов синхронизации, таких как мьютексы, семафоры и события, можно организовать совместное выполнение и взаимодействие потоков.

Также в Windows присутствует механизм потокобезопасности, который обеспечивает безопасное использование общих ресурсов несколькими потоками. Это позволяет избежать гонок данных и других проблем, связанных с параллельным выполнением кода.

В целом, знание процессов и потоков в Windows является важным для разработчиков и администраторов операционной системы. Понимание и умение управлять ими помогает создавать надежные и эффективные программы, а также обеспечивает стабильную работу системы в целом.

Внутреннее устройство Windows Registry: структура и роль

Структура Реестра Windows организована в виде иерархической базы данных, которая состоит из ключей, подключей и значений. Каждый ключ может содержать один или несколько подключей и значений.

Как иерархическая структура, Реестр имеет корневые ключи, каждый из которых отвечает за определенный аспект системы. Некоторые из ключевых корневых ключей включают:

  • HKEY_CLASSES_ROOT (HKCR): содержит информацию о зарегистрированных типах файлов и ассоциированных с ними программах.
  • HKEY_CURRENT_USER (HKCU): содержит настройки и данные для текущего пользователя, включая персонализацию рабочего стола и предпочтения программ.
  • HKEY_LOCAL_MACHINE (HKLM): содержит информацию о системном оборудовании, установленных программ и глобальных настройках.
  • HKEY_USERS (HKU): содержит профили всех пользователей, зарегистрированных на компьютере, в том числе профиль по умолчанию.
  • HKEY_CURRENT_CONFIG (HKCC): содержит информацию о текущей конфигурации оборудования.

Роль Реестра Windows заключается в предоставлении централизованного места для хранения настроек и информации, которые требуются операционной системе и программам. Реестр используется Windows для загрузки настроек при запуске, управления оборудованием, регистрации файлов и компонентов, а также для обеспечения целостности системы путем проверки цифровых подписей файлов.

Доступ к Реестру Windows можно получить при помощи специальных API, предоставляемых операционной системой. Редактирование Реестра обычно осуществляется с помощью системной утилиты «Редактор реестра» (regedit.exe).

Понимание структуры и роли Реестра Windows важно для системных администраторов и разработчиков программного обеспечения, так как неправильные изменения в Реестре могут привести к нестабильности системы и нарушению работы программ. Поэтому, при внесении изменений в Реестр, рекомендуется быть осторожным и делать резервные копии перед началом работы.

Сервисы Windows: роль и механизмы работы

Сервисы Windows представляют собой программы, которые работают в фоновом режиме и выполняют определенные функции для операционной системы. Они играют важную роль в обеспечении стабильной и надежной работы Windows.

Сервисы Windows могут выполнять различные задачи, такие как управление сетью, управление службами безопасности, обновление программного обеспечения и многое другое. Они работают в фоновом режиме, не требуя непосредственного взаимодействия с пользователем.

Механизм работы сервисов Windows основан на модели клиент-сервер. Каждый сервис представляет собой сервер, который может быть использован клиентами для выполнения определенных действий. Клиенты могут быть как другими сервисами, так и пользовательскими приложениями.

Сервисы Windows управляются с помощью сервисного контроллера (Service Control Manager, SCM), который является частью ядра операционной системы. SCM отвечает за запуск, остановку, приостановку и управление сервисами. Каждому сервису присваивается уникальный идентификатор (Service ID, SID), по которому его можно идентифицировать и взаимодействовать с ним.

Сервисы Windows можно управлять с помощью различных инструментов, таких как службы Windows (Services), командная строка (Command Prompt) или Панель управления (Control Panel). Они позволяют не только управлять статусом и параметрами сервисов, но и просмотреть информацию о работе сервисов, их зависимостях и другую полезную информацию.

Авторская мифология

Агония Земли

Адьюлтер, измена

Альтернативная география

Альтернативная история Азии

Альтернативная история Америки

Альтернативная история Африки

Альтернативная история Ближнего Востока

Альтернативная история Восточной Азии

Альтернативная история Восточной Европы

Альтернативная история Европы

Альтернативная история Западной Европы

Альтернативная история Северной Америки

Альтернативная отечественная история

Античная мифология

Бессмертие

Ближневосточная мифология

Богоборчество

Бунт

Быт

Веселое

Внезапное бедствие

Возвращение домой

Война

Война миров

Воплощение зла

Восстание

Восстание мутантов

Восстание роботов

Восстановление справедливости

Восточно-азиатская мифология

Вражда

Вторжение пришельцев

Выход эксперимента из-под контроля

Глупость

Готический ужас

Гуманитарное

Договор с дьяволом

Достижение

Достижение блага

Достижение цели

Европейская мифология

Жадность

Жертва

Заклинание

Избавление от бед

Империи

Индийская мифология

Интрига

Искусственный разум

Исправление героя

Истинное безумие

Квест

Классика детектива

Классика фэнтези

Классический ужас

Конспирология

Контакт с внеземной цивилизацией

Криминальная драма

Кровавый ужас

Легкое

Любовное

Любовные припятствия

Любовь к врагу

Магический реализм

Месть

Микромир

Мифологические элементы

Мифология народов мира

Мнимое безумие

Мятеж

На заре фэнтези

Научная магия

Научное фэнтези

Научные достижения

Научные достижения в руках злодеев

Невольное преступление

Ненависть

Неожиданные сверхспособности

Неосознаваемые ревность и зависть

Обряды

Обстоятельства

Одиночество

Опасное предприятие

Оптимистическое

Освобождение

Освобождение от врагов

Освобождение от тирании

Освоение планет

От лица животного

От лица предмета или явления

Отчаянная попытка

Ошибка ученых

Пародия

Пацефизм

Переселение разума

По мотивам кино

Победа

Победа над болезнями

Победа над врагом

Победа над злом

Победа над обстоятельствами

Победа над собой

Победа над чудовищем

Подсознательный ужас

Поиск истины

Поиск себя

Поиск сокровищ

Поиск счастья

Пороки

Постмодернизм

Потеря близких

Потерянный и найденный

Похищение человека

Предсказания

Преследование

Пришельцы из других времен

Психоделическое

Психологическое

Психология чужих

Путешествие в будущее

Путешествие в прошлое

Путешествия в другие миры

Путешествия во времени

Путь воина

Путь прогресса

Развитие героя

Развлечения, увлечения

Раздвоение личности

Расстояния

Расширение сознания

Реализм

Революция

Роковая ошибка

Русская мифология

Сакральные объекты

Самопожертвование

Самопожертвование во имя близких

Самопожертвование во имя веры

Самопожертвование во имя долга

Самопожертвование во имя идеи

Самопожертвование во имя любви

Свержение

Сверхспособности

Сверхцивилизация

Семейные драмы

Скандинавская мифология

Содомия

Соперничество, противостояние

Социальное неравенство

Социум

Спасение

Спасение мира

Спецслужбы

Средневековая мифология

Стимпанк

Стихия

Судебная ошибка

Сюрреализм

Таймпанк

Тайна, загадка

Темное фэнтези

Техногенная катастрофа

Трусость

Туда и обратно

Угрызения совести

Утечка вирусов

Фатальная неострожность

Феминизм

Философское

Честолюбие и властолюбие

Школа

Экологическое

Экономическое

Экспедиции

Эпидемия

image С момента выхода предыдущего издания этой книги операционная система Windows прошла длинный путь обновлений и концептуальных изменений, результатом которых стала новая стабильная архитектура ядра Windows 10.

Книга «Внутреннее устройство Windows» создана для профессионалов, желающих разобраться во внутренней жизни основных компонентов Windows 10. Опираясь на эту информацию, разработчикам будет проще находить правильные проектные решения, создавая приложения для платформы Windows, и решать сложные проблемы, связанные с их эксплуатацией. Системные администраторы, зная, что находится у операционной системы «под капотом», смогут разобраться с поведением системы и быстрее решать задачи повышения производительности и диагностики сбоев. Специалистам по безопасности пригодится информация о борьбе с уязвимостями операционной системы.

Динамика списков страниц

На рис. 5.37 показана диаграмма состояний переходов страничных блоков. Для простоты на ней не представлен список измененных, но не подлежащих записи страниц.

image

Страничные блоки перемещаются между страничными списками следующими способами.

1. Когда диспетчеру памяти для обслуживания ошибки страницы, связанной с требованием обнуленной страницы (обращение к странице, которая определена как полностью заполненная нулями, или к закрытой подтвержденной странице пользовательского режима, к которой еще не было обращений), нужна страница, заполненная нулями, сначала предпринимается попытка получить эту страницу из списка таких страниц. Если список пуст, страница берется из списка свободных страниц и заполняется нулями. Если пуст и список свободных страниц, происходит обращение к списку ожидающих страниц, и заполняется нулями страница из этого списка.

2. Одна из причин востребованности страниц, заполненных нулями, заключается в выполнении различных требований безопасности — например, общих критериев (Common Criteria). Большинство положений общих критериев указывает на то, что процессы пользовательского режима должны получать обнуленные страничные блоки, чтобы они не могли прочитать содержимое памяти предыдущих процессов. Поэтому диспетчер памяти предоставляет процессам пользовательского режима обнуленные страничные блоки, если только страница не была считана из резервного хранилища. В таком случае диспетчер памяти использует необнуленные страничные блоки, инициализируя их данными с диска или с удаленного хранилища. Список страниц, заполненных нулями, пополняется из списка свободных страниц системным программным потоком, который называется потоком обнуления страниц (zero page thread), — это поток 0 в процессе System. Поток обнуления страниц ждет сигнала на работу от объекта шлюза. Когда в списке свободных имеется восемь и более страниц, шлюз подает сигнал. Но поток обнуления страниц запускается, только если хотя бы у одного процессора нет других выполняемых потоков, поскольку поток обнуления страниц запускается с приоритетом 0, а наименьший приоритет, который может быть установлен для пользовательского потока, равен 1.

ПРИМЕЧАНИЕ Когда память в результате выделения физической страницы драйвером, вызывающим функцию MmAllocatePagesForMdl или MmAllocatePagesForMdlEx, должна быть заполнена нулями Windows-приложением, вызывающим функцию AllocateUserPhysicalPages или AllocateUserPhysicalPagesNuma, или когда приложение выделяет большие страницы, диспетчер памяти обнуляет память, используя высокопроизводительную функцию под названием MiZeroInParallel, которая отображает более крупные области, чем поток обнуления страниц, обнуляющий только одну страницу за раз. Кроме того, на мультипроцессорных системах диспетчер памяти создает дополнительный системный поток для обнуления в параллельном режиме (а на NUMA-платформах это делается в стиле, оптимизированном под технологию NUMA).

3. Когда диспетчеру памяти не нужна страница, заполненная нулями, он сначала обращается к списку свободных страниц. Если этот список пуст, он переходит к списку обнуленных страниц. Если и список обнуленных страниц пуст, он переходит к списку ожидающих страниц. Перед тем как диспетчер памяти сможет воспользоваться страничным блоком из списка ожидающих страниц, он должен сначала вернуться и удалить ссылку из недостоверной PTE-записи (или из прототипной PTE-записи), которая все еще указывает на страничный блок. Поскольку в записях базы данных PFN-номеров содержатся обратные указатели на предыдущую страницу пользовательской таблицы страниц (или на страницу пула прототипной PTE-записи для общих страниц), диспетчер памяти может быстро найти PTE-запись и внести в нее соответствующее изменение.

4. Когда процесс должен отказаться от страницы из своего рабочего набора (либо потому, что он ссылается на новую страницу и его рабочий набор заполнен, либо потому, что диспетчер памяти урезал его рабочий набор), страница переходит в список ожидающих, если она оставалась нетронутой (неизмененной), или в список измененных страниц, если страница была изменена, находясь в физической памяти.

5. Когда процесс завершает работу, все закрытые страницы переходят в список свободных страниц. Кроме того, если при закрытии последней ссылки на раздел, поддерживаемый страничным файлом, в разделе не осталось отображенных представлений, страницы этого раздела также попадают в список свободных страниц.

ЭКСПЕРИМЕНТ: ПРОСМОТР СПИСКОВ СВОБОДНЫХ И ОБНУЛЕННЫХ СТРАНИЦ

За освобождением закрытых страниц при завершении работы процесса можно наблюдать в окне System Information (Системная информация) программы Process Explorer. Сначала нужно создать процесс с большим количеством закрытых страниц в его рабочем наборе. Мы уже делали это в одном из предыдущих экспериментов с помощью утилиты TestLimit:

C:ToolsSysinternals>Testlimit.exe -d 1 -c 1500

Testlimit v5.24 - test Windows limits
Copyright (C) 2012-2015 Mark Russinovich
Sysinternals - www.sysinternals.com

Process ID: 13928

Leaking private bytes with touch 1 MB at a time...
Leaked 1500 MB of private memory (1500 MB total leaked). Lasterror: 0
The operation completed successfully.

Ключ –d заставляет TestLimit не только выделить память в качестве закрытой и подтвержденной, но и «прикоснуться» к ней, т. е. обратиться к этой памяти. Это приводит к выделению физической памяти и присвоению ее процессу, чтобы освободить область закрытой подтвержденной виртуальной памяти. Если в системе имеется достаточный объем доступной оперативной памяти, для процесса в оперативной памяти будет выделено целых 1500 Мбайт. Теперь этот процесс будет ждать, пока вы не заставите его завершить или прервать работу (возможно, с комбинацией клавиш Ctrl+C в его командном окне). Выполните следующие действия.

1. Откройте Process Explorer.

2. Выберите команду ViewSystem Information и перейдите на вкладку Memory.

3. Понаблюдайте за размерами списков свободных (Free) и обнуленных (Zeroed) страниц.

4. Завершите или прервите процесс TestLimit.

Возможно, вам удастся увидеть, что список свободных страниц кратковременно увеличился в размере. Мы говорим «возможно», потому что поток обнуления страниц «проснется», как только в списке обнуленных страниц останется всего восемь записей, и отработает очень быстро. Process Explorer обновляет это окно только раз в секунду, и похоже, что остальные страницы уже успевают обнулиться и попасть в список обнуленных страниц, пока нам удалось «поймать» это состояние. Если вам удалось заметить временное увеличение списка свободных страниц, то вслед за этим вы увидите, что его размер упадет до нуля, а в списке обнуленных страниц произойдет соответствующее увеличение. Если же момент будет упущен, вы просто увидите увеличение списка обнуленных страниц.

ЭКСПЕРИМЕНТ: ПРОСМОТР СПИСКОВ ИЗМЕНЕННЫХ И ОЖИДАЮЩИХ СТРАНИЦ

За перемещением страниц из рабочего набора процесса в список измененных страниц и затем в список ожидающих страниц можно понаблюдать при помощи программ VMMap и RAMMap из пакета Sysinternals или в отладчике ядра. Выполните следующие действия.

1.Запустите программу RAMMap и понаблюдайте за спокойным состоянием системы. В данном случае это система x86 с 3 Гбайт оперативной памяти. Столбцы в окне отражают различные состояния страниц (см. рис. 5.37). Некоторые столбцы, которые не имеют значения для данного эксперимента, для удобства были сужены.

image

2. У системы имеется около 420 Мбайт свободной оперативной памяти (складывающейся из свободных и обнуленных страниц). Около 580 Мбайт фигурирует в списке ожидающих страниц (следовательно, часть из них «доступна», но, скорее всего, содержит данные, ранее утраченные процессами или используемые при супервыборке). Около 830 Мбайт активны, будучи отображенными непосредственно на виртуальные адреса через достоверные записи таблицы страниц.

3. Каждая строка далее разбивается в соответствии с состояниями страниц по использованию или происхождению (закрытые страницы процесса, отображаемый файл и т. д.). Например, на данный момент из активных 830 Мбайт около 400 Мбайт обусловлено выделением закрытых страниц процесса.

4. Теперь, как и в предыдущем эксперименте, воспользуйтесь утилитой TestLimit, чтобы создать процесс с большим количеством страниц в рабочем наборе. Здесь опять мы используем ключ –d, чтобы заставить TestLimit сделать запись в каждую страницу, но на этот раз без ограничения, чтобы создать как можно больше закрытых измененных страниц:

C:ToolsSysinternals>Testlimit.exe -d

Testlimit v5.24 - test Windows limits
Copyright (C) 2012-2015 Mark Russinovich
Sysinternals - www.sysinternals.com

Process ID: 7548

Leaking private bytes with touch (MB)...
Leaked 1975 MB of private memory (1975 MB total leaked). Lasterror: 8

5. Теперь программа TestLimit создала 1975 областей выделения по 1 Мбайт каждая. Для обновления экрана в программе RAMMap нужно воспользоваться командой FileRefresh для обновления экрана, поскольку самостоятельно программа RAMMap этого не делает (из-за больших затрат на выполнение этой операции).

image

6. Как видите, активно свыше 2,8 Гбайт, из которых 2,4 Гбайт находятся в строке закрытых страниц процесса (строка Process Private). Это результат выделения памяти и доступа к ней со стороны процесса TestLimit. Также обратите внимание на то, что списки ожидающих (Standby), обнуленных (Zeroed) и свободных (Free) страниц теперь стали намного меньше. Большая часть памяти, выделенной программе TestLimit, взята из страниц, фигурировавших в этих списках.

7. Далее с помощью RAMMap нужно оценить выделение физических страниц процесса. Перейдите на вкладку Physical Pages и установите фильтр, находящийся в нижней части столбца Process, присвоив ему значение Testlimit.exe. В следующем окне показаны все физические страницы, являющиеся частью рабочего набора процесса.

image

8. Нам нужно идентифицировать физическую страницу, задействованную в выделении физического адресного пространства, которое было выполнено с помощью ключа –d при запуске программы TestLimit. RAMMap не дает никаких указаний на то, какие виртуальные области были выделены благодаря вызову из RAMMap функции VirtualAlloc. Но мы можем получить ценную подсказку на этот счет с помощью программы VMMap. Вызвав VMMap для
того же процесса, мы получим следующий результат (см. рис. на с. 535 вверху).

9. В нижней части выводимой информации находятся сотни выделенных областей для закрытых данных процесса, каждая из которых имеет размер 1 Мбайт при 1 Мбайт подтвержденной памяти. Это соответствует размеру памяти, выделенной программой TestLimit. В предыдущей копии экрана подсвечен первый из таких вариантов распределения. Заметьте, что его начальный виртуальный адрес равен 0x310000.

10. Теперь вернемся к информации о физической памяти, выводимой на экран программой RAMMap. Перестройте столбцы так, чтобы хорошо был виден столбец Virtual Address. Щелкните на нем, чтобы отсортировать строки по этому значению, и вы сможете найти нужный виртуальный адрес (см. рисунок на с. 535 внизу).

image

11. Здесь показано, что виртуальная страница, начинающаяся с адреса 0x310000, в данный момент отображена на физический адрес 0x212D1000. С ключом -d программа TestLimit записывает в первые байты каждой выделенной области свое имя. Это можно продемонстрировать с помощью команды !dc локального отладчика ядра (dc — сокращение от «display characters», т. е. вывод символов по физическому адресу):

lkd> !dc 0x212d1000
#212d1000 74736554 696d694c 00000074 00000000 TestLimit.......
#212d1010 00000000 00000000 00000000 00000000 ................
...

12. Если промедлить, попытка может завершиться неудачей — страница может быть уже удалена из рабочего набора. В последней фазе эксперимента мы покажем, что данные остаются неизменными (по крайней мере, на какое-то время) после того, как рабочий набор процесса сократится, а страница переместится сначала в список измененных, а затем — ожидающих страниц.

13. Выбрав в программе VMMap процесс TestLimit, откройте меню View и выберите команду Empty Working Set, чтобы сократить рабочий набор процесса до минимума. Теперь в окне VMMap должна выводиться следующая информация:

image

14. Обратите внимание на то, что линейка Working Set (Рабочий набор) практически пуста. В средней части для процесса показано, что общий размер рабочего набора равен всего лишь 4 Кбайт, причем почти все его пространство занято таблицами страниц. Теперь вернитесь в RAMMap. На вкладке Use Counts видно, что количество активных страниц существенно сократилось, а большое количество страниц находится в списке измененных и существенное количество страниц — в списке ожидающих.

image

15. Данные на вкладке Processes программы RAMMap подтверждают, что большинство этих страниц появилось в данных списках из-за процесса TestLimit.

image

» Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок

Для Хаброжителей скидка 20% по купону — Windows

  • Внутреннее устройство windows марк руссинович дэвид соломон книга
  • Внезапная перезагрузка компьютера windows 10
  • Во время игры игра сворачивается windows 10
  • Вместо скриншота черный экран windows 10
  • Во время игры зависает компьютер и не реагирует ни на что windows 10