搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
Windows内核原理与实现
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787121105289
  • 作      者:
    潘爱民著
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2010
收藏
编辑推荐
  微软亚洲研究院资深研究员潘爱民老师十年磨一剑之作
  用真实的源代码剖析Windows操作系统核心原理
  Windows内核专家Dave Probert作序力荐
展开
内容介绍
  《Windows内核原理与实现》从操作系统原理的角度,详细解析了Windows如何实现现代操作系统的各个关键部件,包括进程、线程、物理内存和虚拟内存的管理,Windows中的同步和并发性支持,以及Windows的I/O模型。在介绍这些关键部件时,《Windows内核原理与实现》直接以Windows的源代码(WRK, Windows Research Kernel)为参照,因而读者可以了解像Windows这样的复杂操作系统是如何在x86处理器上运行的。
  在内容选取方面,《Windows内核原理与实现》侧重于Windows内核中最基本的系统部件,同时也兼顾到作为一个操作系统的完整性,所以,《Windows内核原理与实现》也介绍了像存储体系、网络、Windows环境子系统等,这些虽然并不位于内核模块但却支撑整个Windows运行的重要部件。在《Windows内核原理与实现》最后,也介绍了Windows Server 2003以后的内核发展和变化。
  虽然书中有大量关于Windows代码实现的描述,但是《Windows内核原理与实现》并没有罗列WRK中的代码,即使读者不对照WRK的源代码,也可以从这些章节的描述中理解Windows的实现机理。在每一个技术专题的介绍中,《Windows内核原理与实现》几乎都提供了一个框架图,并且有关键细节的实现分析,这样做的意图是让读者既能够对一项技术有总体上的把握,也通晓关键的实现细节。
  Windows操作系统已经有20年历史了,市面上有大量关于Windows技术的文档和书籍,但是,真正从源代码来诠释Windows底层机理的,《Windows内核原理与实现》还是第一次尝试。在《Windows内核原理与实现》覆盖的内容中,有相当一部分是第一次以文字形式披露出来的,期望这些内容能消除人们对于Windows的神秘感。
  写作《Windows内核原理与实现》的目的是让对Windows有好奇心的人真正了解到Windows中的核心机理,让计算机专业的学生和老师,以及系统软件工程师可以快速地领略到Windows中先进的系统技术,以及在Windows上编写出更加高效的软件。《Windows内核原理与实现》也配备了一些小工具,通过这些小工具,读者可以查看内核中的静态或动态的信息,甚至观察系统的行为,可通过Internet下载这些工具。
