назад
Общие сведения о программе Process Explorer
Process Explorer - программа от компании Sysinternals для
наблюдения в реальном масштабе времени за действиями различных процессов
и управления ими в среде операционной системы Windows.
Process Explorer - на сегодняшний день - это самая популярная утилита среди продуктов Sysinternals. Автор - Марк Руссинович (Mark Russinovich)
Process Explorer позволяет:
- получать подробнейшую информацию о всех процессах, выполняющихся в среде Windows;
- получать доступ к важнейшим функциям управления процессами из главного меню или
из контекстного меню выбранного процесса;
- управлять не только приложениями, но и службами системы (остановить, приостановить, возобновить, перезапустить);
- кроме функции принудительного завершения процессов (Kill),
использовать функции приостановки (Suspend) и продолжения выполнения
(Resume);
- управлять не только процессами, но и потоками (Threads), т.е.
динамически внедряемыми в основной процесс программными модулями (DLL);
- изменять приоритеты выполняющихся процессов, их права доступа и
разрешения, задавать соответствие процессорам в многопроцессорных
(многоядерных) системах;
- создавать новые процессы с возможностью запуска от имени текущего
пользователя, пользователя с ограниченными правами и администратора;
- в любой момент времени принудительно выполнять дампы памяти (Minidump или Fill Dump) с сохранением в выбранный файл;
- выполнять завершение работы Windows, завершение сеанса пользователя,
переход в спящий режим, режим гибернации и блокировку рабочего стола;
В целом, Process Explorer позволяет получить подробнейшую картину активности процессов Windows и использования ресурсов системы.
Интерфейс программы достаточно прост и удобен. Имеется строка меню
(menu bar), панель инструментов (toolbar) и область вывода данных,
представленная либо в виде иерархического списка процессов, либо в виде
окна, разделенного на две половины. В верхней части - список процессов,
в нижней - подробная информация о выбранном процессе - потоки,
дескрипторы, открытые файлы, ключи реестра, и т.п., Представление
области вывода данных можно изменить в любой момент времени нажатием
комбинации CTRL+L или с использованием пункта меню "View" - "Show Lower Pane".

