netlib.narod.ru< Назад | Оглавление | Далее >

Изучение внутреннего устройства Windows 2000

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

Чтобы побудить вас исследовать внутреннее устройство Windows 2000, мы часто даем в книге врезки с подзаголовком «Эксперимент» содержащие пошаговые инструкции для изучения какого-либо аспекта поведения Windows 2000. (Вы уже видели одну из таких врезок в этой главе.) Советуем вам повторить эти эксперименты — это позволит увидеть в действии многие вещи о которых рассказывается в книге.

Кроме того, книга комплектуется компакт-диском с последними версиями утилит, предлагаемых на сайте www.sysinternals.com (популярный сайт, содержащий информацию о внутреннем устройстве 32-разрядных систем Windows и инструментальные средства для исследований), и инструментальными средствами, поставляемыми только с этой книгой.

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


Таблица 1.2. Средства просмотра внутреннней информации Windows 2000


Утилита Имя исполняемого образа Источник

Dependency Walker DEPENDS Support Tools, Platform SDK
Dump Check DUMPCHK Support Tools, утилиты отладки, Platform SDK, Windows 2000 DDK
EFS Information Dumper EFSDUMP www.sysinternals.com1
File Monitor FILEMON www.sysinternals.com
Get SID GETSID Ресурсы Windows 2000
Global Flags GFLAGS Support Tools, Platform SDK, Windows 2000 DDK
Handle/DLL Viewer HANDLEEX, NTHANDLE www.sysinternals.com
Junction JUNCTION www.sysinternals.com/misc.htm
Отладчики ядра I386KD, WINDBG, KD Утилиты отладки, Platform SDK, отладчики Windows 2000 DDK
Object Viewer WINOBJ Platform SDK, www.sysinternals.com
Открытые дескрипторы OH Ресурсы Windows 2000
Page Fault Monitor PFMON Ресурсы Windows 2000, Platform SDK
Performance PERFMON Утилита Windows 2000
PipeList PIPELIST www.sysinternals.com/tips.htm
Pool Monitor POOLMON Support Tools, Windows 2000 DDK
Process Explode PVIEW www.reskit.com
Process Statistics PSTAT Platform SDK, www.reskit.com
Process Viewer PVIEWER (в Support Tools) или PVIEW (в Platform SDK) Support Tools, Platform SDK
Quantum QUANTUM Сопроводительный CD
Quick Slice QSLICE Ресурсы Windows 2000
Registry Monitor REGMON www.sysinternals.com
Service Control SC Ресурсы Windows 2000
Task (Process) List TLIST Support Tools
Task Manager TASKMAN Утилита Windows 2000
TDImon TDIMON www.sysinternals.com


Программное обеспечение на компакт-диске

На прилагаемом компакт-диске содержатся следующие уникальные инструментальные средства, которые помогут вам исследовать внутреннее устройство Windows 2000:

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

Если LiveKd отображает внутренние переменные ядра, то DLL расширения обеспечивает наблюдение за изменениями значений этих переменных во времени. Например, в таких переменных могут содержаться интересующие вас числовые значения, недоступные через счетчики производительности Windows 2000.

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

Оснастка Performance

Мы часто ссылаемся на этот инструмент, доступный через папку Administrative Tools (Администрирование) в меню Start (Пуск) или через Control Panel (Панель управления). Оснастка Performance (Производительность) предназначена для мониторинга системы, просмотра журналов, в которых регистрируются значения счетчиков производительности, и сигнализации при достижении заданных пороговых значений тех или иных счетчиков. Говоря об оснастке Performance, мы подразумеваем лишь ее функцию системного мониторинга.

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

Можно получить краткое описание любого счетчика. Для этого выберите счетчик в окне Add Counters (Добавить счетчики) и щелкните по кнопке Explain (Объяснение). Или откройте справочный файл Performance Counter Reference с компакт-диска Ресурсы Windows 2000. Информацию о том, как интерпретировать показания счетчиков для устранения «узких мест» в системе или для планирования пропускной способности сервера, можно найти в главе «Контроль производительности» книги «Сопровождение сервера. Ресурсы Microsoft Windows 2000 Server».

Заметьте, что все счетчики производительности Windows 2000 доступны из программ. Краткое описание соответствующих компонентов, вовлеченных в получение значений счетчиков производительности через Win32 API, приведено в разделе «HKEY_PERFORMANCE_DATA» главы 5.

Windows 2000 Support Tools

Windows 2000 Support Tools включают около 40 утилит, полезных в администрировании систем на базе Windows 2000 и устранении неполадок в них. Многие из этих утилит раньше были частью Ресурсов Windows NT 4.

Вы можете установить Support Tools, запустив Setup.exe из папки \Support\Tools на дистрибутивном компакт-диске любого издания Windows 2000. (То есть Support Tools одинаковы в Windows 2000 Professional, Server и Advanced Server.)

