[新闻稿存档 ^][< 第 3 卷第 1 号][第 4 卷第 1 号 >]

Systems Internals 通讯第 3 卷,第 2 号

http://www.sysinternals.com
版权所有 (C) 2001 Mark Russinovich


2001 年 8 月 20 日 - 本期:

  1. 编辑

  2. SYSINTERNALS 最近更新

    • Process Explorer v5.1
    • Handle v2.0
    • PsInfo v1.1
    • PsExec v1.24
    • PsLogList v2.07
    • Windows XP 源布局
    • DebugView v4.13
    • PageDefrag v2.1、Contig v1.41
    • Sysinternals at Microsoft
  3. 内部信息

    • Inside Windows 2000,交互式 DVD
    • 记下日期:Russinovich 和 Solomon 在奥斯汀一起教学
    • 命令行磁盘管理
    • WINHEC 2001 在线幻灯片
    • XP 中新的文件系统筛选器驱动程序接口
    • 一键击溃 Windows
    • Windows XP 预提取
    • Windows .NET 连接
  4. 即将推出

    • 我的 Itanium 体验

赞助商:WINTERNALS SOFTWARE

Sysinternals 通讯由 Winternals Software 赞助,网址为 http://www.winternals.com. Winternals Software 是 Windows NT/2K/XP 高级系统工具的领先开发者和提供商。 Winternals Software 产品包括用于 Windows NT 4.0 的 FAT32、NTFSDOS Professional Edition(用于 DOS 的读/写 NTFS 驱动程序)和 Remote Recover。

Winternals 自豪地宣布,Defrag Commander 版本 1.31 是可用的最快、最彻底的企业级碎片整理程序。 现在,你可以通过简单的 MMC 管理单元在整个 Windows 企业中管理碎片整理计划,甚至无需在 NT 或 Windows 2000 系统上安装任何客户端软件。 只需 169 美元即可在线购买 10 个系统许可证,并提供大幅数量折扣。 有关详细信息或要免费下载和使用 30 天,请访问 http://www.winternals.com/39。

大家好,

欢迎阅读 Sysinternals 新闻稿。 该新闻稿目前有 33,000 名订阅者。

我以几种不同的身份使用计算机:软件开发人员、用户和系统管理员(对于我自己的开发和测试系统网络)。 由于我想为 Sysinternals 免费软件工具和 Winternals 商业产品吸引最广泛的受众,因此大多数实用程序至少面向 Windows NT 4 到 Windows XP,许多实用程序也可在 Windows 95 到 Windows Me 上运行。 我编写的大多数工具都是系统级工具,这意味着它们通常包含一个或多个 Windows 变体的特殊情况代码。 遗憾的是,Windows NT 系列和 Windows 9x 系列之间存在明显的用户界面和内核差异,甚至同一系列中的版本之间也存在差异。

我曾经使用多个调试系统来执行测试,所有这些系统都配置为多重启动我枚举的 Windows 版本,然后启动到某个版本,进行测试,然后重新启动到下一个版本。 除了速度慢之外,测试有时还会受到我没有清理干净的实用程序的中间测试版本的干扰。 虽然我仍然拥有一套用于调试问题的多重启动系统集合,但一个名为 VMWare (www.vmware.com) 的创新产品使我的测试周期更快、更容易。

VMWare 是一种虚拟机环境,用于创建在 Windows NT、Windows 2000 或 Linux 安装(主机)上运行的虚拟机(来宾)。 来宾可以运行 Windows、DOS 和 Linux 的大多数变体。 看到一个版本的操作系统运行在另一个版本的操作系统之上,尤其是当你将虚拟机设置为全屏时,你会感到不安–几乎没有办法检测到你不是坐在一台 Linux 计算机的屏幕前,而是面对着运行在 Windows 2000 上的 Linux 计算机的虚拟显示屏。 虚拟机是一种由软件实现的容器,它封装了运行在其中的操作系统和应用程序,使得当它们试图与所认为存在的硬件进行交互时,虚拟机软件会截获这些访问。 虚拟机软件会创建虚拟设备,这些设备充当真实硬件或虚拟硬件的精心控制的替代品。 例如,当在虚拟机中运行的应用程序向虚拟机的显示内存写入内容时,虚拟机软件会更新代表虚拟机显示的窗口内容,而不会让这些访问触及真正的视频内存。 如果虚拟机以全屏模式运行,则虚拟机软件将允许此类访问直接操控视频内存。