В данной работе будет рассмотрен интерфейс версий Process Explorer,
выпущенных после 2011г. В более старых версиях программы. некоторые
элементы могут отсутствовать.
В верхней панели (Upper Pane) выводится информация в виде нескольких
колонок, состав которых можно изменить с помощью меню "View" - "Set
Columns". По умолчанию, выбраны колонки, наиболее полно
раскрывающие возможности программы и не снижающие удобства ее
использования.
Process - в данной колонке отображается дерево активных процессов
и их потомков. Потомок (child) - процесс, созданный другим,
родительским (parent) процессом. Любой процесс может быть и потомком,
если он создан в ходе выполнения другого процесса, и родителем, если в
ходе его выполнения создан другой процесс. Отображение элементов дерева
процессов выполняется в соответствии с порядком их запуска в ходе
загрузки операционной системы и регистрации пользователя.
Корнем дерева процессов является уровень System Idle Process - состояние простоя системы. Следующим элементом дерева представлен уровень System.
На самом деле, System - это не отдельно существующий реальный процесс, а
уровень дерева, предназначенный для отображения активности системы,
связанной с обработкой прерываний, работой системных драйверов,
диспетчера сеансов Windows (Session Manager) smss.exe, и csrss.exe (Client - Server Runtime). Элемент Interrupts связан с обработкой аппаратных прерываний, элемент DPCs
- с обработкой отложенных вызовов процедур (Deferred Procedure Calls).
Механизм обработки аппаратных прерываний в Windows предполагает как бы
двухуровневую обработку. При возникновении запроса на прерывание,
сначала, получает управление программа-обработчик аппаратного
прерывания, выполняющая лишь самые необходимые критические операции, а
остальные действия откладываются до тех пор, пока не появится
относительно свободное процессорное время. Тогда эти действия будут
выполнены в рамках вызова отложенной процедуры. В многопроцессорных
системах каждый процессор имеет свою отдельную очередь отложенных
вызовов. Порядок обработки очереди запросов на прерывание и очереди
отложенных процедур определяется их приоритетами. Для определения приоритетов используется уровень запроса на прерывание IRQL
- программно-аппаратный механизм, применяемый для синхронизации
выполнения отдельных процессов в операционных системах семейства
Windows. Уровни IRQL аппаратных прерываний задаются
программированием регистров контроллера прерываний, а уровни IRQL
программного кода операционной системы - реализуются программно.
Степень использования ресурсов уровнем System дерева процессов, отображаемого программой Process Explorer,
характеризует занятость операционной системы диспетчеризацией и
обработкой прерываний. Высокая степень использования процессора для
обработки прерываний может указывать на наличие проблем с оборудованием
или некорректно работающий драйвер устройства. Обычно, это
сопровождается эффектом заметного снижения общей "полезной"
производительности системы.
Остальная часть дерева отображает иерархию реально выполняющихся в
Windows процессов. Так, например, приложение служб и контроллеров SERVICES.EXE обеспечивает создание, удаление,
запуск и остановку служб (сервисов) операционной системы, что и отображается в списке порождаемых им процессов.
PID - отображается идентификатор процесса PID - уникальное десятичное число, присваиваемое каждому процессу при его создании.
CPU - отображается степень использования центрального процессора.
Private Bytes - объем оперативной памяти, выделенной данному процессу и не разделяемой с другими процессами.
Working Set - рабочий набор процесса, представляющий
собой суммарный
объем всех страниц используемой им памяти, в данный момент времени.
Размер этого набора может изменяться, в зависимости от запросов
процесса. Большая часть процессов используют
разделяемую память (Shared Memory).
Description - краткое описание процесса
Company Name - название компании-разработчика.
Path - путь и имя исполняемого файла.
Verified Signer - признак достоверности цифровой подписи исполняемого файла. Наличие строки "Not verified" говорит о том, что цифровая подпись
отсутствует или ее не удалось проверить. Для проверки цифровой подписи нужен доступ в Интернет.
Process Explorer позволяет получить максимально подробную информацию о
процессах. Число колонок в верхней половине можно довести до нескольких
десятков,
однако, пользоваться таким представлением крайне неудобно. Обычно при
работе с программой используется минимальный, установленный по
умолчанию, или немного измененный набор, а
для получения детальной информации о процессе можно выполнить двойной
щелчок на строке с его данными или через контекстное меню, вызываемое
правой кнопкой мыши - пункт Properties.
Иерархический характер дерева процессов способствует визуальному
восприятию родительски-дочерних отношений каждого активного процесса.
Нижняя панель дает информацию обо всех DLL,
загруженных выделенным в верхней панели процессом, открытых им файлах,
папках, разделах и ключах реестра.
При выборе уровня System дерева процессов в нижней панели можно
получить информацию обо всех загруженных драйверах системы, их описание,
версию, путь исполняемого файла, адрес в оперативной памяти, размер.
Кроме того, можно проверить цифровую подпись испольняемого файла, а
также просмотреть строковые
значения как в самом исполняемом файле, так и в оперативной памяти,
выделенной под его выполнение.
Пункты основного меню File
Run - запустить программу, открыть документ, ярлык, URL. Аналогично стандартному меню Windows "Пуск - Выполнить"
Run As Limited User - то же самое "Выполнить", но под учетной
записью пользователя с ограниченными правами, даже если текущий
пользователь вошел в систему с правами администратора.
Save CTRL+S - сохранить текущее представление выходных данных Process Explorer в текстовый файл.
Save CTRL+A - то же самое, но с возможностью выбора пути и имени файла.
Shutdown - завершение работы. Можно выбрать следующие режимы завершения
- Logoff - завершение сеанса текущего пользователя.
- Shutdown - выключить компьютер
- Hibernate - перевести компьютер в режим гибернации
- Stand By - перевести в спящий режим
- Lock - закрыть доступ к рабочему столу
- Restart - перезагрузить систему.
Exit завершить работу Process Explorer
Пункты основного меню Options
Always on Top - всегда отображать окно программы Process Explorer поверх всех остальных окон.
Replace Task Manager - при установке данного режима, стандартный
диспетчер задач Windows будет заменен на Process Explorer. Повторный
выбор данного пункта меню возвращает Task Manager в качестве диспетчера
задач Windows.
Hide When Minimized - скрыть значок программы в области уведомлений при сворачивании
Allow Only One Instance - разрешить запуск только одной копии Process Explorer
Confirm Kill - требовать подтверждение при принудительном завершении процессов
Verify Image Signature - проверять достоверность цифровой подписи исполняемых файлов
Tray Icons показывать в системном трее иконки графиков (history)
использования процессора (CPU) системы ввода-вывода (I/O), объем общей
выделенной памяти (Commit), физической памяти (Physical Memory).
Configure Symbols - конфигурирование источника для определения имен функций.
Configure Colors - настройка выделения цветом отображаемых
объектов. Можно изменить цветовое кодирование процессов в основном окне
программы. Кнопка "Defaults" позволяет вернуть настройки цветового
выделения по умолчанию.
Цветовое выделение дает дополнительные признаки процессов: сиреневым
цветом выделяются процессы, имеющие связанные с ними системные службы,
зеленым - только что запущенные, красным - завершающиеся, фиолетовый -
имеющий упакованный исполняемый файл и т.п.
Пункты основного меню View
System Information - суммарная информация об использовании центрального процессора, оперативной памяти, операциях ввода-вывода.
Show Processes From All Users - режим отображения информации о
процессах. При включении данного режима будет выполняться выдача
информации обо всех процессах всех активных пользователей системы, в том
числе и системных служб. При выключении - только процессы,
выполняющиеся под учетной записью текущего пользователя.
Scroll For New Process - указатель будет перемещаться на строку с отображением нового процесса.
Show Lower Pane CTRL+L - отображать нижнюю панель.
Lower Pane View - режим вывода данных в нижней панели - DLLs (CTRL+D) - отображаются данные о загруженных библиотеках DLL, Handles (CTRL+H) - отображаются данные об открытых указателях (хэндлах).
Refresh Now F5 - обновить экран.
Update Speed - интервал автоматического обновления экрана в секундах. Нажатие пробела вызывает включение/выключение паузы.
Остальные пункты данного меню позволяют изменить представление
отображаемой информации, сохранить или загрузить ранее сохраненные
настройки.
Пункты основного меню Process
Пункты данного раздела меню предназначены для управления процессами. Эти
же пункты можно выполнить с помощью контекстного меню, вызываемого
правой кнопкой мышки для выбранного процесса.
Set Priority - установить приоритет. Уровень приоритета процесса в
Windows задается, в порядке возрастания числом от 0 до 31. Большинство
процессов выполняются с приоритетом 8 (Normal). Любому процессу можно
принудительно понизить или повысить приоритет с использованием данного
меню. Удобно использовать в случаях, когда какая-нибудь программа
работает с высоким потреблением ресурсов процессора длительное время и
замедляет работу других приложений. В результате, может возникнуть
"подтормаживание" других, не требующих значительных ресурсов,
интерактивных процессов (браузер, проводник и т.п.), что создает не
самые комфортные условия для работы пользователя. Снижение приоритета
"прожорливой" программы позволит устранить это неприятное явление.
Kill Process Del - принудительно завершить выбранный процесс.
Kill Process Tree - принудительно завершить выбранный процесс и все порожденные им процессы (дерево процессов)
Restart - перезапустить выбранный процесс.
Suspend - приостановить выбранный процесс. Для продолжения работы процесса используется пункт меню Resume
Set Affinity - позволяет задать соответствие выбранного процесса процессорам в многопроцессорных системах.
Create Dump - принудительно выполнить дамп памяти. Позволяет
получить малый или полный дамп памяти для анализа. Для получения дампов
памяти в контексте выполнения системных процессов необходимо, чтобы
Process Explorer выполнялся с правами локальной системной учетной записи
(Local System, NT AUTHORITY\система).
Search Online - будет запущен браузер и выполнен поиск информации о выбранном процессе с использованием поисковика Google.
Properties - вывод информации о выбранном процессе. Данные
представлены в виде окна свойств процесса с несколькими вкладками,
позволяющими получить подробнейшую информацию.
Колонки в главном окне


