[Архив бюллетеней ^][< Том 1, Число 1][Том 1, Число 3 >]

Внутренние информационные бюллетени системы том 1, номер 2

http://www.sysinternals.com


15 мая 1999 г. — в этой проблеме:

  1. НОВЫЕ ВОЗМОЖНОСТИ ВНУТРЕННИХ СИСТЕМ

    • SDelete
    • Обновление Win2K с экрана BlueScreen
    • Linux и Enterprise
    • "Внутри служебных программ NT"
    • Мой май windows NT Magazine Column
    • Не так-новые вещи
  2. ВНУТРЕННИЕ НОВОСТИ

    • Д-р GUI бедные кровати манеры
    • WinDev '99 East
    • Драйвер Numega работает в ближайшее время
    • Выпущена бета-версия 3 DDK
    • Win2K Queued Spinlocks
  3. ЧТО ПРОИСХОДИТ

    • Средство защиты файлов Win2K (SFP)

СПОНСОР: WINTERNALS SOFTWARE

Информационный бюллетень по внутренним системам спонсируется По Winternals, в Интернете http://www.winternals.com. Winternals Software является ведущим разработчиком и поставщиком расширенных системных средств для Windows NT/2K. Продукты Winternals Software включают FAT32 для Windows NT 4.0, ERD Commander (возможность загрузки диска для Windows NT) и NTRecover.

Здравствуйте!

Добро пожаловать во второй выпуск бюллетеня System Internals. В настоящее время бюллетень имеет 2700 подписчиков, с подписками по-прежнему сильны.

С момента последнего бюллетеня Корпорация Майкрософт официально выпустила Windows 2000 Beta 3. Номер сборки ядра бета-версии 3 равен 2031, в то время как начальное ядро выпуска NT 4.0 составило 1381, а nt 3.51 было номер сборки 1025. . То, что я считаю нечетным (и несколько раздражает), заключается в том, что корпорация Майкрософт увеличивает номер сборки каждый раз, когда они делают полную сборку операционной системы (каждый рабочий день), однако сообщаемое число сборки ядра отражает его первоначального общедоступного выпуска. Например, хотя фактическое число сборки ядра NT 4.0 с пакетом обновления 5 превышает 1381, ядро по-прежнему сообщает 1381 в качестве номера сборки.

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

Windows 2000 поставляется с множеством новых API, многоуровневых служб и усовершенствований ядра. Одно из изменений, которое будет особенно видно разработчикам драйверов устройств, заключается в том, что синий экран смерти (BSOD) изменился. В предыдущих версиях NT BSOD отображал сведения о времени подключения и загрузке адресов для всех драйверов в системе, а также дампа стека, так как она существует во время сбоя. В Windows 2000 отображаются только код остановки и связанные строки адресов (адресные строки, которые переводят один или несколько параметров стоп-кода в расположения в драйверах устройств) вместе с подробным сообщением. В сообщении о поддержке предполагается, что вы проверка параметры BIOS и жесткого диска и отключите дефрагментацию программного обеспечения и сканеров вирусов, чтобы избежать повторного сбоя. Службы поддержки Microsoft Premier (PSS) определяются на основе их опыта и отзывов клиентов, что nt 4-стиль BSOD не полезен для определения причины сбоя.

Лично я нашел загруженный список драйверов, и, в частности, стек дампа, чтобы быть полезным при получении отчетов об ошибках драйвера от пользователей это гораздо проще и быстрее, чтобы получить эту информацию, чем пользователям, чтобы отправить многобайтовый аварийный дамб. Я часто изолировал причину сбоя на основе дампа стека и проверенных версий драйверов, загруженных пользователями на основе сведений о версии, отображаемых в списке драйверов. Мне интересно знать, что вы думаете: вы хотите увидеть NT 4-стиль BSOD перенесен в Windows 2000 или новый формат BSOD достаточно? Отправьте мне сообщение электронной почты, если у вас есть мнение. Я отчитаюсь о результатах этого неформального опроса в следующем бюллетене. Хотя я на тему BSOD, обязательно проверка обновления Windows 2000 постоянно популярных систем внутренних экранных синим экрана, который рассматривается в этой проблеме.

