《Windows内核原理与实现》
基本信息
作者: 潘爱民
出版社:电子工业出版社
ISBN:9787121200564
上架时间:2013-5-13
出版日期:2013 年5月
开本:16开
页码:716
版次:1-1
所属分类:计算机
更多关于》》》《
Windows内核原理与实现》
内容简介
计算机书籍
《windows内核原理与实现》从操作系统原理的角度,详细解析了windows如何实现现代操作系统的各个关键部件,包括进程、线程、物理内存和虚拟内存的管理,windows中的同步和并发性支持,以及windows的i/o模型。在介绍这些关键部件时,本书直接以windows的源代码(wrk,windows research kernel)为参照,因而读者可以了解像windows这样的复杂操作系统是如何在x86处理器上运行的。
在内容选取方面,本书侧重于windows内核中最基本的系统部件,同时也兼顾到作为一个操作系统的完整性,所以,本书也介绍了像存储体系、网络、windows环境子系统等,这些虽然并不位于内核模块但却支撑整个windows运行的重要部件。在本书最后,也介绍了windows server 2003以后的内核发展和变化。
虽然书中有大量关于windows代码实现的描述,但是本书并没有罗列wrk中的代码,即使读者不对照wrk的源代码,也可以从这些章节的描述中理解windows的实现机理。在每一个技术专题的介绍中,本书几乎都提供了一个框架图,并且有关键细节的实现分析,这样做的意图是让读者既能够对一项技术有总体上的把握,也通晓关键的实现细节。
windows操作系统已经有20年历史了,市面上有大量关于windows技术的文档和书籍,但是,真正从源代码来诠释windows底层机理的,本书还是第一次尝试。在本书覆盖的内容中,有相当一部分是第一次以文字形式披露出来的,期望这些内容能消除人们对于windows的神秘感。
写作本书的目的是让对windows有好奇心的人真正了解到windows中的核心机理,让计算机专业的学生和老师,以及系统软件工程师可以快速地领略到windows中先进的系统技术,以及在windows上编写出更加高效的软件。本书也配备了一些小工具,通过这些小工具,读者可以查看内核中的静态或动态的信息,甚至观察系统的行为。
目录
《windows内核原理与实现》
第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子系统32
2.2.4 系统线程和系统进程35
2.3 关于windows研究内核37
2.3.1 wrk包含了什么38
2.3.2 wrk源代码说明39
.2.3.3 本书对wrk源代码的引用41
2.4 windows内核的基本概念42
2.4.1 处理器模式43
2.4.2 内存管理44
2.4.3 进程和线程管理46
2.4.4 中断和异常48
2.4.5 同步51
2.5 windows内核中的公共管理设施53
2.5.1 windows内核中的对象管理53
2.5.2 注册表和配置管理器61
2.5.3 事件追踪(etw)72
2.5.4 安全性管理75
2.6 windows引导过程81
2.6.1 内核加载82
2.6.2 内核初始化85
2.6.3 建立用户登录会话90
2.7 本章总结96
第3章 windows进程和线程97
3.1 进程基本概念97
3.1.1 多进程模型98
3.1.2 进程与程序99
3.2 线程基本概念102
3.2.1 线程模型102
3.2.2 线程调度算法104
3.2.3 线程与进程的关系106
3.3 windows中进程和线程的数据结构106
3.3.1 内核层的进程和线程对象106
3.3.2 执行体层的进程和线程对象118
3.4 windows的进程和线程管理129
3.4.1 windows进程的句柄表129
3.4.2 获得当前线程或进程135
3.4.3 进程和线程的创建过程136
3.4.4 进程和线程的结束处理146
3.4.5 系统初始进程和线程148
3.5 windows中的线程调度150
3.5.1 线程优先级150
3.5.2 线程状态转移153
3.5.3 时限管理163
3.5.4 优先级调度和环境切换165
3.6 进程和线程运行状态监视工具171
3.6.1 procmon使用示例171
3.6.2 procmon实现原理173
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区域的管理223
4.3 进程内存管理229
4.3.1 地址空间的创建和初始化229
4.3.2 地址空间切换234
4.3.3 进程地址空间的内存管理235
4.3.4 内存区对象241
4.4 内存页面交换250
4.4.1 intel x86中的pte251
4.4.2 软件pte:无效pte和原型pte253
4.4.3 页面错误处理257
4.4.4 windows的写时复制263
4.5 物理内存管理265
4.5.1 pfn数据库266
4.5.2 物理页面的状态变化272
4.5.3 物理页面链表的管理和操作275
4.5.4 修改页面写出器280
4.5.5 进程/栈交换器282
4.5.6 低内存通知和高内存通知285
4.6 工作集管理286
4.6.1 windows工作集管理器286
4.6.2 平衡集管理器292
4.7 内存监视工具memmon293
4.7.1 memmon使用介绍293
4.7.2 memmon实现原理295
4.8 本章总结295
第5章 windows并发和同步297
5.1 进程和线程的同步基础297
5.1.1 并发性基础298
5.1.2 进程或线程之间的通信301
5.1.3 经典的同步问题305
5.2 windows中断与异常310
5.2.1 硬件中断的发生和处理311
5.2.2 中断请求级别(irql)317
5.2.3 中断对象320
5.2.4 dpc(延迟过程调用)323
5.2.5 时钟中断和定时器管理327
5.2.6 apc(异步过程调用)330
5.2.7 异常分发336
5.3 不依赖于线程调度的同步机制343
5.3.1 提升irql实现数据同步343
5.3.2 互锁操作345
5.3.3 无锁的单链表实现346
5.3.4 自旋锁349
5.4 基于线程调度的同步机制354
5.4.1 线程进入等待354
5.4.2 分发器对象361
5.4.3 门等待369
5.4.4 执行体资源(executive resource)370
5.4.5 推锁(push lock)373
5.4.6 死锁378
5.5 观察线程同步关系——dperflite379
5.5.1 dperflite使用示例379
5.5.2 dperflite实现原理381
5.6 本章总结382
第6章 windows i/o系统383
6.1 i/o概述384
6.1.1 现代计算机系统的i/o384
6.1.2 i/o软件技术388
6.1.3 windows i/o系统结构390
6.2 i/o管理器392
6.2.1 驱动程序初始化393
6.2.2 驱动程序对象和设备对象399
6.2.3 文件对象404
6.2.4 对象生命周期管理407
6.3 即插即用管理器408
6.3.1 即插即用的基本要求409
6.3.2 windows中驱动程序的即插即用支持410
6.3.3 设备列举与设备树411
6.4 电源管理器414
6.4.1 电源管理概述414
6.4.2 windows中的电源管理417
6.5 设备驱动程序422
6.5.1 设备驱动程序分类423
6.5.2 例子驱动程序toaster425
6.5.3 驱动程序的代码结构427
6.5.4 toaster设备的设备栈432
6.5.5 过滤驱动程序的配置和加载434
6.5.6 非即插即用驱动程序437
6.6 i/o处理440
6.6.1 i/o请求包(irp)440
6.6.2 针对独立设备对象的i/o处理447
6.6.3 处理i/o请求过程中的事项451
6.6.4 针对设备栈的i/o处理461
6.6.5 i/o完成端口465
6.7 i/o请求监视工具irpmon468
6.7.1 irpmon使用介绍468
6.7.2 irpmon实现原理469
6.8 本章总结470
第7章 windows存储管理471
7.1 存储管理概述471
7.1.1 硬件存储体系(memory hierarchy)472
7.1.2 windows的存储管理结构474
7.2 windows缓存管理476
7.2.1 windows缓存空间的内存管理476
7.2.2 缓存管理器的数据访问路径483
7.2.3 直接使用系统缓存中的数据486
7.2.4 缓存管理器的预读处理493
7.2.5 缓存管理器的延迟写496
7.3 windows中卷的管理499
7.3.1 windows存储栈结构500
7.3.2 卷的挂载504
7.3.3 卷与文件系统507
7.3.4 文件对象的i/o处理510
7.4 windows文件系统513
7.4.1 文件系统驱动程序结构514
7.4.2 raw文件系统与fsrtl519
7.4.3 文件系统的i/o过滤522
7.4.4 fat文件系统530
7.4.5 ntfs文件系统534
7.5 本章总结542
第8章 windows系统服务545
8.1 windows系统服务原理545
8.1.1 intel x86的用户模式-内核模式切换545
8.1.2 windows的用户模式-内核模式切换550
8.1.3 windows中的系统服务分发555
8.1.4 增加系统服务表或表项562
8.2 lpc(本地过程调用)服务565
8.2.1 lpc结构模型565
8.2.2 lpc端口和lpc消息567
8.2.3 lpc通信模型的实现569
8.2.4 lpc应用575
8.3 命名管道(named pipe)服务577
8.3.1 命名管道的名称解析577
8.3.2 命名管道的通信模型579
8.3.3 命名管道的实现581
8.4 邮件槽(mailslot)服务584
8.4.1 邮件槽的名称解析584
8.4.2 邮件槽的通信模型585
8.4.3 邮件槽的实现586
8.5 sdt显示工具sdtviewer588
8.5.1 sdtviewer使用介绍588
8.5.2 sdtviewer实现原理589
8.6 本章总结590
第9章 windows系统高级话题591
9.1 网络591
9.1.1 windows网络体系结构591
9.1.2 tdi(传输驱动程序接口)595
9.1.3 ndis(网络驱动程序接口规范)599
9.1.4 windows vista及以后版本的网络结构601
9.2 windows子系统603
9.2.1 windows子系统结构603
9.2.2 windows子系统初始化与gui线程607
9.2.3 窗口管理610
9.2.4 gdi(图形设备接口)620
9.2.5 windows vista及以后的子系统变化627
9.3 内核日志629
9.3.1 内核日志记录器629
9.3.2 利用内核日志信息诊断性能问题632
9.4 windows vista/server 2008/7的重要变化640
9.4.1 minwin工程640
9.4.2 进程和线程管理643
9.4.3 内存管理645
9.4.4 i/o处理的改进647
9.5 本章总结650
附录a 建立wrk工作环境651
a.1 编译wrk651
a.2 启动wrk655
a.3 调试wrk658
附录b 内核代码插入工具kinjecttoolkit665
b.1 kinjecttoolkit功能介绍666
b.2 kinjecttoolkit的代码实现667
b.3 kinjecttoolkit的限制671
参考资料673
术语对照表681
索引687