Ресурсы Windows 2000

Ресурсы Windows 2000 (Windows 2000 Resource Kits) дополняют Support Tools, предлагая более 200 утилит. Кроме многих полезных средств просмотра внутреннего состояния системы эти ресурсы содержат дополнительную документацию, например справочник по реестру и справочные файлы по счетчикам производительности.

Ресурсы существуют в двух изданиях: Windows 2000 Professional Resource Kit и Windows 2000 Server Resource Kit. Хотя последний набор представляет собой надмножество первого и может быть установлен на системах с Windows 2000 Professional, утилиты, входящие только в Ресурсы Windows 2000 Server, ни в одном из наших экспериментов не используются. Обновления и новые утилиты из наборов ресурсов можно получить на www.reskit.com.

Средства отладки ядра

Отладчики ядра (kernel debuggers) — это инструменты, позволяющие разработчикам драйверов устройств отлаживать свои драйверы и изучать дампы, записанные в результате краха системы. (Дамп — копия системной памяти, записанная в файл и помогающая определить причину краха системы.) Хотя отладчики ядра применяются в основном для анализа дампов памяти или для отладки драйверов устройств, они также полезны в исследовании внутреннего состояния Windows 2000, так как могут показывать внутрисистемную информацию, недоступную стандартным утилитам. Например, отладчик ядра может создать дамп внутренних структур данных таких как блоки потоков, блоки процессов, таблицы страниц памяти, состояние ввода-вывода и т.д. В этой книге описаны относящиеся к рассматриваемым темам команды отладчиков ядра и выводимая ими информация.

Отладчики ядра от Microsoft

Microsoft предлагает отладчики ядра в двух версиях: с интерфейсом командной строки (I386kd.exe для процессоров типа x862) и с графическим пользовательским интерфейсом (Windbg.exe). Существует и новая версия, Kd.exe, которая заменяет обе предыдущих версии. Эти инструменты являются частью пакета отладочных средств, доступного через:

ПРИМЕЧАНИЕ
Новые версии пакета отладочных средств выпускаются независимо от новых версий Windows 2000. Поэтому вы должны от случая к случаю проверять раздел Download на Web-узле Microsoft. Отладочные средства также включают пакет OEM Support Tools, который обновляется независимо от отладочных средств и поэтому может включать более новые версии связанных с отладкой утилит (таких как Kdex2x86.dll — DLL расширения отладчика ядра с дополнительными командами отладки).

В справочном файле по отладочным средствам, поставляемом с каждым из трех только что упомянутых пакетов, поясняется, как установить отладчики ядра и использовать их, а также другие средства отладки и утилиты, входящие в данный пакет. Дополнительную и более глубокую информацию о применении отладчиков ядра, ориентированную в основном на разработчиков драйверов устройств, можно найти в документации Windows 2000 DDK. Кроме того, в Knowledge Base (онлайновой базе данных технических статей) имеется несколько полезных статей по отладчикам ядра. Проведите поиск в Windows 2000 Knowledge Base (на support.microsoft.com} по ключевому слову debugref.

Отладчики ядра могут работать в двух режимах:

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

Утилита LiveKd

На прилагаемом компакт-диске содержится утилита LiveKd, которая позволяет использовать стандартный отладчик ядра от Microsoft на «живой» системе — без подключения второго компьютера. LiveKd также годится для большинства экспериментов, предлагаемых в этой книге, и поэтому очень полезна в исследовании внутреннего устройства Windows 2000.

LiveKd запускается точно так же, как I386kd, Windbg или Kd. Эта утилита передает любые указанные параметры командной строки выбранному вами отладчику. По умолчанию LiveKd запускает новый отладчик Kd. Если найти Kd в текущем каталоге не удается, LiveKd пытается запустить I386kd. Для запуска отладчика с графическим интерфейсом (Windbg), задайте ключ -w. Чтобы получить подсказку по ключам LiveKd, укажите ключ -?.

LiveKd предоставляет отладчику смоделированный файл дампа, поэтому вы можете выполнять в LiveKd любые операции, поддерживаемые для дампов. Поскольку LiveKd хранит смоделированный дамп в физической памяти, отладчик ядра может попасть в такую ситуацию, в которой структуры данных находятся в рассогласованном состоянии в процессе их изменения системой. При каждом запуске отладчик получает снимок состояния системы; если вы хотите обновить этот снимок, выйдите из отладчика (командой q), и LiveKd спросит Вас, нужно ли начать сначала. Если отладчик, выводя информацию на экран, вошел в цикл, нажмите клавиши Ctrl+C, чтобы прервать вывод, выйдите из отладчика и запустите его снова. Если он завис, нажмите клавиши Ctrl+Break, которые заставят завершить процесс отладчика. После этого вам будет предложено снова запустить отладчик.