Спасибо!

-Марк

НОВЫЕ ВОЗМОЖНОСТИ ВНУТРЕННИХ СИСТЕМ

SDELETE

В рамках Windows NT 4.0, выполняющей требования к рейтингу безопасности C2, она реализует "защиту повторного использования объектов". Это означает, что приложения NT ноль файлов и ресурсов памяти выделяются при первом доступе к ресурсам. Это предотвращает, например, создание большого файла и изучение его содержимого, чтобы увидеть, что ранее хранилось на диске. Однако повторное использование объектов не является степенью защиты ресурсов, доступных приложениями, которые обходят стандартные API-интерфейсы, связанные с ресурсами, или обходят операционную систему полностью. Например, можно использовать редактор дисков, например DiskProbe пакета ресурсов, для проверки содержимого нераспределенных частей диска. Это позволяет просматривать данные, ранее принадлежащие удаленным файлам.

Во многих средах требуется возможность безопасного удаления. Эта функция позволяет пользователям безвозвратно удалять конфиденциальные данные, чтобы они не отображались средствами, которые обходят средства защиты операционной системы. Появление файловой системы шифрования (EFS) подчеркнуло необходимость безопасного удаления в Windows 2000. При шифровании ранее незашифрованного файла EFS не удаляет содержимое выделений дисков, содержащих незашифрованные данные файла при освобождении выделения диска. Таким образом, несмотря на то, что активная версия зашифрованного файла безопасна, старая версия файла по-прежнему существует в нераспределенных участках диска, пока не будет перезаписана новыми данными файлов, которые NTFS назначает этим частям.

Чтобы заполнить это отверстие, я написал SDelete (Безопасное удаление). Это средство командной строки, которое позволяет не только безопасно удалять стандартные файлы, но и безопасно удалять все ранее удаленные данные, которые существуют в нераспределенных участках диска. Кроме того, он работает с сжатыми, зашифрованными и разреженными файлами Windows NT/2000, что требует использования API дефрагментации. SDelete придерживается очистки и очистки министерства обороны стандарт DOD 5220.22-M, чтобы быть уверенным, что после удаления данных, его ушло навсегда.

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

Документацию по API дефрагментации Windows NT/2000 см. в документации http://www.sysinternals.com/defrag.htm. Скачайте SDelete с полным исходным кодом по адресу http://www.sysinternals.com/sdelete.htm.

ОБНОВЛЕНИЕ WIN2K С ЭКРАНА BLUESCREEN

Изменения, внесенные корпорацией Майкрософт на начальный экран NT и макет "Синий экран смерти" (BSOD) в Windows 2000, внесли в системный снимок экрана "Внутренний синий экран" требует большого обновления. Чтобы продолжать предоставлять вам максимальное значение в реалистичности BSOD, я выпустила версию 2.0 с сохранением экрана. Он не только отражает изменения в формате BSOD, но и точно имитирует начальный экран Windows 2000, полный смены полосы хода выполнения и обновлений индикатора выполнения. Это так реально, что экранный заставщик будет обмануть даже пользователей и разработчиков Windows 2000 экспертов. Конечно, в nt 4.0 BlueScreen Screen Saver по-прежнему представлен NT 4.0 BSOD и начальных экранов.

Как я воссоздал экран запуска Windows 2000 так идеально и в то же время не нарушает законы об авторских правах? Я не включаю графику начального растрового изображения Windows 2000 с помощью средства сохранения экрана. Вместо этого я использую DirectX для переключения графического режима на тот же режим, который используется Windows 2000 во время запуска последовательности запуска, а затем я ссылаюсь на растровые ресурсы файла ядра Windows 200, ntoskrnl.exe. Эти ресурсы (их можно просмотреть, открыв ресурсы ntoskrnl.exe в Visual Studio) — это те, которые отображаются ядром, что является изменением способа работы с Windows 9x способом выполнения действий, в которых на самом деле запуска графики являются отдельными файлами. Это не похоже на компьютерные изготовители оборудования будет предоставлено возможность настроить возможности запуска в Windows 2000...