展开
精彩书摘
  其次,在支持多任务的基础上,如果这些任务是相互独立的,则操作系统总是可以采用适当的方式让它们获得执行机会,但在实践中,应用程序为了实现各种功能逻辑,不同任务之间往往有一些逻辑上的关联性。比如,任务之间必须强加某种时序关系,才能保证每个任务的状态是有效的;当多个任务竞争某些稀有资源(注意,系统的硬件资源,像打印机和显示器等,是共享的)时,系统必须确保这些任务有序执行。所以,凡是存在共享资源的地方,操作系统都必须提供恰当的方法来同步应用程序对它的访问。现代操作系统通常会提供多种同步机制,例如互斥体(mutex)、信号量(semaphore)、临界区(criticalsection)等。应用程序可以有选择地使用这些同步机制,以确保多个任务有序地共享资源。
  除了任务和同步的概念,每个应用程序还必须有它自己相对独立的执行空间。在现代操作系统中,进程也代表了一个应用程序和它的执行空间。不同进程的空间是相互隔离的,这是现代操作系统的基本需求。操作系统必须在处理器的硬件特性基础之上,实现一套行之有效的空间隔离方案。每个进程有它自己的内存空间,并且无法直接访问其他进程的内存空间。进程之间如果要共享数据,则必须通过操作系统提供的机制来进行。Intel x86体系结构上的操作系统基本上都利用硬件的虚拟内存映射机制来隔离每个进程的内存空间。所以,操作系统的职责是为每个进程维护好从虚拟地址到物理地址的映射关系,并且管理好物理内存的分配和回收。另一方面,除了进程的空间隔离性,操作系统还必须提供相应的机制让不同的进程可以相互通信,毕竟,很多软件需要进程之间的协作来完成一些上层功能。同步机制和跨进程地共享内存是典型的进程间通信(IPC,Inter-Process Communication)手段。
  前面提到,现代操作系统往往以统一的框架来管理I/0设备,这也隐含了操作系统向应用程序暴露的I/0接口是统一的这样一层意思。应用程序通过此接口来访问系统的外部设备,而操作系统不仅要管理好应用程序访问外设的各种请求,包括它们的时序,还必须将应用程序的请求发送到对应的设备驱动程序中,最终由设备驱动程序来处理这些请求,而处理的结果也必须以某种方式回送给应用程序。操作系统通常以句柄(handle)来代表一个可访问的抽象设备,抽grist备可能与物理设备连接,也可能并不存在对应的物理设备或资源。操作系统还提供在一个句柄上读(read)、写(write)数据,以及发送控制命令的能力。所以,应用程序与系统设备打交道的方式非常简洁明了:打开设备获得句柄、向设备发送命令、读或写设备,以及关闭设备。操作系统的任务是管理这些设备和驱动程序,以及传递或解释应用程序的命令。
展开
目录
第1章 概述 1
1.1 操作系统基础 2
1.1.1 计算机系统的硬件资源管理 2
1.1.2 为应用程序提供执行环境 5
1.2 学习操作系统之必备知识 7
1.3 WINDOWS操作系统发展历史 9
1.4 WINDOWS内核的版本 11
1.5 操作系统的研究与发展 13
1.6 本章总结 16

第2章 WINDOWS系统总述 17
2.1 现代操作系统的基本结构 17
2.2 WINDOWS系统结构 18
2.2.1 Windows内核结构 20
2.2.2 Windows内核中的关键组件 22
2.2.3 Windows子系统 29
2.2.4 系统线程和系统进程 32
2.3 关于WINDOWS研究内核 34
2.3.1 WRK包含了什么 35
2.3.2 WRK源代码说明 36
2.3.3 本书对WRK源代码的引用 38
2.4 WINDOWS内核的基本概念 39
2.4.1 处理器模式 40
2.4.2 内存管理 41
2.4.3 进程和线程管理 43
2.4.4 中断和异常 45
2.4.5 同步 48
2.5 WINDOWS内核中的公共管理设施 50
2.5.1 Windows内核中的对象管理 50
2.5.2 注册表和配置管理器 58
2.5.3 事件追踪(ETW) 69
2.5.4 安全性管理 72
2.6 WINDOWS引导过程 79
2.6.1 内核加载 79
2.6.2 内核初始化 86
2.6.3 建立用户登录会话 91
2.7 本章总结 97

第3章 WINDOWS进程和线程 99
3.1 进程基本概念 99
3.1.1 多进程模型 99
3.1.2 进程和程序 101
3.2 线程基本概念 104
3.2.1 线程模型 104
3.2.2 线程调度算法 106
3.2.3 线程和进程的关系 108
3.3 WINDOWS中进程和线程数据结构 108
3.3.1 内核层的进程和线程对象 108
3.3.2 执行体层的进程和线程对象 120
3.4 WINDOWS的进程和线程管理 131
3.4.1 Windows进程中的句柄表 131
3.4.2 获得当前线程和进程 136
3.4.3 进程和线程的创建过程 137
3.4.4 进程和线程的结束 147
3.4.5 系统初始进程和线程 149
3.5 WINDOWS中的线程调度 151
3.5.1 线程优先级 152
3.5.2 线程状态转移 154
3.5.3 时限管理 164
3.5.4 优先级调度和环境切换 166
3.6 进程和线程状态监视工具 172
3.6.1 ProcMon使用示例 172
3.6.2 ProcMon实现原理 174
3.7 本章总结 174

