База полезных знаний

Процессы, потоки и задания. Продолжение

Содержание:

Эксперимент: просмотр информации о процессах с помощью Диспетчера задач

Встроенный в Windows "Диспетчер задач" предоставляет краткий список процессов, идущих в системе. Запустить этот диспетчер можно одним из четырех способов: 1) нажатием клавиш Ctrl+Shift+Esc, 2) щелчком правой кнопки мыши на панели задач с последующим выбором пункта "Запустить диспетчер задач", 3) нажатием клавиш Ctrl+Alt+Delete с последующим щелчком на кнопке "Запустить диспетчер задач", или 4) запуском исполняемой программы Taskmgr.exe.

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


Вполне очевидно, что на вкладке "Процессы" "Диспетчера задач" показывается список процессов, а вот о содержимом вкладки "Приложения" с такой же долей очевидности судить нельзя. Там показывается список видимых окон верхнего уровня на всех Рабочих столах интерактивного оконного терминала, к которому вы подключены. (По умолчанию есть только один интерактивный Рабочий стол, но приложение может создать и больше, если воспользуется функцией Windows "CreateDesktop", как это сделано в средстве Sysinternals Desktops.) В столбце Состояние показывается, находится ли поток, являющийся владельцем окна, в состоянии ожидания сообщения от этого окна. Состояние «Работает» означает, что поток ожидает поступления в это окно какого-нибудь ввода, а состояние «Не отвечает» означает, что поток не ждет поступления ввода в окно (например, поток может быть запущен или же находиться в ожидании ввода-вывода или в ожидании изменения состояния какого-нибудь объекта синхронизации Windows).


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

Инструментальное средство Process Explorer из арсенала Sysinternals предоставляет больше подробностей о процессах и потоках, чем другие доступные средства, поэтому вы увидите его в ряде рассматриваемых экспериментов. Можно упомянуть следующие, допускаемые Process Explorer уникальные возможности показа той или иной информации или выполнения действий:

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

А теперь проведем начальный эксперимент с использованием средства Process Explorer.

Эксперимент: просмотр подробностей процесса с помощью Process Explorer.

Загрузите самую последнюю версию Process Explorer ссайта Sysinternals изапуститеее. При первом запуске вы получите сообщение о неправильной настройке символов. При правильной настройке Process Explorer может получить доступ к информации о символах для вывода символического имени стартовой функции потока и функций в стеке вызовов потока (доступном после двойного щелчка на имени процесса и щелчка на вкладке Threads (Потоки)). Это поможет определить, что делают потоки внутри процесса. Для доступа к символам у вас должен быть установлен пакет средств для отладки Debugging Tools для Windows. После его установки щелкните на пункте Options (Дополнительные параметры), выберите пункт Configure Symbols (Настройка символов) и заполните поле пути к библиотеке Dbghelp.dll в папке Debugging Tools, а также укажите правильный путь к символам. Например, для 64-разрядной системы вполне подойдет следующая настройка.


В предыдущем примере для доступа к символам и копирования файлов символов с целью хранения этих файлов на локальной машине в каталоге c:\symbols используется сервер востребованных символов. Более подробная информация по настройкам использования сервера символов дана на сайте http://msdn.microsoft.com/en-us/windows/hardware/gg462988.aspx.

При запуске средства Process Explorer оно по умолчанию показывает дерево процессов. У него также имеется дополнительная нижняя панель, в которой могут быть показаны открытые дескрипторы или отображенные на память DLL-библиотеки и другие, отображенные на память файлы. Также это средство дает подсказки для некоторых видов хост-процессов (hosting processes):


Оценить некоторые основные возможности Process Explorer вам помогут следующие действия:

  1. Обратите внимание на то, что хост-процессы служб по умолчанию выделены розовым фоном. Ваши собственные процессы выделены синим фоном. (Цвета можно настроить по-другому.)
  2. Проведите указателем мыши над отображениями имен процессов и обратите внимание на то, что в окне подсказки показывается полное путевое имя. Как уже говорилось, для процессов конкретного типа в подсказке выводятся и дополнительные сведения.
  3. Щелкните на пунктах View (Вид), Select Columns (Выбрать столбцы) и во вкладке Process Image (Отображение процесса) установите флажок Image Path (Отображение пути).
  4. Отсортируйте информацию, щелкнув на заголовке столбца Process (Процесс), и обратите внимание на то, что отображение дерева исчезло. (Доступен либо просмотр дерева, либо просмотр информации, отсортированной по любому из показанных столбцов.) Щелкните еще раз для сортировки в порядке следования имен от Z до A. Затем щелкните еще раз, чтобы вернуться к просмотру дерева процессов.
  5. Чтобы просматривать только свои процессы, щелкните на пункте View (Вид) и снимите флажок ShowProcessesFromAllUsers (Показывать процессы от всех пользователей).
  6. Щелкните на пунктах Options (Дополнительные параметры), Difference Highlight Duration (Продолжительность различных подсветок) и измените значение на 5 секунд. Затем запустите новый (любой) процесс и обратите внимание на то, что новый процесс будет выделен зеленым фоном в течение 5 секунд. Завершите этот новый процесс и обратите внимание, что он остается выделенным красным фоном в течение 5 секунд, пока не исчезнет из перечня. Этот эффект помогает заметить в вашей системе созданные и завершенные процессы.

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

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

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

ПРИМЕЧАНИЕ. В потоках 32-разрядных приложений, запущенных под управлением 64-разрядной версии Windows, будут содержаться блоки как 32-разрядного, так и 64-разрядного контекста, которые Wow64 будет использовать при необходимости для переключения приложения из работы в 32-разрядном режиме в работу в 64-разрядном режиме. У этих потоков будут два стека для работы в пользовательском режиме и два CONTEXT-блока, а обычные функции Windows API будут возвращать 64-разрядный контекст. Но функция Wow64GetThreadContext будет возвращать 32-разрядный контекст.

Exit mobile version