Вы можете скачать снимок экрана BlueScreen в . http://www.sysinternals.com/bluescreen.htm. Если у вас есть юмористская история, связанная с обмануть кого-то с сохранением экрана, пожалуйста, передайте его вместе.

Дополнительные сведения о том, как и почему BSOD можно узнать в моем столбце Windows NT Magazine NT Internals в декабре 1997 г. "Внутри синего экрана". Ссылка на страницу http://www.sysinternals.com/publ.htm"Публикации внутренних систем" перейдет к встроенной версии этого столбца. Страница также содержит ссылки на другие встроенные презентации статей и столбцов, которые я создал.

LINUX И ENTERPRISE

Огромный ответ сообщества Linux на мою статью в апреле выпуска Windows NT Magazine о недостатках масштабируемости ядра Linux побудил журнал опубликовать встроенную версию статьи в преддверии расписания. Ссылку на статью "Linux и Enterprise" можно найти в разделе "Статьи" в разделе "Статьи" http://www.sysinternals.com/publ.htm. В этой статье описывается несколько ограничений текущего выпуска ядра Linux (2.2x), включая отсутствие эффективного механизма ожидания событий, значительной сериализации системного вызова, асинхронной операций ввода-вывода и плохой реализации api сокета sendfile (в NT, называемом SendFile). Сочетание этих ограничений предотвращает конкуренцию Linux с NT и другими ЮНИКСами с точки зрения производительности корпоративных приложений, таких как веб-серверы, серверы баз данных и почтовые серверы.

"ВНУТРИ NT UTILITIES"

Если вы использовали Filemon, Regmon или HandleEx и хотели узнать больше о том, что они говорят вам и как они реализованы, то вы будете заинтересованы в моем февральской колонке Windows NT Magazine "Внутри служебных программ NT". В этом столбце описываются внутренние элементы этих средств, а для Regmon и Filemon немного описаны коды ошибок и типы запросов, которые они регистрируют при записи действий реестра или файловой системы. Ссылка на локальную версию этой статьи, которая только что стала доступной, находится в http://www.sysinternals.com/publ.htm.

МОЙ СТОЛБЕЦ ЖУРНАЛА WINDOWS NT

Вы когда-нибудь задавались вопросом, как Windows NT/2000 упорядочить содержимое реестра в памяти или на диске? Текущий (май) вопрос Windows NT Magazine включает мой столбец "Внутри реестра", который сообщает вам это и многое другое. Например, узнайте, как подсистема режима ядра Configuration Manager (подсистема, отвечающая за управление реестром), ищет ключи, хранит данные о значении, оптимизирует поиск и защищает целостность файлов реестра на диске. Windows NT Magazine, http://www.winntmag.comдоступен в Границах и Барнсах и Благородах.

НЕ ТАК-НОВЫЕ ВЕЩИ

Вскоре после выпуска Windows 2000 Beta 2 я взял проверенную (отладочную) сборку файла образа ядра (ntoskrnl.exe), выполнил строковый поиск в ядре и придумал список имен исходных файлов, используемых для сборки ядра. Проверенная сборка ядра NT/2000 содержит многочисленные инструкции Assert (проверка согласованности), которые включают имя файла, в котором находится утверждение. Предположим, что практически каждый файл любого значения в источнике ядра будет иметь по крайней мере один assert в нем, список довольно всеобъемлющий. Дамп списка в скрипт Java дал мне приятное Обозреватель-подобное дерево структуры каталогов исходного дерева Windows 2000. См. дополнительные сведения на странице http://www.sysinternals.com/nt5src.htm.

ВНУТРЕННИЕ НОВОСТИ

ДОКТОР. БЕДНЫЕ КРОВАТИ GUI МАНЕРЫ

