РЕЦЕНЗИИ

Соломон Д., Руссинович М. Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP и Windows 2000. М.: Русская редакция, 2005. - 992 с.

Как известно, корпорация Microsoft весьма ревностно оберегает секреты своего главного продукта - ОС Windows. Но "запретный плод сладок", и поэтому всегда находятся люди, которым интересно узнать, а что же там внутри, за семью печатями. Публикации на тему внутреннего устройства Windows и ее недокументированных возможностей не слишком многочисленны. И, как ни странно, одна из самых полезных - серия книг "Inside Windows NT", издаваемая Microsoft Press с 1992 г., еще до выпуска NT 3.1. Нынешнее издание, посвященное версиям Windows 2000, XP и 2003, является четвертым по счету.

Книга включает 14 глав. В первой рассматриваются базовые концепции и терминология, используемая в Windows, а также инструменты, применяемые для изучения внутреннего устройства и поведения системы. Часть из них входит в стандартную поставку Windows, другую можно скачать с сайта Microsoft (www.microsoft.com) или приобрести в составе Microsoft Driver Development Kit (DDK), а некоторые разработаны авторами книги и размещены на их сайте www.sysinternals.com.

Вторая глава посвящена обзору архитектуры системы в целом. В третьей рассматриваются базовые системные механизмы, используемые всеми компонентами ядра ОС: обработка прерываний и ловушек, диспетчер объектов, синхронизация, локальный вызов процедур и др. В четвертой главе изучаются фундаментальные механизмы конфигурирования и управления системой - реестр, сервисы и инструментарий управления WMI (Windows Management Instrumentation), а в пятой речь идет о загрузке и завершении работы системы, а также об анализе возникающих в процессе загрузки проблем.

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

Вводу-выводу отведены главы 9-13. В первой из них рассматривается подсистема ввода-вывода в целом, функции драйверов, диспетчеров plug-and-play и электропитания, а также механизм обработки запросов ввода-вывода. В десятой главе изучается управление внешней памятью - драйверы дисков и средства управления томами. В одиннадцатой главе описывается диспетчер кэша, в двенадцатой - реализация файловых систем. Наконец, в тринадцатой главе говорится о поддержке сетей: здесь описана сетевая архитектура Windows и ее связь с эталонной моделью OSI, сетевые API, драйверы протоколов, сетевых служб и т. п.

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

Завершают публикацию словарь терминов и предметный указатель.

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

От предыдущей публикации, посвященной Windows 2000 и вышедшей в США в 2000 г., а на русском языке - только в 2004-м, это издание отличается тем, что в нем рассматриваются три последние на настоящий момент версии Windows - 2000, XP и 2003. Такое совмещение неудивительно, поскольку ядра этих версий отличаются не очень сильно и большая часть информации в равной степени применима к любой из них. Тем не менее многие сведения в общедоступной литературе никогда раньше не публиковались. Так, имеется немало данных об особенностях 64-разрядной версии Windows 2003 для платформ x64 (AMD64 и Intel EM64T) и IA64 (Itanium). Готовящаяся к выходу Windows Vista в книге не рассматривается, но фундаментальных изменений в ядре этой системы по сравнению с предшествующими версиями, по всей вероятности, не будет.

Хотя книга читается довольно легко, ее материал сложен и, конечно, совершенно не предназначен для неподготовленного читателя. Более того, даже профессиональный программист, прекрасно разбирающийся в "высокоуровневых" технологиях, таких, как разработка распределенных приложений, веб-сервисы и т. п., но лишь понаслышке знакомый с ассемблером, архитектурой микропроцессоров семейства x86 и тому подобными "мелкими" деталями, тщательно упрятанными от простых смертных операционной системой, компиляторами, стандартными библиотеками и API, навряд ли сможет в полном объеме понять все содержание этого толстенного тома. Подобные тонкости безусловно необходимы только разработчикам драйверов и других компонентов, непосредственно взаимодействующих с ядром Windows, ну а программистам-прикладникам они вроде бы и ни к чему. И все же трудно не согласиться с "отцом" Windows Дэвидом Катлером, написавшим в предисловии к данному изданию: "Экземпляр этой книги должен лежать на столе у каждого разработчика серьезного программного обеспечения".

Версия для печати