第4章 WINDOWS内存管理 175
4.1 内存管理概述 176
4.1.1 页式内存管理 177
4.1.2 段式内存管理 181
4.1.3 内存管理算法介绍 184
4.1.4 Windows内存管理概述 192
4.2 WINDOWS系统内存管理 194
4.2.1 系统地址空间初始化 194
4.2.2 系统地址空间内存管理 209
4.2.3 系统PTE区域的管理 224
4.3 进程虚拟内存管理 229
4.3.1 地址空间的创建和初始化 229
4.3.2 地址空间切换 234
4.3.3 虚拟地址空间的管理 235
4.3.4 内存区对象 241
4.4 内存页面交换 249
4.4.1 x86中的PTE 250
4.4.2 软件PTE:无效PTE和原型PTE 253
4.4.3 页面错误处理 257
4.4.4 Windows的写时复制 263
4.5 物理内存管理 265
4.5.1 PFN数据库 265
4.5.2 物理页面的状态变化 270
4.5.3 物理页面链表的管理和操作 274
4.5.4 修改页面写出器 279
4.5.5 进程/栈交换器 281
4.5.6 低内存通知和高内存通知 284
4.6 工作集管理 285
4.6.1 Windows工作集管理器 285
4.6.2 平衡集管理器 291
4.7 内存监视工具MEM_MON 292
4.7.1 Mem_Mon使用介绍 292
4.7.2 Mem_Mon实现原理 293
4.8 本章总结 294

第5章 WINDOWS中的并发和同步 295
5.1 进程和线程同步基础 295
5.1.1 并发性基础 296
5.1.2 进程或线程之间的通讯 299
5.1.3 经典的同步问题 303
5.2 WINDOWS中断与异常 308
5.2.1 硬件中断的发生和处理 308
5.2.2 中断请求级别(IRQL) 314
5.2.3 中断对象 317
5.2.4 DPC(延迟过程调用) 320
5.2.5 时钟中断和定时器管理 324
5.2.6 APC(异步过程调用) 328
5.2.7 异常分发 333
5.3 不依赖于线程调度的同步机制 340
5.3.1 提升IRQL实现数据同步 340
5.3.2 互锁操作 342
5.3.3 无锁的单链表实现 343
5.3.4 自旋锁 345
5.4 基于线程调度的同步机制 351
5.4.1 线程进入等待 351
5.4.2 分发器对象 358
5.4.3 门等待 365
5.4.4 执行体资源(executive resource) 367
5.4.5 推锁(push lock) 370
5.4.6 死锁 375
5.5 使用工具DPERFLITE 376
5.5.1 DPerfLite使用示例 376
5.5.2 DPerfLite实现原理 378
5.6 本章总结 379

第6章 WINDOWS I/O系统 381
6.1 I/O概述 382
6.1.1 现代计算机系统的I/O 382
6.1.2 I/O软件技术 386
6.1.3 Windows的I/O系统结构 388
6.2 I/O管理器 390
6.2.1 驱动程序初始化 390
6.2.2 驱动程序对象和设备对象 397
6.2.3 文件对象 401
6.2.4 对象生命周期管理 405
6.3 即插即用管理器 406
6.3.1 即插即用的基本要求 407
6.3.2 Windows中驱动程序的即插即用支持 408
6.3.3 设备列举与设备树 409
6.4 电源管理器 411
6.4.1 电源管理概述 412
6.4.2 Windows中的电源管理 415
6.5 设备驱动程序 420
6.5.1 驱动程序分类 420
6.5.2 例子驱动程序toaster 423
6.5.3 驱动程序的代码结构 425
6.5.4 toaster设备的设备栈 430
6.5.5 过滤驱动程序的配置和加载 431
6.5.6 非即插即用驱动程序 435
6.6 I/O处理 437
6.6.1 I/O请求包(IRP) 438
6.6.2 针对独立设备对象的I/O处理 444
6.6.3 处理I/O请求过程中的事项 449
6.6.4 针对设备栈的I/O处理 459
6.6.5 I/O完成端口 463
6.7 I/O监视工具IRPMON 466
6.7.1 IRPMon使用介绍 466
6.7.2 IRPMon实现原理 467
6.8 本章总结 468