仅虚拟机功能就使 VMWare 非常有用,因为你可以在硬盘上安装任意数量的“测试系统”。 VMWare 更强大之处在于,你可以“暂停”虚拟计算机,将其状态保存到磁盘,然后在几秒钟内恢复它,还原暂停时的状态。 但这还不是全部。 我广泛使用了一项称为“非持久性磁盘”的功能,该功能会让 VMWare 启动一个虚拟计算机,其虚拟磁盘包含你定义的内容(例如,只安装基本的 OS),然后跟踪更改,以便你可以撤消更改并恢复到启动状态。 如果我安装了某个实用工具的测试版本,然后需要确保我回到不反映该实用工具的任何更改的干净状态,则只需撤消更改。 我还发现 VMWare 在我的用户和系统管理员角色中很有用。 每当我下载不确定是否要保留的应用程序时,我只需先在具有非持久性磁盘的虚拟机中试用它,而避开损害我的开发系统的可能,也不会在卸载应用程序时让它充满残留碎片。

当前版本存在一些相对较小的缺点,导致我无法经常使用我的真实调试计算机。 首先,由于虚拟机不支持 DirectX,因此无法运行 Numega 的 SoftICE 调试器,除非虚拟机的屏幕分辨率为 640x480。 第二种情况是,VMWare 对串行端口的虚拟化受到限制,这就导致无法在主机和来宾之间或在来宾之间使用 Windbg 或 Kd 进行内核调试。 但是,后一个问题应该会在下一个主要 VMWare 版本中解决。

VMWare 尤为有趣的是,在 VMWare 证明这一点之前,计算机科学家一直认为,不可能在软件中虚拟出足够好的 x86 架构,以运行未修改的操作系统且同时不出现令人望而却步的性能下降。 挑战是巨大的,尤其是在硬件设备虚拟化领域,VMWare 的成功被视为一种突破,以至于 VMWare 最近在 USENIX 年度技术会议上发表了一篇“会议最佳”论文,介绍他们如何实现设备虚拟化。 你可以在 http://vmware1.m0.net/m/s.asp?HB4162878203X1075673X73339X. 阅读此文章