Для каждого процесса:
- Имя процесса
- Владелец процесса, я использую сортировку по этому полю, чтобы первыми шли пользовательские процессы, потом системные
- Загрузка CPU процессом
- Суммарное затраченное время CPU, интересно иногда обращать на это внимание, полезен для таймирования
- Private bytes — объем занимаемой процессом памяти (реально выделенные страницы, исключая shared)
- Peak private bytes — пиковое значение Private bytes, интересно иногда взглянуть до чего дело доходило
- I/O read bytes — суммарный объем считанных с диска данных, по изменению видна активность
- I/O write bytes — суммарный объем записанных на диск данных, по изменению видна активность
- Network receive bytes — суммарный объем считанных из сети данных, по изменению видна активность
- Network send bytes — суммарный объем переданных в сеть данных, по изменению видна активность
- Описание процесса
- Название компании
- Полный путь к образу процесса (тут можно точно понять откуда стартовал процесс)
- Командная строка запуска процесса
Сервисы внутри svchost
При наведении курсора на svchost (процесс который хостит в себе сервисы)
можно видеть перечень сервисов – довольно полезная фича.

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

В окне «system information» графики собраны вместе, здесь удобнее смотреть корреляцию параметров.

Потоки процесса, их активность, стек потока с загрузкой символов
В свойствах процесса в закладке threads видны все его потоки и загрузка
CPU по потокам. Допустим хочется рассмотреть стек потока, который
интенсивно что-то делает или висит. Для этого сперва надо его
распознать, допустим по загрузке CPU, потом полезно приостановить
процесс, чтобы спокойно рассмотреть его состояние — это можно сделать
прямо в этом окне по кнопке “suspend”. Далее выделяем поток и нажимаем
“stack”. В большинстве случаев стек будет начинаться в недрах системы и
обрываться не совсем понятным образом. Дело в том, что не имея
отладочной информации по системным библиотекам не удастся корректно
развернуть стек и разобраться в нем. Есть решение – нужно
сконфигурировать доступ с символьной информации с сайта Microsoft. Надо
проделать несколько шагов:
- Установить Debugging Tools.
Из приведенной ссылки надо пойти по ссылке “Debugging Tools for Windows
32-bit Versions” или “Debugging Tools for Windows 64-bit Versions”.
Далее выбрать для скачивания последнюю версию не интегрированную в SDK,
иначе это выльется в скачивание огромного объема SDK, а так всего
несколько Mb.
- Настроить доступ к символам в Process Explorer. Options –>
Configure Symbols. В одном поле задаем путь к dbghelp.dll, которая
находится внутри установленного продукта из шага 1. Во втором
настраиваем такую хитрую строку:
“srv*C:\Symbols*http://msdl.microsoft.com/download/symbols”. Часть
строки указывает на локальный кэш для PDB файлов, вторая часть на путь к
серверу для скачивания.
- Теперь список потоков и стек будут более информативны. При открытии
этих окон может происходить задержка на время подкачки PDB файлов с
сервера Microsoft, но делается это один раз для каждой версии модуля,
результат кэшируется в выбранной папке.


Информация по использованию памяти в системе
В окне «system information» закладка «memory». Здесь есть два графика –
commit и physical. Physical – использование физической памяти без учета
файлового кэша, под который уходит все что остается. Commit – сколько
памяти выделено для процессов включая используемую виртуальную память.
Под графиками в разделе «Commit Charge» есть поля Limit и Peak. Limit
определяется суммой физической и виртуальной памяти, т.е. это
максимальный суммарный объем памяти, который может выделить система.
Peak – это максимум графика Commit за время работы утилиты. Процентные
соотношения Current/Limit и Peak/Limit удобны для быстрой оценки
насколько состояние системы приближалось к критическому лимиту по
доступной памяти.

Handles и DLL процесса
В главном окне можно включить разделитель и снизу отображать DLL или
handles выделенного процесса. При борьбе с вирусами и отладке программ
это бывает очень полезно. На картинке — список handles для opera, первый
handle файловой системы – это flash ролик в временном каталоге.

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

Поиск handles и DLL
Поиск по имени handle или DLL во всех процессах. Вводим имя DLL от
Logitech из предыдущего пункта и убеждаемся что подключается он почти
везде.

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