В выпуске Microsoft Developer Network News д-р GUI в марте/апреле вопрос от читателя, который спрашивает, как драйвер может аффинизовать (принудительно использовать конкретный ЦП) свои потоки. Г-н GUI отвечает, что нет способа определить количество процессоров в системе от драйвера, и что поток драйвера не может сообщить, на каком процессоре он работает. К сожалению, д-р GUI взорвал этот диагноз (может быть, д-р GUI должен придерживаться guis).

Ядро NT (ntoskrnl.exe) экспортирует переменную с именем KeNumberProcessors, определенную в NTDDK. H as:

extern PCCHAR KeNumberProcessors;

Его можно напрямую ссылаться в драйвере следующим образом:

CHAR    i;

for( i = 0; i < *KeNumberProcessors; i++ ) {

    // do processor specific stuff
}

Чтобы определить, на каком процессоре выполняется поток драйвера, используйте KeGetCurrentProcessorNumber(), другой экспорт ядра, который не только определен в NTDDK. H, но на самом деле документирован в DDK!

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

WINDEV '99 EAST

Выпуск 1999 Восточного побережья премьер-конференции для разработчиков Windows быстро приближается. WinDev '99 Восток проходит 14-18 июня в Бостоне Кембридж Марриот. Ряд больших имен в разработке Windows говорят, в том числе Джефф Рихтер, Джефф Prosise и Don Box. Я буду там с Джейми Ханрахан и Брайан Катлин в дорожке водителя устройства. Мои презентации включают в себя дневное руководство по внутренним системам NT, а также один на написании драйверов файловой системы Windows NT/2K и один на сложных проблемах разработки драйверов устройств. Приезжайте и здравствуйте!

NUMEGA DRIVER РАБОТАЕТ С ВЫПУСКОМ НЕМИНУЕМОГО ВЫПУСКА

Compuware NuMega Labs находится на грани выпуска мощного нового пакета средств разработки драйверов устройств Windows 9x/NT/2K, DriverStudio. DriverStudio объединяет все существующие средства драйвера устройств NuMega, включая DriverAgent, DriverWorks, SoftICE и VtoolsD, и добавляет новый BoundsChecker для драйверов и FieldAgent (только Windows NT/2K).

Версия драйвера устройства BoundsChecker обеспечивает комплексный мониторинг каждого используемого драйвера API ядра, и его можно использовать для мониторинга взаимодействия драйвера с любым другим драйвером устройства в системе. FieldAgent позволяет развернуть версию драйвера BoundsChecker в клиентских системах, чтобы клиенты могли собирать трассировки для анализа. В ближайшее время как бесплатное обновление для клиентов DriverStudio — TrueTime для драйверов и TrueCoverage для драйверов, инструментов, позволяющих легко настраивать производительность и тестировать драйверы устройств.

Этот пакет является конечным пакетом средств разработки драйверов, и я искренне рекомендую его (я на бета-программе). Дополнительные сведения см. в http://www.numega.com.

БЕТА-ВЕРСИЯ 3 DDK ВЫПУЩЕНА

В сочетании с выпуском Windows 2000 Beta 3 корпорация Майкрософт предоставляет бесплатную загрузку Windows 2000 Beta 3 DDK (комплект драйверов устройств). Вы можете схватить DDK в http://www.microsoft.com/ddk/ddk2kb3.htm. Я надеюсь, что пакет SDK будет следовать в ближайшее время, так как в бета-версии 3 есть ряд API Win32, которые не описаны по состоянию на апрельский выпуск MSDN.

WIN2K QUEUED SPINLOCKS

Windows 2000 использует новый тип спинлока под названием "очередь спинлока" для своих глобальных блокировок. Глобальные блокировки в Windows 2000 совпадают с глобальными блокировками для Windows NT 4.0 и включают:

  • KiDispatcherLock: блокировка базы данных планировщика
  • KiContext-SwapLock: блокировка буфера чтения
  • MmPfnLock: блокировка базы данных кадра физической страницы
  • MmSystemSpaceLock: блокировка адресного пространства в режиме ядра
  • CcMasterSpinLock: глобальный спинлок диспетчера кэша
  • CcVacbSpinLock: блокировка сопоставления массива диспетчера кэша