谈到 USENIX 技术会议,我还共同撰写了一篇发表在那里的论文:基于高性能内存的网络服务器:内核和用户空间性能 (http://www.sysinternals.com/files/webserver.pdf). 此文描述了我在 IBM Research 工作期间参与的一些创新研究。 这项工作的贡献在于内核模式网络服务器加速领域,除了对架构作出贡献外,我还负责了 Windows NT 和 Windows 2000 上的大部分实现工作。 该项目非常成功,我们一直保持着 SPECWeb 的网络服务性能世界纪录,它已作为仍在发展中的 IBM 产品 IBM Netfinity Web Server Accelerator 发布,Microsoft 和 Linux 社区已将其中的一些关键理念融入到自己的产品中(如 Windows 2000 的 IIS 和 Linux 上的 Tux)。

请将这篇新闻稿传递给你认为可能对该内容感兴趣的朋友。

谢谢!

-马克

SYSINTERNALS 最近更新

PROCESS EXPLORER V5.1

进程资源管理器是 HandleEx 的新名称,它是一个多用途实用工具,可显示有关进程、已加载的 DLL 以及已打开的操作系统资源的句柄的详细信息。 除了新名称之外,最新版本的进程资源管理器还推出了一系列新功能,包括高效的自动刷新、CPU 使用率列、更改进程优先级以及报告进程会话 ID(如果系统是终端服务器)。 此外,它还会显示有关进程的详细信息。 例如,可以查看进程内运行的服务列表(如果适用),检查进程的环境变量,以及查看进程命令行。 使用名为“进程树”的新排序选项时,你可以以图形方式查看进程的父子关系,这有助于确定进程的用途。 进程资源管理器在所有 Windows 9x 版本以及 Windows NT 4 到 Windows XP 上运行。

进程资源管理器的界面上不太明显的一点在于,它能够向你显示打开了特定文件或目录的进程。 将显示切换到处理模式,并在搜索对话框中输入有问题的文件或目录的名称。 搜索功能最常用于跟踪阻止你删除或重命名某个文件或目录的进程,但你也可以使用它列出加载了特定 DLL 的进程。

在 http://www.sysinternals.com/ntw2k/freeware/procexp.shtml. 下载进程资源管理器 v5.1

HANDLE V2.0

Handle 是进程资源管理器的句柄查看功能的命令行版本,它让你可以查看进程打开的操作系统资源(如文件)的句柄。 在某些情况下,与使用进程资源管理器的搜索工具相比,使用 Handle 可以更快地识别已打开文件或目录的进程,因为只需在 Handle 命令行上输入文件或目录名称的一部分。 除了更有效地查找句柄名称外,Handle 2.0 现在适用于 Windows 95/98/Me。

在 http://www.sysinternals.com/ntw2k/freeware/handle.shtml. 下载 Handle v2.0

PSINFO V1.1

PsTools 管理工具套件的最新工具是 PsInfo。 PsInfo 是一款命令行工具,用于报告计算机的硬件和操作系统特征。 例如,它会告诉你正在运行的操作系统,包括 Service Pack 编号、安装日期和到期日期(如果适用),以及配置(例如域控制器、成员服务器)。 它还列出了计算机上的 CPU 的类型、速度和数量,以及安装的物理内存量。 此信息使 PsInfo 方便用于系统标识或清单。 与 PsTools 套件中的所有工具一样,PsInfo 在本地或远程 Windows NT、2000 或 XP 计算机上运行。

在 http://www.sysinternals.com/ntw2k/freeware/psinfo.shtml. 下载 PsInfo v1.1

PSEXEC V1.24

PsExec 允许你在远程系统上启动进程,而无需在远程系统上手动安装任何软件,只要系统位于你的网上邻居中。 PsExec 的优势在于它支持重定向的控制台程序 I/O,用于处理远程控制台程序的键盘输入和文本输出,就像它在本地系统上运行一样。

最新版本的 PsExec 支持在同一远程系统上运行多个进程,例如,允许在另一个系统上远程打开多个命令提示符。 它还具有新的“强制复制”选项,可让你指定你想要 PsExec 将文件复制到远程计算机以进行执行,并替换任何现有版本。

在 http://www.sysinternals.com/ntw2k/freeware/psexec.shtml. 下载 PsExec v1.24

PSLOGLIST V2.07

PsLogList(另一个 PsTools 实用工具)从本地或远程系统转储事件日志。 与 eloglist 不同,具有相同用途的 Windows 2000 资源工具包工具 PsLogList 会显示记录的完整事件字符串,并在转储远程日志时使用来自远程系统而非本地系统的事件日志字符串资源文件。

PsLogList 的版本 2.07 包含命令行开关,以便你可以指示它转储扩展的事件日志信息(可与记录关联的附加信息),还有一个新开关,以便你只查看指定最近几天的记录。

在 http://www.sysinternals.com/ntw2k/freeware/psloglist.shtml. 下载 PsLoglist v2.07

WINDOWS XP 源布局

你是否曾想过 Microsoft 如何整理构成 Windows NT/2000/XP 内核的源代码? 我也想过,然后意识到这些信息是公开的。 每当 Microsoft 发布 Windows 2000/XP 的新版本时,它会发布多个版本:

  • 单处理器“free”版本
  • 支持 4 GB 以上物理内存的单处理器“free”版本
  • 多处理器“free”版本
  • 支持 4 GB 以上物理内存的多处理器“free”版本
  • “checked”多处理器版本
  • 支持 4 GB 以上物理内存的“checked”多处理器版本

共 6 个版本。 “free”与“checked”的区别不是说“free”版本是免费的(它不是),而是 MSDN CD 集中包含的“checked”版本包含有助于进行操作系统和设备驱动程序调试的代码和数据。 “free”版本的意思只是在编译时不使用条件编译语句中包含的额外代码。

额外的 checked 代码的例子包括报告操作系统正在做什么的调试输出语句、对设备驱动程序传入内核模式函数的参数进行更严格的一致性检查,以及“断言”语句。 断言语句可验证开发人员对适用于代码区域的条件的假设。 例如,如果指针应指向具有标识签名的数据结构,则开发人员可以插入一个断言来达到此效果。 违反断言的假设时会发生什么情况? 这取决于断言,但在 checked 版本中包含的断言的情况下,将输出调试输出消息,然后触发调试器断点,使得内核调试器激活(或者,如果没有处于活动状态的调试器,则会发生崩溃,运气好时会生成一个可以稍后检查的转储文件)。

为了轻松识别断言捕获的问题,checked 版本中使用的断言会输出断言位置的文件、函数和行号。 我可以通过使用“strings”字符串提取实用工具提取这些字符串并将其整理到 java 树视图中来显示源树布局。

在 http://www.sysinternals.com/ntw2k/info/xpsrctree.shtml 查看 Windows XP 源布局并详细了解断言(注意,IE 将显示有关页面加载缓慢的警告。将其关闭后,你将看到树)。

DEBUGVIEW V4.13

DebugView 是一种开发人员实用工具,可用于捕获来自本地系统或远程系统上的应用程序或驱动程序的调试输出,甚至可以同时从多个系统捕获调试输出。 这一最新版本增加了与 Windows XP RC 1 的兼容性。 DebugView 适用于 Windows 9x、Windows Me、Windows NT、Windows 2000 和 Windows XP。

在 http://www.sysinternals.com/ntw2k/freeware/debugview.shtml. 下载 DebugView v4.13

PAGEDEFRAG V2.1、CONTIG V1.41

在最受欢迎的 Sysinternals 下载中,PageDefrag 和 Contig 位居前列。 PageDefrag 可在启动时对核心系统数据文件进行碎片整理,Contig 是命令行文件碎片整理实用工具。 这些工具的最新版本都具有改进的、适用于 Windows 2000 的碎片整理引擎,并且每个版本都有自己的一些增强功能。

除了对注册表和分页文件进行碎片整理外,最新版本的 PageDefrag 还可对事件日志文件进行碎片整理。 与 Windows 2000 中的 Chkdsk 类似,PageDefrag 现在在启动过程中有 3 秒的倒计时,在此期间,你可以按任意键使其跳过碎片整理。

Contig 的独特之处在于,你可以使用它对单个文件、整个目录或整个磁盘进行碎片整理。 Contig 旨在优化对应用程序性能至关重要的特定文件,因为与商业碎片整理程序不同,它不会合并可用空间来帮助防止将来磁盘上的碎片。 除了增强的碎片整理引擎之外,新的 Contig 在非详细和详细模式下都有更好的输出格式。

在 http://www.sysinternals.com/ntw2k/freeware/pagedefrag.shtml. 下载 PageDefrag v2.1
在 http://www.sysinternals.com/ntw2k/freeware/contig.shtml. 下载 Contig v1.4

WWW.MICROSOFT.COM 上的 SYSINTERNALS

以下还是自上次新闻稿以来发布的 Microsoft 知识库 (KB) 文章中 Sysinternals 参考的最新一期。 从此,关于 Sysinternals 的 KB 参考文章总数达到 27 篇。

  • 使用 SQL Server ODBC 驱动程序时出现 0x8000FFFF“灾难性故障”消息
    http://support.microsoft.com/support/kb/articles/Q243/3/49.ASP

  • ACC:错误消息:ActiveX 组件无法创建对象
    http://support.microsoft.com/support/kb/articles/Q296/2/05.ASP

  • 如何:确定 Internet Explorer 使用的 MSXML 版本
    http://support.microsoft.com/support/kb/articles/Q296/6/47.ASP

  • 如何:排查来自 Recordset DTC 的“ADODB.Connection”错误 800a0bb9
    http://support.microsoft.com/support/kb/articles/Q197/3/23.ASP

  • 信息:80004005 和其他错误消息的故障排除指南
    http://support.microsoft.com/support/kb/articles/Q183/0/60.ASP

  • XADM:填充邮箱存储时出现事件 ID 3036 和 3026 消息
    http://support.microsoft.com/support/kb/articles/Q296/1/36.ASP

内部信息

INSIDE WINDOWS 2000,交互式 DVD

Dave Solomon 和我撰写了“"Inside Windows 2000,第 3 版”,这是 Windows 2000 内部和体系结构的官方指南,我们很高兴地宣布“Inside Windows 2000”DVD 教程即将发布。 本教程实际包含 5 张 DVD,内容超过 9 小时,由 Dave 和我一起在非正式环境中教你 Windows 2000 的内部工作原理。

涵盖的主题包括内存管理、进程和线程、存储、文件系统、网络等,每个主题分为 10-20 分钟的模块,方便查看。 该演示内容包含数十个图表、演示、屏幕截图和摘要列表,每个模块都以复习题结束,以测试和巩固你的理解。

最终定价和发布日期尚未最终确定,但如果你希望收到发布通知,请向 mailto:video@... 发送电子邮件,并在主题中加入“兴趣”一词。 或者,观看 http://www.sysinternals.com/video/ 了解详细信息。

记下日期:RUSSINOVICH 和 SOLOMON 在奥斯汀一起教学

如果你对 DVD 集感兴趣,你一定会对看到 Dave 和我现场教学 NT 内部原理的机会感兴趣。 来到德州奥斯汀,12 月 11 日至 13 日,听取我们为期 3 天介绍 Windows XP/2000/NT 内部体系结构的课程。 该课程以《Inside Windows 2000,第三版》为基础,内容包括环境子系统、系统调用分派、系统线程、启动和关闭、注册表内部、进程和线程调度、内存管理、安全性、I/O 系统、存储、NTFS 和缓存管理器等。 通过了解 Windows XP 和 2000 的内部工作原理,可以更有效地利用平台,更有效地调试和排查问题。

一旦有了详细信息,我们会在新闻稿和网站上告知你,请继续关注!

命令行磁盘管理

在系统管理员的压力下,Microsoft 终于发布了一个可编写脚本的命令行工具,用于管理 Windows 2000 上的磁盘。 DiskPart 允许创建卷或分区、创建和中断镜像、扩展卷以及检查磁盘、卷和分区的详细信息。 很好的是,可从 http://www.microsoft.com/downloads/release.asp?ReleaseID=31167. 免费下载 DiskPart

WINHEC 2001 幻灯片在线

如果你错过了 Microsoft 的年度 Windows 硬件工程会议 (WINHEC),你仍然可以查看许多演示文稿的幻灯片。 访问 http://www.microsoft.com/winhec/sessions/driver.htm 以获取活动列表、说明和 Power Point 幻灯片的随附链接。 与会者普遍感兴趣的演讲包括驱动程序调试技术、筛选驱动程序以及 NDIS 迷你端口和中间驱动程序。

XP 中新的文件系统筛选器驱动程序接口

如果你有基于文件系统筛选器驱动程序的实时文件镜像、访问时病毒检查或分层存储管理产品,则你需要确保了解 Microsoft 在 Windows XP 中推出的会影响你的更改。

最大的更改与快速 I/O 例程有关,即文件系统驱动程序注册的特殊函数,以便内存管理器、缓存管理器和 I/O 系统可以执行文件系统 I/O,并与文件系统驱动程序交互,而无需生成 IRP。 有些人可能会惊讶地发现,有 6 个快速 I/O 例程总是绕过文件系统筛选驱动程序。 它们分别是:

FastIoAcquireFileExclusive
FastIoReleaseFile
FastIoAcquireFileForCcFlush
FastIoReleaseFileForCcFlush
FastIoAcquireFileForModWrite
FastIoReleaseFileForModWrite

内存管理器会在创建由文件支持的节之前和之后调用 FastIoAcquireFileExclusiveFastIoReleaseFile,其他内核模式子系统可以调用这些例程来暂时阻止创建节。 缓存管理器会在将文件的已修改缓存数据的全部或部分刷新回磁盘之前和之后调用 FastIoAcquireFileForCcFlushFastIoReleaseFileForCcFlush,内存管理器会在将脏映射文件页写回文件之前和之后调用 FastIoAcquireFileForModWriteFastIoReleaseFileForModWrite

内核模式子系统不直接调用快速 I/O 函数,而是使用代理文件系统运行时 (FsRtl) 例程。 大多数快速 I/O 函数的运行时例程通过调用目标文件对象的 IoGetRelatedDeviceObject 来获取对其筛选器设备对象的引用,从而调用筛选器驱动程序,然后调用筛选器对应的快速 I/O 例程,但与刚刚列出的快速 I/O 调用相关的运行时例程会改为调用 IoGetBaseFileSystemDeviceObject,后者会返回基础文件系统驱动程序的设备对象。 在我看来,运行时绕过这些函数的筛选器的原因有点蹩脚:运行时就是不信任筛选器驱动程序。 如果筛选器未将这些调用向下传递到基础文件系统驱动程序,则会导致文件系统数据损坏,几乎可以肯定会导致崩溃。 但筛选器驱动程序可以执行很多操作来导致崩溃。

在 Windows XP 中,FsRtl 推出了一个新函数 FsRtlRegisterFileSystemFilterCallbacks,筛选器驱动程序使用它来注册这些各种操作的回调。 这使得文件系统筛选器驱动程序能够检查这些操作,甚至使这些操作失败,而运行时可以确保在适当的时候始终调用基础文件系统驱动程序。 在哪里可以找到该函数的文档? Windows XP 可安装文件系统工具包,Microsoft 售价 995 美元:http://www.microsoft.com/ddk/ifskit/XPdefault.asp.

一键击溃 Windows

我之前在一些新闻稿中介绍了如何向 Windows 2000 注册表添加一项设置,使你能够通过特殊的键序列让正在运行的系统蓝屏崩溃,从而分析无法响应输入的系统。 如何使 Windows NT 和 Windows 2000 崩溃而无需在注册表中设置任何内容?

打开命令提示符窗口,将当前目录更改为启动驱动器的根目录(带有 \winnt 的驱动器),然后键入 dir /s。 当它运行时,键入 F7+Enter 几次,然后通过输入 Ctrl-C 来中止列出。 要么立即出现蓝屏,要么自动重启。 很酷吧! 不幸的是,与我之前称它为技巧不同,这个不是设计的行为,而是一个 bug,你可以在 http://www.WindowsITsecurity.com/articles/index.cfm?articleID=22037. 找到报告

对于错过包含击键崩溃设置的新闻稿的用户,请按照 Microsoft 调试工具帮助文件中的说明,将以下注册表值添加到 Windows 2000 或 XP 注册表:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters\CrashOnCtrlScrll DWORD 1

重新启动,可以通过在按住左侧 control 键的同时键入 scroll-lock 两次来使系统崩溃。

WINDOWS XP 预提取

Microsoft 将 Windows XP 的重点放在改进最终用户体验上,用户认为体验的很大一部分是计算机打开和可用的速度。 因此,Microsoft 开发人员花费了大量精力来提高启动过程和应用程序启动的性能。 他们通过多种方式来解决这一问题:第一种方法是串行和网络设备驱动程序并行初始化,这与 Windows 2000 不同,在 Windows 2000 中,它们以串行方式初始化。 第二,Winlogon 不再等待工作站服务(它本身会等待网络服务)变为可用之后才显示登录对话框并允许用户登录。 最后,他们将一种称为“预提取”的技术合并到启动过程和应用程序启动中。 我将简要介绍预提取的工作原理,并推荐 Microsoft 发布的有关启动优化的白皮书。

Windows(除实模式 Win3.1 之外的所有版本)是按需求分页的操作系统,当应用程序尝试访问它时,文件数据和代码会从磁盘“错误”到内存中。 数据和代码在“页面”级别区块中进行错误加载,其中页面的大小由 CPU 的内存管理硬件决定。 x86 上的页面大小为 4 KB。 预提取是在需要之前将数据页和代码页从磁盘引入内存的过程。

为了了解应预提取的内容,XP 缓存管理器会监视应用程序在启动时产生的页面错误。 默认情况下,它会跟踪启动过程的前 2 分钟和应用程序启动的前 10 秒。 收集的跟踪内容包括 NTFS 主文件表 (MFT) 元数据文件(如果应用程序访问的是 NTFS 卷上的文件或目录)上的故障、引用的文件和引用的目录,然后通过发出命名的事件对象信号来通知任务调度程序的预提取组件。 任务调度程序会调用 NtQuerySystemInformation,其中包含指定跟踪查询的信息类型,并将其读入。 对跟踪数据执行后处理后,任务调度程序会将其写入 \Windows\Prefetch 下的文件。 文件的名称是跟踪适用的应用程序的名称,后跟连接号和文件路径哈希的十六进制表示形式。 该文件具有“.pf”扩展名,因此示例为 NOTEPAD.EXE-AF43252301.PF。

该文件名规则的一个例外是存储启动跟踪的文件,该文件始终名为 NTOSBOOT-B00DFAAD.PF(十六进制兼容词“BAADF00D”的卷积,程序员经常使用它来表示未初始化的数据)。 系统或空闲进程中发生的任何故障都被视为启动的一部分,这很有意义,因为设备驱动程序是在系统进程中加载和初始化。

启动开始或应用程序执行时,进程管理器会调用缓存管理器,使其有机会执行预提取。 缓存管理器在预提取目录中查找,以查看是否存在有关预提取方案的跟踪文件。 当缓存管理器调用 NTFS 来预提取任何 MFT 元数据文件引用时,它会读取所引用的每个目录的内容,最后,它会打开引用的每个文件,并使用内存管理器来读取在跟踪中指定的且不在内存中的任何数据和代码。 内存管理器以异步方式启动所有读取,然后等待它们完成,之后再让应用程序继续启动。

此方案如何提供性能优势? 答案在于,在正常启动或应用程序启动时,错误的发生顺序是,有些页面是从文件的一个部分引入的,有些来自另一个文件,有些又来自另一个不同的文件,然后有些来自一个目录,以此类推。 这种跳跃行为直接对应于磁盘上的跳跃行为,Microsoft 通过分析得知磁盘寻道时间是减慢启动和应用程序启动时间的主要因素。 预提取过程会一次性读取特定文件或目录的全部数据,然后再读取下一个文件或目录,这样就几乎消除了寻道过程。

为了进一步减少寻道,任务调度程序会每隔三天左右按启动或应用程序启动期间文件和目录被引用的顺序整理一个文件和目录列表,并将该列表存储在名为 \Windows\Prefech\Layout.ini 的文件中。 然后,它会使用命令行选项启动系统碎片整理程序,该选项指示碎片整理程序根据文件内容进行碎片整理,而不是执行完整的碎片整理。 碎片整理程序会在卷上找到一个大到足以容纳所有列出的文件和目录的连续区域,然后将它们移动到该区域中,以便将它们逐个存储。

这些是 XP 预提取方案的基础知识,Microsoft 报告称,它大大加快了启动过程(你实际上可以看到 XP 启动速度比 Windows 2000 快得多)。 可以在 http://www.microsoft.com/hwdev/fastboot/. 的白皮书中找到有关预提取和其他快速启动增强功能的详细信息 此外,Dave Solomon 和我已经开始撰写“Inside Windows 2000”的 XP 修订版(在春季中旬出版),你会在那里找到更详细的说明。

WINDOWS .NET CONNECTIONS

错过 TechEd 的朋友可以在 10 月 3 日亚利桑那州斯科茨代尔举行的 Windows .NET Connections 会议上听到我的演讲。 我会就 Windows NT/2000 故障转储分析和 Windows XP 中的内核更改发表演讲。 出席会议的其他演讲者包括 Windows 2000 杂志的撰稿编辑 Mark Minasi 和 Sean Daily。 如果你参加了会议,请告诉我你是从新闻稿中得知这次会议的。

你可以查看我的演讲摘要,并在 http://www.sysinternals.com/ntw2k/info/talk.shtml. 找到 Windows .NET Connections 网站的链接

即将推出

我的 ITANIUM 体验

Microsoft 借给我一个 Itanium 系统,让我可以将 Sysinternals 实用工具移植到 Win64。 顺便说一下,这台计算机具有一些令人印象深刻的规格:2 个 733 MHz 处理器和 8 GB (!) RAM。 下次我会告诉你我的移植体验,包括我必须对各种实用工具所做的更改,以使它们能在 Win64 上工作。


感谢阅读 Sysinternals 新闻稿。

发布于 2001 年 8 月 20 日,星期一,晚上 7:03,ottoh

[新闻稿存档 ^][< 第 3 卷第 1 号][第 4 卷第 1 号 >]