SoftICE

Еще один инструмент, не требующий двух машин для прямой отладки ядра, — SoftlCE, который можно приобрести у Compuware NuMega (www.numega.com}.

Символы, используемые при отладке ядра

Чтобы применить любой из ранее перечисленных отладчиков ядра для изучения внутренних структур данных Windows 2000 (например, списка процессов, блоков потоков, списка загруженных драйверов, информации об использовании памяти и т.д.), вы должны располагать корректными файлами символов по крайней мере для образа ядра, Ntoskrnl.exe. (Подробнее об этом файле рассказывается в разделе «Обзор архитектуры» главы 2.) Символы являются частью пакета Customer Support Diagnostics (который, как уже говорилось, можно скачать с www.microsoft.com). Они устанавливаются отдельно от средств отладки и по умолчанию размещаются в папке \Winnt\Symbols.

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

ПРИМЕЧАНИЕ
Таблицы символов должны соответствовать версии образа, из которого они взяты. Например, установив Windows 2000 Service Pack, вы должны получить обновленные файлы символов по крайней мере для образа ядра; иначе при попытке загрузить эти символы отладчиком ядра возникнет ошибка контрольной суммы. Обновленные файлы символов обычно не поставляются с Service Pack — их нужно скачивать отдельно. (Если Вы подписаны на MSDN уровня Professional или на TechNet, то вместе с Service Pack получаете и новые файлы отладочных символов.)

Platform Software Development Kit (SDK)

Platform SDK является частью подписки MSDN уровней Professional и Universal, кроме того, его можно бесплатно скачать с msdn.microsoft.com. В нем содержатся заголовочные файлы и библиотеки С, необходимые для компиляции и компоновки Win32-приложений. (Microsoft Visual C++ тоже поставляется с этими файлами, но их версии в Platform SDK всегда более новые и соответствуют самым последним версиям операционных систем Windows.) В Platform SDK для нас будут представлять интерес заголовочные файлы Win32 API (\Program Files\Microsoft Platform SDK\Include) и несколько утилит (Pfmon.exe, Pstat.exe, Winobj.exe). Некоторые из них также поставляются с Ресурсами Windows 2000. Кроме того, отдельные утилиты поставляются с Platform SDK и MSDN Library как примеры исходного кода.

Device Driver Kit (DDK)

Windows 2000 DDK является частью подписки на MSDN уровней Professional и Universal, а также доступен для бесплатного скачивания с www.microsoft.com/hwdev. Хотя DDK нацелен на разработчиков драйверов устройств, он представляет собой богатый источник информации о внутренних структурах Windows 2000. Так, в документации DDK дается исчерпывающее описание подсистемы ввода-вывода Windows 2000, включая внутрисистемные функции и структуры данных, используемые драйверами устройств.

Кроме документации в DDK входят заголовочные файлы, определяющие ключевые внутренние структуры данных, константы и интерфейсы многих внутрисистемных подпрограмм (в частности, обратите внимание на файл Ntddk.h). Эти файлы очень полезны в исследовании внутренних структур данных Windows 2000, так как мы даем лишь обобщенное описание внутренних структур, а в заголовочных файлах можно найти все подробности о каждом поле таких структур (такие, как размер и тип данных). Некоторые структуры данных (например, заголовки для диспетчера объектов, блоки ожидания, события, мутанты, семафоры и др.) определены в DDK полностью. А формат многих внутренних структур данных Windows 2000, не определенных в заголовочных файлах DDK, можно выяснить с помощью команды !dso отладчика ядра.

Утилиты Systems Internals

Во многих экспериментах мы используем свободно распространяемые утилиты, которые вы можете скачать с www.sysinternals.com. Большинство этих утилит написано Марком Руссиновичем, соавтором этой книги. Все утилиты с упомянутого Web-узла находятся в каталоге \Sysint на прилагаемом компакт-диске. Кроме того, на диске записана полная копия Web-узла www.sysinternals.com. (Учтите, что с момента выпуска компакт-диска на www.sysinternals.com наверняка появились дополнительные утилиты и более новые версии прежних утилит.) Многие из этих утилит требуют установки и запуска драйверов устройств, работающих в режиме ядра, а значит, вам понадобятся полномочия администратора.



1 На прилагаемом компакт-диске содержатся все утилиты с сайта www.sysinternals.com.

2 Windows 2000 — в отличие от Windows NT — не работает на процессорах Intel 80386, но по историческим причинам на дистрибутивном компакт-диске этой операционной системы каталог с программным обеспечением для компьютеров с процессорами типа x86 по-прежнему называется i386. Поэтому и отладчик ядра для процессоров x86 называется I386kd.exe.


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz