书籍详情
深入解析Windows操作系统:Microsoft Windows Server 2003/Windows XP/Windows 2000技术内幕(第4版)
作者:(美)Mark E.Russinovich, David A.Solomon;潘爱民译
出版社:电子工业出版社
出版时间:2007-04-01
ISBN:9787121039690
定价:¥99.00
购买这本书可以去
内容简介
本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构信息以及内部工作细节。本书针对Windows Server 2003、Windows XP和Windows 2000做了全面更新,通过许多练习实验让你直接感受到Windows的内部行为。另外,本书还介绍了一些高级诊断技术,以便使你的系统运行得更加平稳和高效。无论你是开发人员还是系统管理员,你都可以在本书中找到一些关键的、有关体系结构方面的知识,通过这些知识你可以更好地做系统设计、调试,以及性能优化。全书内容丰富、信息全面,主要包括的Windows操作系统深度知识有:理解Windows的关键机制,包括系统服务分发和调度机制、启动和停机,以及注册表;挖掘Windows的安全模型,包括访问控制、特权和审计;利用内核调试器和其他的工具来检查内部系统结构;检查与进程、线程和作业相关的数据结构和算法;观察Windows如何管理虚拟内存和物理内存;理解NTFS的操作和格式,诊断文件系统访问问题;从上往下查看Windows的网络栈,包括映射、API、名称解析和协议驱动程序;诊断引导问题,执行崩溃分析。本书适合广大Windows平台开发人员、IT专业从业人员等参考使用。
作者简介
潘爱民,浙江海宁人,获得了南开大学数学学士学位,清华大学工学硕士学位,以及北京大学计算机科学博士学位。他从中学时代开始接触计算机编程,经历了从DOS到Windows各种版本的发展历程。潘爱民曾经长期从事软件技术的研究和开发工作,撰写了大量软件技术文章,1999年曾经是《微电脑世界》杂志社的合作专家。他著写了《COM原理与应用》(1999年出版),翻译了多部经典名作,如《Visual C++技术内幕》(第四、六版)、《C++ Primer中文版》(第三版)、《COM本质论》、《计算机网络》(第四版)等。从2001年开始,潘爱民在北京大学计算机科学技术系承担研究生课程教学,共讲授了三门课程:《组件技术》、《网络与信息安全》和《程序开发环境分析与实践》,深受学生欢迎。2006年秋季在清华大学软件科学实验班讲授《程序设计与算法基础》课程。 潘爱民获得了2001年微软亚洲研究院“微软学者”称号,2002年度北京大学优秀教学奖。他现在微软亚洲研究院从事系统与安全方向的研究工作。
目录
第1章 概念和工具 1
1.1 Windows操作系统的版本 1
1.2 基础概念和术语 3
Windows API 3
服务、函数和例程 5
进程、线程和作业 6
虚拟内存 14
内核模式和用户模式 16
终端服务及多个会话 21
对象和句柄 22
安全性 23
注册表 24
Unicode 25
1.3 挖掘Windows内部机理 25
性能工具 27
Windows支持工具箱 27
Windows资源工具箱 27
内核调试 28
Platform SDK 33
DDK(设备驱动程序开发工具) 34
Sysinternals工具 34
1.4 本章总结 34
第2章 系统结构 35
2.1 需求和设计目标 35
2.2 操作系统模型 36
2.3 总体结构 37
可移植性 40
对称多处理 41
可伸缩性 46
客户和服务器版本之间的差异 47
检查版本 49
2.4 关键的系统组件 51
环境子系统和子系统DLL 53
硬件抽象层(HAL) 67
设备驱动程序 69
系统进程 75
2.5 本章总结 84
第3章 系统机制 85
3.1 陷阱分发 85
中断分发 87
异常分发 109
系统服务分发 119
3.2 对象管理器 124
执行体对象 126
对象结构 128
3.3 同步 149
高IRQL的同步 151
低IRQL的同步 155
3.4 系统辅助线程 166
3.5 Windows全局标志 168
3.6 本地过程调用(LPC) 171
3.7 内核事件追踪 175
3.8 Wow64 178
Wow64进程地址空间布局结构 179
系统调用 179
异常分发 179
用户回调 179
文件系统重定向 180
注册表的重定向和反射 180
I/O控制请求 181
16位安装器应用程序 182
打印 182
一些限制 182
3.9 本章总结 182
第4章 管理机制 183
4.1 注册表 183
查看和修改注册表 183
注册表用法 184
注册表数据类型 185
注册表逻辑结构 186
注册表问题的诊断 192
注册表的内部机理 197
4.2 服务 211
服务应用 212
服务账户 217
服务控制管理器 223
服务启动 225
启动错误 229
接受当前引导和“最后已知的好控制集” 230
服务失败 231
服务停机 232
共享的服务进程 233
服务控制程序 236
4.3 Windows管理规范 237
WMI体系结构 237
提供者 239
公共信息模型(CIM)和可管理对象的格式语言 240
WMI名字空间 243
类关联 244
WMI实现 247
WMI安全性 248
4.4 本章总结 249
第5章 启动和停机 251
5.1 引导过程 251
x86和x64引导准备 251
x86/x64引导扇区和Ntldr 255
IA64引导过程 264
初始化内核和执行体子系统 266
Smss、Csrss和Winlogon 269
自动启动的映像文件 273
5.2 引导和启动问题的故障检查 274
最后已知的好配置 274
安全模式 274
安全模式下的驱动程序加载 275
恢复控制台(Recovery Console) 279
解决常见的引导问题 281
5.3 停机 286
5.4 本章总结 288
第6章 进程、线程和作业 289
6.1 进程的内部机理 289
数据结构 289
内核变量 297
性能计数器 297
有关的函数 298
6.2 CreateProcess的流程 300
阶段1:打开将要被执行的映像 302
阶段2:创建Windows执行体进程对象 304
阶段3:创建初始线程,以及它的栈和执行环境 308
阶段4:将新进程通知Windows子系统 309
阶段5:启动初始线程的执行 310
阶段6:在新进程环境下执行进程初始化 310
6.3 线程的内部机理 313
数据结构 313
内核变量 320
性能计数器 321
有关的函数 322
一个线程的产生 322
6.4 检查线程活动 323
6.5 线程调度 325
Windows调度的概述 326
优先级别 327
Windows调度API 330
有关的工具 331
实时优先级 333
线程状态 334
分发器数据库 338
时限 340
调度情形 345
环境切换 347
空闲(Idle)线程 348
优先级提升 348
多处理器系统 357
多处理器的线程调度算法 366
6.6 作业对象 369
6.7 本章总结 374
第7章 内存管理 375
7.1 内存管理器简介 375
内存管理器组件 376
内部同步 377
配置内存管理器 378
检查内存的使用情况 378
7.2 内存管理器提供的服务 382
大页面和小页面 382
保留的和提交的页面 384
锁住内存 385
分配粒度 385
共享内存和映射文件 386
保护内存 388
“不可执行”页面保护 390
写时复制 392
堆管理器 394
地址窗口扩展 399
7.3 系统内存池 401
配置内存池的大小 401
监视内存池的使用 404
预读列表(Look-Aside List) 408
驱动程序检验器(Driver Verifier) 409
7.4 虚拟地址空间的布局结构 413
x86用户地址空间的布局结构 415
x86系统地址空间的布局结构 417
x86会话空间 418
系统页表项(PTE,Page Table Entry) 421
64位地址空间布局结构 422
7.5 地址转译 425
x86虚拟地址转译 425
地址转译快查缓冲区 434
物理地址扩展(PAE) 435
IA-64虚拟地址转译 437
x64虚拟地址转译 438
7.6 页面错误处理 439
无效PTE 440
原型PTE 441
页面换入I/O 443
冲突的页面错误 444
页面文件 444
7.7 虚拟地址描述符 448
7.8 内存区对象 450
7.9 工作集 457
按需换页 458
7.10 逻辑预取器 458
放置策略 462
工作集管理 463
平衡集管理器和交换器 466
系统工作集 467
7.11 页面帧编号数据库 469
页面列表的动态变化 472
已修改页面写出器 475
PFN数据结构 476
低内存通知和高内存通知 479
7.12 本章总结 483
第8章 安全性 485
8.1 安全系统组件 488
8.2 保护对象 492
访问检查 493
安全描述符和访问控制 506
8.3 账户权限和特权 516
账户权限 517
特权 518
超级特权 523
8.4 安全审计 524
8.5 登录(Logon) 526
Winlogon初始化 528
用户登录步骤 529
8.6 软件限制策略 533
8.7 本章总结 535
第9章 I/O系统 537
9.1 I/O系统组件 537
I/O管理器 539
典型的I/O处理过程 540
9.2 设备驱动程序 541
设备驱动程序的类型 541
驱动程序的结构 548
驱动程序对象和设备对象 550
打开设备 555
9.3 I/O处理 561
I/O类型 561
映射文件I/O和文件缓存 564
I/O请求包 564
针对单层驱动程序的I/O请求 569
针对分层的驱动程序的I/O请求 577
I/O完成端口 585
驱动程序检验器(Driver Verifier) 589
9.4 即插即用(PnP)管理器 590
即插即用支持的级别 591
驱动程序对于即插即用的支持 592
驱动程序加载、初始化和安装 594
驱动程序安装 603
9.5 电源管理器 607
电源管理器的操作 609
驱动程序的电源操作 610
驱动程序对于设备电源的控制 613
9.6 本章总结 613
第10章 存储管理 615
10.1 有关存储的术语 615
10.2 磁盘驱动程序 616
Ntldr 616
磁盘类、端口和小端口驱动程序 617
磁盘设备对象 620
分区管理器 622
10.3 卷的管理 622
基本磁盘 624
动态磁盘 626
多分区卷的管理 632
卷名字空间 638
卷的I/O操作 646
虚拟磁盘服务 648
卷影像(shadow)拷贝服务 649
10.4 本章总结 654
第11章 缓存管理器 655
11.1 缓存管理器的关键特性 655
单个中心化的系统缓存 656
内存管理器 656
缓存一致性 656
虚拟块缓存 658
流式缓存机制 658
对可恢复文件系统的支持 658
11.2 缓存的虚拟内存管理 660
11.3 缓存的大小 662
LargeSystemCache 662
缓存的虚拟大小 663
缓存的工作集大小 665
缓存的物理大小 667
11.4 缓存的数据结构 668
系统范围的缓存数据结构 669
针对每个文件的缓存数据结构 670
11.5 文件系统接口 674
从缓存中来回拷贝数据 676
通过映射和锁定接口进行缓存 677
通过直接内存访问接口进行缓存 678
11.6 快速I/O 679
11.7 预读(Read Ahead)和滞后写(Write Behind) 682
智能预读 682
回写缓存(Write-Back Caching)和延迟写(Lazy Writing) 683
写节流(Write Throttling) 686
系统线程 687
11.8 本章总结 688
第12章 文件系统 689
12.1 Windows文件系统格式 690
CDFS 690
UDF 691
FAT12、FAT16和FAT32 691
NTFS 694
12.2 文件系统驱动程序总体结构 694
本地FSD 695
远程FSD 696
文件系统操作 700
文件系统过滤型驱动程序 705
12.3 诊断文件系统的问题 711
Filemon的基本和高级模式 711
Filemon诊断技巧 712
12.4 NTFS设计目标和特性 717
高端(High-End)文件系统的需求 717
NTFS的高级特性 719
12.5 NTFS文件系统驱动程序 729
12.6 NTFS在磁盘上的结构 732
卷(volume) 732
簇(cluster) 732
主文件表(MFT) 733
文件引用号 739
文件纪录 740
文件名 742
驻留的和非驻留的属性 744
数据压缩和稀疏文件 747
变化日志文件 752
索引 753
对象ID 754
配额跟踪 755
统一的安全性 756
重解析点 758
12.7 NTFS的恢复支持 758
文件系统设计的演变 759
日志记录 761
恢复 767
NTFS的坏簇恢复 771
12.8 加密文件系统(EFS)安全性 775
第一次加密一个文件 778
解密过程 783
加密文件的备份 784
12.9 本章总结 785
第13章 网络 787
13.1 Windows的网络总体结构 787
OSI参考模型 787
Windows网络组件 789
13.2 网络API 791
Windows套接字(Windows Sockets) 791
远过程调用 798
Web访问API 803
命名管道和邮件槽 804
NetBIOS 811
NetBIOS的操作 812
其他的网络API 813
13.3 多重定向器支持 815
多提供者转发器 816
多UNC提供者 818
13.4 名称解析 820
域名系统 820
Windows Internet名称服务 820
13.5 协议驱动程序 821
TCP/IP的扩展 824
13.6 NDIS驱动程序 828
NDIS小端口的变化形式 832
面向连接的NDIS 832
外接NDIS(Remote NDIS) 835
QOS 836
13.7 绑定 838
13.8 分层的网络服务 839
远程访问(Remote Access) 839
活动目录 840
网络负载平衡 841
文件复制服务 843
分布式文件系统 843
13.9 本章总结 844
第14章 崩溃转储分析 845
14.1 Windows为什么会崩溃 845
14.2 蓝屏 846
14.3 崩溃转储文件 849
崩溃转储的生成 852
14.4 Windows错误报告 853
14.5 在线崩溃分析 854
14.6 基本的崩溃转储分析 855
Notmyfault 855
基本的崩溃转储分析 856
详细的分析 858
14.7 使用崩溃诊断工具 860
缓冲区溢出和特殊内存池 861
代码改写和系统代码写保护 863
14.8 高级的崩溃转储分析 864
栈破坏 865
挂起的系统或无响应的系统 866
当没有崩溃转储时 869
术语表 871
术语对照表 895
索引 901
1.1 Windows操作系统的版本 1
1.2 基础概念和术语 3
Windows API 3
服务、函数和例程 5
进程、线程和作业 6
虚拟内存 14
内核模式和用户模式 16
终端服务及多个会话 21
对象和句柄 22
安全性 23
注册表 24
Unicode 25
1.3 挖掘Windows内部机理 25
性能工具 27
Windows支持工具箱 27
Windows资源工具箱 27
内核调试 28
Platform SDK 33
DDK(设备驱动程序开发工具) 34
Sysinternals工具 34
1.4 本章总结 34
第2章 系统结构 35
2.1 需求和设计目标 35
2.2 操作系统模型 36
2.3 总体结构 37
可移植性 40
对称多处理 41
可伸缩性 46
客户和服务器版本之间的差异 47
检查版本 49
2.4 关键的系统组件 51
环境子系统和子系统DLL 53
硬件抽象层(HAL) 67
设备驱动程序 69
系统进程 75
2.5 本章总结 84
第3章 系统机制 85
3.1 陷阱分发 85
中断分发 87
异常分发 109
系统服务分发 119
3.2 对象管理器 124
执行体对象 126
对象结构 128
3.3 同步 149
高IRQL的同步 151
低IRQL的同步 155
3.4 系统辅助线程 166
3.5 Windows全局标志 168
3.6 本地过程调用(LPC) 171
3.7 内核事件追踪 175
3.8 Wow64 178
Wow64进程地址空间布局结构 179
系统调用 179
异常分发 179
用户回调 179
文件系统重定向 180
注册表的重定向和反射 180
I/O控制请求 181
16位安装器应用程序 182
打印 182
一些限制 182
3.9 本章总结 182
第4章 管理机制 183
4.1 注册表 183
查看和修改注册表 183
注册表用法 184
注册表数据类型 185
注册表逻辑结构 186
注册表问题的诊断 192
注册表的内部机理 197
4.2 服务 211
服务应用 212
服务账户 217
服务控制管理器 223
服务启动 225
启动错误 229
接受当前引导和“最后已知的好控制集” 230
服务失败 231
服务停机 232
共享的服务进程 233
服务控制程序 236
4.3 Windows管理规范 237
WMI体系结构 237
提供者 239
公共信息模型(CIM)和可管理对象的格式语言 240
WMI名字空间 243
类关联 244
WMI实现 247
WMI安全性 248
4.4 本章总结 249
第5章 启动和停机 251
5.1 引导过程 251
x86和x64引导准备 251
x86/x64引导扇区和Ntldr 255
IA64引导过程 264
初始化内核和执行体子系统 266
Smss、Csrss和Winlogon 269
自动启动的映像文件 273
5.2 引导和启动问题的故障检查 274
最后已知的好配置 274
安全模式 274
安全模式下的驱动程序加载 275
恢复控制台(Recovery Console) 279
解决常见的引导问题 281
5.3 停机 286
5.4 本章总结 288
第6章 进程、线程和作业 289
6.1 进程的内部机理 289
数据结构 289
内核变量 297
性能计数器 297
有关的函数 298
6.2 CreateProcess的流程 300
阶段1:打开将要被执行的映像 302
阶段2:创建Windows执行体进程对象 304
阶段3:创建初始线程,以及它的栈和执行环境 308
阶段4:将新进程通知Windows子系统 309
阶段5:启动初始线程的执行 310
阶段6:在新进程环境下执行进程初始化 310
6.3 线程的内部机理 313
数据结构 313
内核变量 320
性能计数器 321
有关的函数 322
一个线程的产生 322
6.4 检查线程活动 323
6.5 线程调度 325
Windows调度的概述 326
优先级别 327
Windows调度API 330
有关的工具 331
实时优先级 333
线程状态 334
分发器数据库 338
时限 340
调度情形 345
环境切换 347
空闲(Idle)线程 348
优先级提升 348
多处理器系统 357
多处理器的线程调度算法 366
6.6 作业对象 369
6.7 本章总结 374
第7章 内存管理 375
7.1 内存管理器简介 375
内存管理器组件 376
内部同步 377
配置内存管理器 378
检查内存的使用情况 378
7.2 内存管理器提供的服务 382
大页面和小页面 382
保留的和提交的页面 384
锁住内存 385
分配粒度 385
共享内存和映射文件 386
保护内存 388
“不可执行”页面保护 390
写时复制 392
堆管理器 394
地址窗口扩展 399
7.3 系统内存池 401
配置内存池的大小 401
监视内存池的使用 404
预读列表(Look-Aside List) 408
驱动程序检验器(Driver Verifier) 409
7.4 虚拟地址空间的布局结构 413
x86用户地址空间的布局结构 415
x86系统地址空间的布局结构 417
x86会话空间 418
系统页表项(PTE,Page Table Entry) 421
64位地址空间布局结构 422
7.5 地址转译 425
x86虚拟地址转译 425
地址转译快查缓冲区 434
物理地址扩展(PAE) 435
IA-64虚拟地址转译 437
x64虚拟地址转译 438
7.6 页面错误处理 439
无效PTE 440
原型PTE 441
页面换入I/O 443
冲突的页面错误 444
页面文件 444
7.7 虚拟地址描述符 448
7.8 内存区对象 450
7.9 工作集 457
按需换页 458
7.10 逻辑预取器 458
放置策略 462
工作集管理 463
平衡集管理器和交换器 466
系统工作集 467
7.11 页面帧编号数据库 469
页面列表的动态变化 472
已修改页面写出器 475
PFN数据结构 476
低内存通知和高内存通知 479
7.12 本章总结 483
第8章 安全性 485
8.1 安全系统组件 488
8.2 保护对象 492
访问检查 493
安全描述符和访问控制 506
8.3 账户权限和特权 516
账户权限 517
特权 518
超级特权 523
8.4 安全审计 524
8.5 登录(Logon) 526
Winlogon初始化 528
用户登录步骤 529
8.6 软件限制策略 533
8.7 本章总结 535
第9章 I/O系统 537
9.1 I/O系统组件 537
I/O管理器 539
典型的I/O处理过程 540
9.2 设备驱动程序 541
设备驱动程序的类型 541
驱动程序的结构 548
驱动程序对象和设备对象 550
打开设备 555
9.3 I/O处理 561
I/O类型 561
映射文件I/O和文件缓存 564
I/O请求包 564
针对单层驱动程序的I/O请求 569
针对分层的驱动程序的I/O请求 577
I/O完成端口 585
驱动程序检验器(Driver Verifier) 589
9.4 即插即用(PnP)管理器 590
即插即用支持的级别 591
驱动程序对于即插即用的支持 592
驱动程序加载、初始化和安装 594
驱动程序安装 603
9.5 电源管理器 607
电源管理器的操作 609
驱动程序的电源操作 610
驱动程序对于设备电源的控制 613
9.6 本章总结 613
第10章 存储管理 615
10.1 有关存储的术语 615
10.2 磁盘驱动程序 616
Ntldr 616
磁盘类、端口和小端口驱动程序 617
磁盘设备对象 620
分区管理器 622
10.3 卷的管理 622
基本磁盘 624
动态磁盘 626
多分区卷的管理 632
卷名字空间 638
卷的I/O操作 646
虚拟磁盘服务 648
卷影像(shadow)拷贝服务 649
10.4 本章总结 654
第11章 缓存管理器 655
11.1 缓存管理器的关键特性 655
单个中心化的系统缓存 656
内存管理器 656
缓存一致性 656
虚拟块缓存 658
流式缓存机制 658
对可恢复文件系统的支持 658
11.2 缓存的虚拟内存管理 660
11.3 缓存的大小 662
LargeSystemCache 662
缓存的虚拟大小 663
缓存的工作集大小 665
缓存的物理大小 667
11.4 缓存的数据结构 668
系统范围的缓存数据结构 669
针对每个文件的缓存数据结构 670
11.5 文件系统接口 674
从缓存中来回拷贝数据 676
通过映射和锁定接口进行缓存 677
通过直接内存访问接口进行缓存 678
11.6 快速I/O 679
11.7 预读(Read Ahead)和滞后写(Write Behind) 682
智能预读 682
回写缓存(Write-Back Caching)和延迟写(Lazy Writing) 683
写节流(Write Throttling) 686
系统线程 687
11.8 本章总结 688
第12章 文件系统 689
12.1 Windows文件系统格式 690
CDFS 690
UDF 691
FAT12、FAT16和FAT32 691
NTFS 694
12.2 文件系统驱动程序总体结构 694
本地FSD 695
远程FSD 696
文件系统操作 700
文件系统过滤型驱动程序 705
12.3 诊断文件系统的问题 711
Filemon的基本和高级模式 711
Filemon诊断技巧 712
12.4 NTFS设计目标和特性 717
高端(High-End)文件系统的需求 717
NTFS的高级特性 719
12.5 NTFS文件系统驱动程序 729
12.6 NTFS在磁盘上的结构 732
卷(volume) 732
簇(cluster) 732
主文件表(MFT) 733
文件引用号 739
文件纪录 740
文件名 742
驻留的和非驻留的属性 744
数据压缩和稀疏文件 747
变化日志文件 752
索引 753
对象ID 754
配额跟踪 755
统一的安全性 756
重解析点 758
12.7 NTFS的恢复支持 758
文件系统设计的演变 759
日志记录 761
恢复 767
NTFS的坏簇恢复 771
12.8 加密文件系统(EFS)安全性 775
第一次加密一个文件 778
解密过程 783
加密文件的备份 784
12.9 本章总结 785
第13章 网络 787
13.1 Windows的网络总体结构 787
OSI参考模型 787
Windows网络组件 789
13.2 网络API 791
Windows套接字(Windows Sockets) 791
远过程调用 798
Web访问API 803
命名管道和邮件槽 804
NetBIOS 811
NetBIOS的操作 812
其他的网络API 813
13.3 多重定向器支持 815
多提供者转发器 816
多UNC提供者 818
13.4 名称解析 820
域名系统 820
Windows Internet名称服务 820
13.5 协议驱动程序 821
TCP/IP的扩展 824
13.6 NDIS驱动程序 828
NDIS小端口的变化形式 832
面向连接的NDIS 832
外接NDIS(Remote NDIS) 835
QOS 836
13.7 绑定 838
13.8 分层的网络服务 839
远程访问(Remote Access) 839
活动目录 840
网络负载平衡 841
文件复制服务 843
分布式文件系统 843
13.9 本章总结 844
第14章 崩溃转储分析 845
14.1 Windows为什么会崩溃 845
14.2 蓝屏 846
14.3 崩溃转储文件 849
崩溃转储的生成 852
14.4 Windows错误报告 853
14.5 在线崩溃分析 854
14.6 基本的崩溃转储分析 855
Notmyfault 855
基本的崩溃转储分析 856
详细的分析 858
14.7 使用崩溃诊断工具 860
缓冲区溢出和特殊内存池 861
代码改写和系统代码写保护 863
14.8 高级的崩溃转储分析 864
栈破坏 865
挂起的系统或无响应的系统 866
当没有崩溃转储时 869
术语表 871
术语对照表 895
索引 901
猜您喜欢