В однопроцессорных очередях спинлок работает точно так же, как обычные спинлоки. Однако в многопроцессорной сборке NT очереди спинлок значительно отличаются. Как и стандартные спинлоки, очереди спинлок реализуются в HAL. Ядро вызывает функцию KeAcquireQueuedSpinlock HAL для получения очереди спинлока и вызывается KeReleaseQueuedSpinlock для выпуска очереди спинлока. KeAcquireSpinlock а KeReleaseSpinlockтакже функции HAL, используемые ядром для получения и выпуска стандартных спинблокировок, требуют адрес указанной спинлоки в качестве параметра. В отличие от этого, функции спинлока в очереди принимают номер индекса глобальной спинлоки. Ядро инициализирует глобальные спинлоки в массиве, где каждый спинлок имеет предопределенный номер индекса, который ядро использует для идентификации их в HAL. Таким образом, очереди спинлоки не могут быть определены и использованы драйверами устройств, так как нет способа расширения глобального массива спинлока в очереди.

В Windows 2000 каждый регион управления процессором (PCR) в SMP (есть один PCR для каждого процессора) имеет массив с столько записей в нем, сколько в очереди спинлок. Каждая запись массива содержит два поля: указатель на очередь, соответствующую (поле spinlock) и "очередь". В следующем описании, когда я ссылаюсь на поля спинблокировки и очереди, я говорю о полях, связанных с записью массива для приобрести или освободить.

KeAcquireQueuedSpinlock работает следующим образом: функция пытается получить спинблокировку с помощью инструкции ЦП с блокировкой блокировки, чтобы поместить адрес PCR текущего процессора в спинблокировку. Если спинлок удерживается, функция имеет, как часть операции обмена, адрес pcR другого процессора. Затем функция определяет себя как "ожидание", переключив низкий бит поля спинблокировки в собственном PCR. Затем он помещает свой собственный адрес PCR в поле очереди PCR, которое он извлекается из спинблокировки. Наконец, он ожидает в занятом цикле, пока низкий бит не будет отключен в поле спинблокировки, когда бит отключен, текущий процессор был предоставлен спинлок и поэтому возвращается вызывающему объекту функции получения.

После того как процессор приобрел очередь спинлока и закончил обработку, которую он хотел сделать, удерживая блокировку, он вызывает KeReleaseQueuedSpinlock. KeReleaseQueuedSpinlock просматривает поле очереди для указанного спин-блокировки в PCR текущего процессора. Если поле очереди не равно нулю, то другой процессор имеет "очередь" его PCR там. KeReleaseQueuedSpinlock очищает низкий бит поля спинблокировки для ожидающего PCR, а затем очищает собственное поле очереди и возвращает. Очищая низкий бит в поле спинблокировки ожидания PCR, он только что сигнализирует следующей ЦП в строке, что он может иметь блокировку. Если поле очереди было нулевым, то другой процессор не ожидает блокировки и KeReleaseQueuedSpinlock просто выполняет операцию переблокировки обмена, чтобы очистить глобальную спинлоку.

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

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

ЧТО ПРОИСХОДИТ

Windows 2000 включает в себя множество функций, которые делают его более устойчивыми к ошибкам оператора и неправильное поведение приложений. Одним из них является то, что многие библиотеки DLL и драйверы под %systemroot%\system32%systemroot%\system32\drivers каталогом защищены наблюдателем под названием System File Protector (SFP). Вы можете проверить его существование, перейдя в этот system32 каталог и переименование ntoskrnl.exe. Наблюдатель будет просыпаться и уведомлять вас о том, что он обнаружил изменения в защищенном системном файле и исправит его. Если вы проверка каталог снова вы найдетеntoskrnl.exe, было волшебно заменено. В следующий раз я скажу вам, как это работает.


Благодарим вас за чтение бюллетеня внутренних систем.

Опубликовано в субботу, 15 мая 1999 г. 7:15 вечера по оттох

[Архив бюллетеней ^][< Том 1, Число 1][Том 1, Число 3 >]