内容简介
《深入解析Windows操作系统:第6版(上册)》是的操作系统内核专家Mark Russinovich和David Solomon、Allen Ionescu撰写的关于Windows操作系统原理的版著作,全面深入地阐述了Windows操作系统的整体结构及内部工作细节。本书针对Windows 7、Windows Server 2008 R2做了全面更新,通过许多练习实验让你直接感受到Windows的内部行为。另外,本书还介绍了一些诊断技术,以便使系统运行得更加平稳和高校。无论你是开发人员还是系统管理员,都可以在本书中找到一些关键的、有关体系结构方面的知识,从而更好地做系统设计、调试,以及性能优化。
《深入解析Windows操作系统:第6版(上册)》适合广大Windows平台开发人员、IT专业从业人员等参考阅读。
目录
译者序 III
引言 V
本书的结构 V
本书的历史 V
第6版的变化 VI
练习实验 VI
本书没有覆盖的话题 VI
提醒和告诫 VII
致谢 VII
勘误和本书支持 IX
倾听您的声音 IX
保持联系 IX
第1章概念和工具 1
1.1 WINDOWS操作系统的版本 1
1.2 基础概念和术语 2
WINDOWS API 2
服务、函数和例程 4
进程、线程和作业 5
虚拟内存 13
内核模式和用户模式 15
终端服务及多个会话 19
对象和句柄 20
安全性 21
注册表 22
UNICODE 23
1.3 挖掘WINDOWS内部机理 23
性能监视器 24
内核调试 25
WINDOWS软件开发工具(WINDOWS SDK) 30
WINDOWS驱动程序开发工具 30
SYSINTERNALS工具 31
1.4 本章总结 31
第2章系统架构 33
2.1 需求和设计目标 33
2.2 操作系统模型 34
2.3 总体架构 35
可移植性 37
对称多处理 38
可伸缩性 40
客户机和服务器版本之间的差异 41
检查版本 44
2.4 关键的系统组件 46
环境子系统和子系统DLL 47
NTDLL.DLL 53
执行体 54
内核 56
硬件抽象层(HAL) 60
设备驱动程序 62
系统进程 67
2.5 本章总结 77
第3章系统机制 79
3.1 陷阱分发 79
中断分发 81
定时器处理 110
异常分发 120
系统服务分发 130
3.2 对象管理器 137
执行体对象 139
对象结构 142
3.3 同步 174
高IRQL的同步 175
低IRQL的同步 180
3.4 系统辅助线程 202
3.5 WINDOWS全局标志 205
3.6 本地过程调用(ALPC) 206
连接模型 207
消息模型 208
异步操作 211
视图、区域和内存区 211
属性 212
BLOB、句柄和资源 213
安全性 214
性能 214
调试和跟踪 215
3.7 内核事件跟踪 217
3.8 WOW64 220
WOW64进程地址空间布局结构 221
系统调用 221
异常分发 222
用户APC分发 222
控制台支持 222
用户回调 222
文件系统重定向 222
注册表的重定向 223
I/O控制请求 224
16位安装器应用程序 225
打印 225
一些限制 225
3.9 用户模式调试 226
内核支持 226
原生支持 227
WINDOWS子系统支持 229
3.10 映像加载器 229
进程初始化早期工作 231
DLL名称解析 232
DLL名称重定向 233
已加载模块数据库 235
导入信息解析 239
导入过程初始化的后期处理 241
SWITCHBACK 242
API集 243
3.11 监督者(HYPER-V) 245
分区 246
父分区 247
子分区 249
硬件仿真和支持 251
3.12 内核事务管理器 265
3.13 热补丁支持 267
3.14 内核补丁保护 269
3.15 代码完整性 271
3.16 本章总结 272
第4章管理机制 273
4.1 注册表 273
查看和修改注册表 273
注册表用法 274
注册表数据类型 275
注册表逻辑结构 276
事务型注册表(TXR) 284
监视注册表活动 285
注册表的内部机理 289
4.2 服务 301
服务应用 301
服务账户 307
服务控制管理器 318
服务启动 320
启动错误 324
接受当前引导和“已知的好控制集” 325
服务失败 327
服务停机 328
共享的服务进程 329
服务标记 333
4.3 统一的后台进程管理器 333
初始化 334
UBPM API 335
提供者注册 335
消费者注册 337
TASKHOST 338
服务控制程序 339
4.4 WINDOWS管理设施 340
提供者 341
公共信息模型(CIM)和可管理对象的格式语言 343
类关联 347
WMI实现 348
WMI安全性 350
4.5 WINDOWS诊断基础设施
摘要与插图
在所有介绍Windows操作系统的图书中,我相信都离不开Windows Internals提供的信息。除公开可见到的Windows源代码以外,本书是披露Windows系统机理详尽的一份资料,尤其对于Windows的每一份版本。本书的第6版专门针对Windows 7和Windows Server 2008 R2进行了大幅度更新。由于篇幅的增加,这一版本改成上下两册来发行,由此也可见本书的“分量”。在Windows操作系统的发展历程中,Windows 7是一个具有特殊意义的版本。它是目前复杂的单机操作系统,无论从代码规模、代码复杂度,到系统适应场景的复杂程度,都超过了以前所有的版本。从某种意义上,Windows 7代表了软件工程的一个——人类可以构造出如此复杂且能稳定工作的软件系统!与此相对应,要用一本书来涵盖其中的各种机理也同样是一项艰巨的任务,本书作者们基于他们过去所做的大量工作,以及对Windows的深入理解,出色地完成了这一诠释工作。
本书的性毋庸置疑。Mark Russinovich因其在Windows内核探索方面所做出的贡献而成为Microsoft Fellow,本书中用到的大量Sysinternals工具均出自他的手笔。David Solomon从事Windows NT内部机理的培训有十多年经历,他不仅在各地培训Windows系统程序员,甚至也为Microsoft的内部员工提供Windows内核培训服务,他从本书第2版开始奠定了卓有成效的叙述风格。Alex Ionescu是一名年轻的黑客型Windows专家,曾经为ReactOS(一个开源的操作系统项目,旨在兼容Windows 2000/XP/Server 2003的应用程序)编写了绝大多数内核代码。他曾经发现和报告了一些与Windows内核相关的软件漏洞,也跟David Solomon一起教授Windows内部机理的课程。有如此强大的作者组合,再加上Microsoft的内部支持(包括提供源代码,以及Windows开发组的细致解释),本书无疑成为Windows版本的第一手技术资料。
每一个对Windows操作系统有浓厚兴趣的读者都不应该错过这本书。那么,如何发挥本书的作用呢?先,本书并非如教材那样循序渐进,而是全景式地讲述了Windows的系统机理。第3章和第4章介绍总体结构,尤其是系统内部的核心机制和管理机制,值得每个人认真阅读,其他后续的章节可以有选择地阅读。其次,阅读本书之前有操作系统的基础知识,以及一定程度的Windows编程技能,否则难以深刻领会Windows中大量的精妙设计。再次,在阅读过程中,能动手做一做书中描述的实验。做这些实验的门槛并不高,但效果好,可以让你直观地领会Windows内部的一些设计和实现。
我与这本书的渊源是从第4版(针对Windows XP/Server 2003)开始的,当时博文视点武汉分部的周筠老师强烈我来翻译第4版。后来第5版(针对Windows Vista/Server 2008)原版出版后,又交给我来翻译。由于第5版与第6版之间时间差较短,内容更新也相对较少,在我手上又拖了太长时间,导致第5版中文版失去了出版时机。很抱歉,辜负了周筠老师的重托。我也要感谢电子工业出版社的编辑刘皎,依然把第6版的翻译工作交给了我,使我有机会弥补第5版中文版未能出版之缺憾。
本书的翻译工作由范德成和我共同完成,其中第1~4章由我完成,第5~7章由范德成完成。全书由我统稿。Windows的各种技术涉及大量的术语,甚至一些全新的技术术语,为此我们尽可能按照中文习惯来表达这些术语,或适当地保留一些专有名词。若在译稿中有任何不妥之处,请读者原谅。此外,本书正文之后列出了英汉习惯用语对照表,以方便阅读。
潘爱民
2012年12月,于北京西二旗