内容简介:
本书是著名的操作系统内核专家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年度北京大学优秀教学奖。他现在微软亚洲研究院从事系统与安全方向的研究工作。
最近潘爱民新出版《Windows 内核原理和实现》一书,读的如火如荼,却发现"WRK"工具和研究环境的匮乏。微软对此光盘虽免费索取的政策,但非大专院校教师几乎不可获得。几经周折,终获该光盘,使得获得潘大宝典的芸芸同胞不在烦恼,特此制作分享,以敬潘老师呕心沥血之初衷:为我国计算机工业界的基础研究做些贡献。
网址:“Windows内核原理与实现” 配书学习环境光盘http://www.VeryCD.com/topics/2820285/
WRK的全称是“Windows Research Kernel”,它是微软为学校操作系统课程提供的可修改和跟踪的操作系统教学平台。它给出了Windows这个成功的商业操作系统的内核大部分代码,可以对其进行修改、编译,并且可以用这个内核启动Windows操作系统。可让学生将操作系统基本原理和商业操作系统内核联系起来,进一步加深对操作系统整体的理解。微软的WRK计划(Windows Research Kernel),这个计划是让高校师生以及亲密的合作商有一个机会能够了解和学习windows的内核代码。WRK包含了以下模块:
* Processes
* Threads
* Virtual memory and cache managers
* I/O management
* The registry
* Executive functions, such as the kernel heap and synchronization
* Object manager
* Local procedure call mechanism
* Security reference monitor
* Low-level CPU management (thread scheduling, Asynchronous and Deferred Procedure calls, interrupt/trap handling, exceptions)
WRK的特点功能介绍:
在本科的操作系统教学中,能够提供一个展示真实操作系统是如何工作的环境是很重要的。但目前普遍使用的教学平台大多是非真实的、模拟的环境,这可能使同学对操作系统的理解出现偏差。同时教学平台要求在学生的理解和修改的基础上能够真实的运行起来,所以我们采用WRK作为操作系统课程的教学实践平台。WRK 平台隶属于Windows Academic Program项目,是微软公司将Windows Kernel的核心技术融入到高校的教学和科研中的产物。该平台是基于Windows操作系统的真实内核代码进行提炼、修改形成的。它在操作系统教学方面具有以下几个突出的优点:
1.可运行在真实的硬件平台:WRK是建立在真实的NT内核基础上的,实现了线程调度、内存管理、I/O管理、文件系统等操作系统所必须的组成部分。可以将编译出的内核放到装有Windows 2003的机器上,通过增加启动项,指定从WRK内核启动。通过修改编译时的选项,可以支持X86和AMD64两种架构。当然,我们也可以使用虚拟机运行WRK。可以防止修改过的代码对真实的硬件和文件系统产生负面影响;也可以方便的通过串口进行调试。
2.包含操作系统中很多概念的具体实现:现代操作系统原理中包含了很多的概念,如线程、虚拟内存、硬件抽象等等。一些模拟的操作系统由于各种原因无法将这些概念付诸实际,这样就导致学生在学习的过程中,获得的只是一些空洞的知识。WRK中将Windows的各种实现都展示了出来。
3.调试比较方便,随机性使体验更加真实:一般来说,操作系统内核的调试需要两台计算机。一台作为宿主机,运行需要调试的内核;另一台作为调试机,运行调试程序。两台机器通过串口进行连接,传送调试指令和调试数据。因为WRK可以运行在虚拟机上,我们可以通过一个命名管道连接虚拟机和物理机。将虚拟机作为宿主机,而物理机器作为调试机来进行调试。不确定性是操作系统所必须具有的特征。WRK运行在真实的硬件平台上,各种硬件中断的随机性和不确定性赋予了WRK天生的不确定性。当然,这个不确定性对于我们也是具有两面性的,一方面展示的真实操作系统的特征;另一方面,对于我们内核的调试也具有不确定性。
4.结构清晰,易于分模块阅读:WRK具有非常清晰的目录结构,将所有代码分布在16个文件夹中。如下表:
模块目录::模块功能
cache::cache manager
config::registry implementation
dbgk::user-mode debugger support
ex::executive functions (kernel heap, synchronization, time)
fsrtl::file system run-time support
io::I/O manager
ke::scheduler, CPU management, low-level synchronization
lpc::local procedure call implementation
mm::virtual memory manager
ob::kernel object manager
ps::process/thread support
se::security functions
wmi::Windows Management Instrumentation
inc::NTOS-only include files
rtl::kernel run-time support
init::kernel startup
WRK的代码量相当大,源代码有47M。所以,随着操作系统课程的进行,同学可以有针对性的阅读某一个模块的代码,能够更好的理论联系实际。
5.代码质量高:WRK是用C语言来实现的。这是考虑到了操作系统内核效率的问题。WRK代码质量很高,规范很好,可以通过阅读提高自己的水平。
编译WRK
01. 用VMware安装一个windows server 2003系统(以下所指系统如未加说明均为该windows 2003虚拟机)
02. 将WRK源码拷贝到系统下C盘,将文件夹取名wrk(可以任意命名)
03. 将系统中的环境变量Path设置为C:wrktoolsx86;%path%
04. (在命令提示符中输入)cd wrkbasentos
05. (在命令提示符中输入)nmake -nologo x86=(内核正在编译...编译完后在wrkbasentosBUILDEXE下生成内核文件)
06. 将wrkbasentosBUILDEXE下的内核文件拷贝到C:windowssystem32下
07. (在命令提示符中输入)在C:windowssystem32路径下输入link -dump -all hal.dll | findstr pdb命令,查看你的hal按照下面对照:
halacpi.dll -> halacpim.dll ; ACPI PIC-based PC [used by VirtualPC]
halaacpi.dll -> halmacpi.dll ; ACPI APIC-based PC
halapic.dll -> halmps.dll ; MPS
08. 进入C:wrkWS03SP1HALSx86目录下,将相应的hal文件夹下的文件(2个)拷贝到C:windowssystem32下
09. 进入C盘,将隐藏的文件boot.ini打开,在最后一行加入:multi(0)disk(0)rdisk(0)partition(2)WINDOWS="test" /kernel=wrkx86.exe /hal=halmacpi.dll
10. 重新启动,进入新编译好的内核。
PS: 一、注意第09步骤中,发光的数字"2",该数值应与原来最后一句中的一致(否则进入系统时会出现没有找到引导盘);二、如果还是进入不了系统,则下载win2003sp1ch进行系统升级。
WRK的安装
WRK 1.2可以在两种环境下运行:
* X86(Windows Server 2003 Service Pack 1)
* AMD64(Windows XP x64 Professional)
可以在运行上述操作系统的物理计算机上安装WRK,但是,为了实验方便同时也为了保护物理计算机的操作系统,建议在虚拟机下安装WRK。目前最为流行的虚拟机软件有VMware 和Virtual PC,这两种软件都可以用来安装WRK。
内页截图:
简介:
目录:
第1章 概念和工具
1.1 Windows操作系统的版本
1.2 基础概念和术语
1.3 挖掘Windows内部机理
1.4 本章总结
第2章 系统结构
2.1 需求和设计目标
2.2 操作系统模型
2.3 总体结构
2.4 关键的系统组件
2.5 本章总结
第3章 系统机制
3.1 陷阱分发
3.2 对象管理器
3.3 同步
3.4 系统辅助线程
3.5 Windows全局标志
3.6 本地过程调用(LPC)
3.7 内核事件追踪
3.8 Wow64
3.9 本章总结
第4章 管理机制
4.1 注册表
4.2 服务
4.3 Windows管理规范
4.4 本章总结
第5章 启动和停机
5.1 引导过程
5.2 引导和启动问题的故障检查
5.3 停机
5.4 本章总结
第6章 进程、线程和作业
6.1 进程的内部机理
6.2 CreateProcess的流程
6.3 线程的内部机理
6.4 检查线程活动
6.5 线程调度
6.6 作业对象
6.7 本章总结
第7章 内存管理
7.1 内存管理器简介
7.2 内存管理器提供的服务
7.3 系统内存池
7.4 虚拟地址空间的布局结构
7.5 地址转译
7.6 页面错误处理
7.7 虚拟地址描述符
7.8 内存区对象
7.9 工作集
7.10 逻辑预取器
7.11 页面帧编号数据库
7.12 本章总结
第8章 安全性
8.1 安全系统组件
8.2 保护对象
8.3 账户权限和特权
8.4 安全审计
8.5 登录(Logon)
8.6 软件限制策略
8.7 本章总结
第9章 I/O系统
9.1 I/O系统组件
9.2 设备驱动程序
9.3 I/O处理
9.4 即插即用(PnP)管理器
9.5 电源管理器
9.6 本章总结
第10章 存储管理
10.1 有关存储的术语
10.2 磁盘驱动程序
10.3 卷的管理
10.4 本章总结
第11章 缓存管理器
11.1 缓存管理器的关键特性
11.2 缓存的虚拟内存管理
11.3 缓存的大小
11.4 缓存的数据结构
11.5 文件系统接口
11.6 快速I/O
11.7 预读(Read Ahead)和滞后写(Write Behind)
11.8 本章总结
第12章 文件系统
12.1 Windows文件系统格式
12.2 文件系统驱动程序总体结构
12.3 诊断文件系统的问题
12.5 NTFS文件系统驱动程序
12.6 NTFS在磁盘上的结构
12.7 NTFS的恢复支持
12.8 加密文件系统(EFS)安全性
12.9 本章总结
第13章 网络
13.1 Windows的网络总体结构
13.2 网络API
13.3 多重定向器支持
13.4 名称解析
13.5 协议驱动程序
13.6 NDIS驱动程序
13.7 绑定
13.8 分层的网络服务
13.9 本章总结
第14章 崩溃转储分析
14.1 Windows为什么会崩溃
14.2 蓝屏
14.3 崩溃转储文件
14.4 Windows错误报告
14.5 在线崩溃分析
14.6 基本的崩溃转储分析
14.7 使用崩溃诊断工具
14.8 高级的崩溃转储分析
术语表
术语对照表
索引