第7章 WINDOWS存储管理 469
7.1 存储管理概述 469
7.1.1 硬件存储体系(Memory hierarchy) 470
7.1.2 Windows的存储管理结构 472
7.2 WINDOWS缓存管理 474
7.2.1 Windows缓存空间的内存管理 474
7.2.2 缓存管理器的数据访问路径 481
7.2.3 直接使用缓存中的数据 484
7.2.4 缓存管理器的预读处理 491
7.2.5 缓存管理器的延迟写 494
7.3 WINDOWS卷管理 497
7.3.1 Windows中存储栈结构 497
7.3.2 卷的挂载 501
7.3.3 卷与文件系统 504
7.3.4 文件对象的I/O处理 508
7.4 WINDOWS文件系统 510
7.4.1 文件系统驱动程序结构 511
7.4.2 RAW文件系统和FsRtl 516
7.4.3 文件系统的过滤 520
7.4.4 FAT文件系统 527
7.4.5 NTFS文件系统 532
7.5 本章总结 540

第8章 WINDOWS系统服务 541
8.1 WINDOWS系统服务原理 541
8.1.1 Intel x86的用户模式-内核模式切换 541
8.1.2 Windows的用户模式-内核模式切换 546
8.1.3 Windows中的系统服务分发 550
8.1.4 增加系统服务表或表项 557
8.2 LPC(本地过程调用)服务 561
8.2.1 LPC结构模型 561
8.2.2 LPC端口和LPC消息 563
8.2.3 LPC通讯模型的实现 565
8.2.4 LPC应用 571
8.3 命名管道(NAMED PIPE)服务 573
8.3.1 命名管道的名称解析 573
8.3.2 命名管道的通讯模型 575
8.3.3 命名管道的实现 577
8.4 邮件槽(MAILSLOT)服务 580
8.4.1 邮件槽的名称解析 580
8.4.2 邮件槽的通讯模型 581
8.4.3 邮件槽的实现 581
8.5 SDT显示工具SDTVIEWER 583
8.5.1 SDTViewer使用介绍 583
8.5.2 SDTViewer实现原理 584
8.6 本章总结 585

第9章 WINDOWS内核高级话题 587
9.1 网络 587
9.1.1 Windows网络体系结构 587
9.1.2 TDI(传输驱动程序接口) 591
9.1.3 NDSI(网络驱动程序接口规范) 594
9.1.4 Windows Vista以后的网络结构 597
9.2 WINDOWS子系统 599
9.2.1 Windows子系统结构 599
9.2.2 Windows子系统初始化与GUI线程 602
9.2.3 窗口管理 606
9.2.4 GDI(图形设备接口) 616
9.2.5 Windows Vista以后的子系统变化 622
9.3 内核日志 625
9.3.1 WRK中的内核记录器 625
9.3.2 利用ETW信息诊断性能问题 628
9.4 WINDOWS VISTA/SERVER 2008/7的重要变化 636
9.4.1 MinWin工程 636
9.4.2 ?? 639

附录A 建立编译和调试WRK环境 641
A.1 编译WRK 641
A.2 启动WRK 645
A.3 调试WRK 648
附录B 内核代码插入工具KINJECTTOOLKIT 657
B.1 KINJECTTOOLKIT功能介绍 658
B.2 KINJECTTOOLKIT的代码实现 659
B.3 KINJECTTOOLKIT的限制 663
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证