Windows内核原理与实现

出版时间:2010年4月  出版社:电子工业出版社  作者:潘爱民  页数:689  字数:850000  
Tag标签:无  

前言

  《Windows内核原理与实现》是一本讲述Windows内核机理,并配合Windows的源代码来解释其实现细节的学习用书。全书从操作系统原理的角度来组织内容。本书适合于已经有了操作系统基本概念的读者进一步理解Windows操作系统。通过学习本书的内容,读者不仅可以掌握Windows的核心机制,也可以理解像Windows这样的现代操作系统是如何构建起来的。因此,这是一本学习Windows操作系统内核的书,而不是一本指导在Windows平台上进行软件开发的用书。  对于绝大多数IT从业人员以及高校学生来说,Windows是一个熟悉得不能再熟悉的操作系统了,而且也有相当多人能够熟练地开发各种类型的Windows应用程序,然而,真正熟悉Windows内部机理的人却少而又少。究其根源,很多人将这归咎于Windows是一个闭源操作系统,也就是说,除了Microsoft内部的员工以外,人们接触不到Windows的源代码。这样的解释只能说是部分正确的,因为从历史发展来看,UNIX类操作系统确实有广泛的群众基础,很多人得益于阅读各种UNIX版本的源代码(包括Linux和FreeBSD)。但对于Windows操作系统,这似乎并非一个合理的解释,因为事实上,有相当多人在过去三四年间已经获得了Windows的源代码,但是在代码阐释和核心深入理解方面却并未表现出拥有源代码而带来的优势。反倒是在过去几年间基于逆向工程而获得的Windows核心知识要深刻得多。  这么说并非指Windows源代码没有帮助,而是间接地揭示了一个事实:Windows的源代码不是那么容易读的,Windows的核心也不是那么好理解的。本书作者在过去几年间,与国内高校的操作系统课程的老师和学生有广泛的接触和了解,真切地理解到,要想在操作系统课程中完全融入Windows的内容,迫切需要一本按照操作系统基本概念和理论来阐释Windows实现机理的书籍。基于这样的动机,本书力图让学习操作系统的读者能够理解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上编写出更加高效的软件。本书也配备了一些小工具,通过这些小工具,读者可以查看内核中的静态或动态的信息,甚至观察系统的行为,可通过Internet下载这些工具。

作者简介

潘爱民,浙江海宁人,获得了南开大学数学学士学位,清华大学工学硕士学位,以及北京大学计算机科学博士学位。他从中学时代开始接触计算机编程,经历了从DOS到Windows各种版本的发展历程。潘爱民曾经长期从事软件技术的研究和开发工作,撰写了大量软件技术文章,1999年曾经是

书籍目录

第1章 概述   1.1 操作系统基础    1.1.1 计算机系统的硬件资源管理    1.1.2 为应用程序提供执行环境   1.2 学习操作系统之必备知识   1.3 WINDOWS操作系统发展历史   1.4 WINDOWS内核的版本   1.5 操作系统的研究与发展   1.6 本章总结  第2章 WINDOWS系统总述   2.1 现代操作系统的基本结构   2.2 WINDOWS系统结构    2.2.1 Windows内核结构    2.2.2 Windows内核中的关键组件    2.2.3 Windows子系统    2.2.4 系统线程和系统进程   2.3 关于WINDOWS研究内核    2.3.1 WRK包含了什么    2.3.2 WRK源代码说明    2.3.3 本书对WRK源代码的引用    2.4 WINDOWS内核的基本概念    2.4.1 处理器模式    2.4.2 内存管理    2.4.3 进程和线程管理    2.4.4 中断和异常    2.4.5 同步   2.5 WINDOWS内核中的公共管理设施    2.5.1 Windows内核中的对象管理    2.5.2 注册表和配置管理器    2.5.3 事件追踪(ETW)    2.5.4 安全性管理   2.6 WINDOWS引导过程    2.6.1 内核加载    2.6.2 内核初始化    2.6.3 建立用户登录会话   2.7 本章总结  第3章 WINDOWS进程和线程   3.1 进程基本概念    3.1.1 多进程模型    3.1.2 进程和程序   3.2 线程基本概念    3.2.1 线程模型    3.2.2 线程调度算法    3.2.3 线程和进程的关系   3.3 WINDOWS中进程和线程数据结构    3.3.1 内核层的进程和线程对象    3.3.2 执行体层的进程和线程对象   3.4 WINDOWS的进程和线程管理    3.4.1 Windows进程中的句柄表    3.4.2 获得当前线程和进程    3.4.3 进程和线程的创建过程    3.4.4 进程和线程的结束    3.4.5 系统初始进程和线程   3.5 WINDOWS中的线程调度    3.5.1 线程优先级    3.5.2 线程状态转移    3.5.3 时限管理    3.5.4 优先级调度和环境切换   3.6 进程和线程状态监视工具    3.6.1 ProcMon使用示例    3.6.2 ProcMon实现原理   3.7 本章总结  第4章 WINDOWS内存管理   4.1 内存管理概述    4.1.1 页式内存管理    4.1.2 段式内存管理    4.1.3 内存管理算法介绍    4.1.4 Windows内存管理概述   4.2 WINDOWS系统内存管理    4.2.1 系统地址空间初始化    4.2.2 系统地址空间内存管理    4.2.3 系统PTE区域的管理   4.3 进程虚拟内存管理    4.3.1 地址空间的创建和初始化    4.3.2 地址空间切换    4.3.3 虚拟地址空间的管理    4.3.4 内存区对象   4.4 内存页面交换    4.4.1 x86中的PTE    4.4.2 软件PTE:无效PTE和原型PTE    4.4.3 页面错误处理    4.4.4 Windows的写时复制   4.5 物理内存管理    4.5.1 PFN数据库    4.5.2 物理页面的状态变化    4.5.3 物理页面链表的管理和操作    4.5.4 修改页面写出器    4.5.5 进程/栈交换器    4.5.6 低内存通知和高内存通知   4.6 工作集管理    4.6.1 Windows工作集管理器    4.6.2 平衡集管理器   4.7 内存监视工具MEM_MON    4.7.1 Mem_Mon使用介绍    4.7.2 Mem_Mon实现原理   4.8 本章总结  第5章 WINDOWS中的并发和同步   5.1 进程和线程同步基础    5.1.1 并发性基础    5.1.2 进程或线程之间的通讯    5.1.3 经典的同步问题   5.2 WINDOWS中断与异常    5.2.1 硬件中断的发生和处理    5.2.2 中断请求级别(IRQL)    5.2.3 中断对象    5.2.4 DPC(延迟过程调用)    5.2.5 时钟中断和定时器管理    5.2.6 APC(异步过程调用)    5.2.7 异常分发   5.3 不依赖于线程调度的同步机制    5.3.1 提升IRQL实现数据同步    5.3.2 互锁操作    5.3.3 无锁的单链表实现    5.3.4 自旋锁   5.4 基于线程调度的同步机制    5.4.1 线程进入等待    5.4.2 分发器对象    5.4.3 门等待    5.4.4 执行体资源(executive resource)    5.4.5 推锁(push lock)    5.4.6 死锁   5.5 使用工具DPERFLITE    5.5.1 DPerfLite使用示例    5.5.2 DPerfLite实现原理   5.6 本章总结  第6章 WINDOWS I/O系统   6.1 I/O概述    6.1.1 现代计算机系统的I/O    6.1.2 I/O软件技术    6.1.3 Windows的I/O系统结构   6.2 I/O管理器    6.2.1 驱动程序初始化    6.2.2 驱动程序对象和设备对象    6.2.3 文件对象    6.2.4 对象生命周期管理   6.3 即插即用管理器    6.3.1 即插即用的基本要求    6.3.2 Windows中驱动程序的即插即用支持    6.3.3 设备列举与设备树   6.4 电源管理器    6.4.1 电源管理概述    6.4.2 Windows中的电源管理   6.5 设备驱动程序    6.5.1 驱动程序分类    6.5.2 例子驱动程序toaster    6.5.3 驱动程序的代码结构    6.5.4 toaster设备的设备栈    6.5.5 过滤驱动程序的配置和加载   6.5.6 非即插即用驱动程序   6.6 I/O处理    6.6.1 I/O请求包(IRP)    6.6.2 针对独立设备对象的I/O处理    6.6.3 处理I/O请求过程中的事项    6.6.4 针对设备栈的I/O处理    6.6.5 I/O完成端口   6.7 I/O监视工具IRPMON    6.7.1 IRPMon使用介绍    6.7.2 IRPMon实现原理   6.8 本章总结  第7章 WINDOWS存储管理   7.1 存储管理概述    7.1.1 硬件存储体系(Memory hierarchy)    7.1.2 Windows的存储管理结构   7.2 WINDOWS缓存管理    7.2.1 Windows缓存空间的内存管理    7.2.2 缓存管理器的数据访问路径    7.2.3 直接使用缓存中的数据    7.2.4 缓存管理器的预读处理    7.2.5 缓存管理器的延迟写   7.3 WINDOWS卷管理    7.3.1 Windows中存储栈结构    7.3.2 卷的挂载    7.3.3 卷与文件系统    7.3.4 文件对象的I/O处理   7.4 WINDOWS文件系统    7.4.1 文件系统驱动程序结构    7.4.2 RAW文件系统和FsRtl    7.4.3 文件系统的过滤    7.4.4 FAT文件系统    7.4.5 NTFS文件系统  7.5 本章总结  第8章 WINDOWS系统服务   8.1 WINDOWS系统服务原理    8.1.1 Intel x86的用户模式-内核模式切换    8.1.2 Windows的用户模式-内核模式切换    8.1.3 Windows中的系统服务分发    8.1.4 增加系统服务表或表项   8.2 LPC(本地过程调用)服务    8.2.1 LPC结构模型    8.2.2 LPC端口和LPC消息    8.2.3 LPC通讯模型的实现    8.2.4 LPC应用   8.3 命名管道(NAMED PIPE)服务    8.3.1 命名管道的名称解析    8.3.2 命名管道的通讯模型    8.3.3 命名管道的实现   8.4 邮件槽(MAILSLOT)服务    8.4.1 邮件槽的名称解析    8.4.2 邮件槽的通讯模型    8.4.3 邮件槽的实现   8.5 SDT显示工具SDTVIEWER    8.5.1 SDTViewer使用介绍    8.5.2 SDTViewer实现原理   8.6 本章总结  第9章 WINDOWS内核高级话题    9.1 网络    9.1.1 Windows网络体系结构    9.1.2 TDI(传输驱动程序接口)    9.1.3 NDSI(网络驱动程序接口规范)    9.1.4 Windows Vista以后的网络结构   9.2 WINDOWS子系统    9.2.1 Windows子系统结构    9.2.2 Windows子系统初始化与GUI线程    9.2.3 窗口管理    9.2.4 GDI(图形设备接口)    9.2.5 Windows Vista以后的子系统变化   9.3 内核日志    9.3.1 WRK中的内核记录器    9.3.2 利用ETW信息诊断性能问题   9.4 WINDOWS VISTA/SERVER /7的重要变化    9.4.1 MinWin工程    9.4.2 ??  附录A 建立编译和调试WRK环境  A.1 编译WRK  A.2 启动WRK   A.3 调试WRK  附录B 内核代码插入工具KINJECTTOOLKIT   B.1 KINJECTTOOLKIT功能介绍   B.2 KINJECTTOOLKIT的代码实现   B.3 KINJECTTOOLKIT的限制

章节摘录

  其次,在支持多任务的基础上,如果这些任务是相互独立的,则操作系统总是可以采用适当的方式让它们获得执行机会,但在实践中,应用程序为了实现各种功能逻辑,不同任务之间往往有一些逻辑上的关联性。比如,任务之间必须强加某种时序关系,才能保证每个任务的状态是有效的;当多个任务竞争某些稀有资源(注意,系统的硬件资源,像打印机和显示器等,是共享的)时,系统必须确保这些任务有序执行。所以,凡是存在共享资源的地方,操作系统都必须提供恰当的方法来同步应用程序对它的访问。现代操作系统通常会提供多种同步机制,例如互斥体(mutex)、信号量(semaphore)、临界区(criticalsection)等。应用程序可以有选择地使用这些同步机制,以确保多个任务有序地共享资源。  除了任务和同步的概念,每个应用程序还必须有它自己相对独立的执行空间。在现代操作系统中,进程也代表了一个应用程序和它的执行空间。不同进程的空间是相互隔离的,这是现代操作系统的基本需求。操作系统必须在处理器的硬件特性基础之上,实现一套行之有效的空间隔离方案。每个进程有它自己的内存空间,并且无法直接访问其他进程的内存空间。进程之间如果要共享数据,则必须通过操作系统提供的机制来进行。Intel x86体系结构上的操作系统基本上都利用硬件的虚拟内存映射机制来隔离每个进程的内存空间。所以,操作系统的职责是为每个进程维护好从虚拟地址到物理地址的映射关系,并且管理好物理内存的分配和回收。另一方面,除了进程的空间隔离性,操作系统还必须提供相应的机制让不同的进程可以相互通信,毕竟,很多软件需要进程之间的协作来完成一些上层功能。同步机制和跨进程地共享内存是典型的进程间通信(IPC,Inter-Process Communication)手段。  前面提到,现代操作系统往往以统一的框架来管理I/0设备,这也隐含了操作系统向应用程序暴露的I/0接口是统一的这样一层意思。应用程序通过此接口来访问系统的外部设备,而操作系统不仅要管理好应用程序访问外设的各种请求,包括它们的时序,还必须将应用程序的请求发送到对应的设备驱动程序中,最终由设备驱动程序来处理这些请求,而处理的结果也必须以某种方式回送给应用程序。操作系统通常以句柄(handle)来代表一个可访问的抽象设备,抽grist备可能与物理设备连接,也可能并不存在对应的物理设备或资源。操作系统还提供在一个句柄上读(read)、写(write)数据,以及发送控制命令的能力。所以,应用程序与系统设备打交道的方式非常简洁明了:打开设备获得句柄、向设备发送命令、读或写设备,以及关闭设备。操作系统的任务是管理这些设备和驱动程序,以及传递或解释应用程序的命令。

编辑推荐

  微软亚洲研究院资深研究员潘爱民老师十年磨一剑之作  用真实的源代码剖析Windows操作系统核心原理  Windows内核专家Dave Probert作序力荐

图书封面

图书标签Tags

评论、评分、阅读与下载


    Windows内核原理与实现 PDF格式下载


用户评论 (总计73条)

 
 

  •   在内容选取方面,本书侧重于Windows内核中最基本的系统部件,同时也兼顾到作为一个操作系统的完整性,所以,本书也介绍了像存储体系、网络、Windows环境子系统等,这些虽然并不位于内核模块但却支撑整个Windows运行的重要部件。在本书最后,也介绍了Windows Server 2003以后的内核发展和变化。   虽然书中有大量关于Windows代码实现的描述,但是本书并没有罗列WRK中的代码,即使读者不对照WRK的源代码,也可以从这些章节的描述中理解Windows的实现机理。在每一个技术专题的介绍中,本书几乎都提供了一个框架图,并且有关键细节的实现分析,这样做的意图是让读者既能够对一项技术有总体上的把握,也通晓关键的实现细节。   Windows操作系统已经有20年历史了,市面上有大量关于Windows技术的文档和书籍,但是,真正从源代码来诠释Windows底层机理的,本书还是第一次尝试。在本书覆盖的内容中,有相当一部分是第一次以文字形式披露出来的,期望这些内容能消除人们对于Windows的神秘感。   写作本书的目的是让对Windows有好奇心的人真正了解到Windows中的核心机理,让计算机专业的学生和老师,以及系统软件工程师可以快速地领略到Windows中先进的系统技术,以及在Windows上编写出更加高效的软件。本书也配备了一些小工具,通过这些小工具,读者可以查看内核中的静态或动态的信息,甚至观察系统的行为,可通过Inter***下载这些工具。
  •   也许我的概括太过概括,只是找不到确切的词。
    我阅读过当当网所有关于系统内核方面的书,包括外国技术专家的,翻译的,原创的,但是没有一本如本书一样,从其本身的逻辑出发,每一个知识点都服从一根骨架,那就是真正可实现和已实现的功能。通过阅读本书,感觉操作系统的细节原来如此简单又复杂。简单的是,每一个设计都是如此的合理与可行;复杂的是,每一个设计的算法都是多少人力,智慧的实现!
    也许本人并非科班出身,需要对每一个概念及设计的来龙去脉都有一个清晰,透切的了解,理解与赞同,如果读者同我一样,需要对系统一个总体的了解,并对每一个节点弄个透切,以本书作为教科书,自学Windows系统的高级技术,那么本书是目前为止最好的系统教材。
    如果你是系统方面的专业教授,那么,只有一件事,那就是反省自己。
  •   这本书深入浅出的剖析了windows代码各个模块大致的实现逻辑,看后会加深你对windows内核的理解从而写出更高效的在windows平台上运行的软件,如果你有潘老师那种研究用的代码盘那就更好了可以当配套书用了
  •   看了两月才做评论 内容很实际的一本好书
    对windows内核做了较为全面的解析,当然内核可不是一本书就能写完的,但是顺着本书的脉络读者应当能够对操作系统有一个全面的掌握,通过自己的拓展来进一步加深理解
  •   少有的对Windows的内核介绍得很详细很深入的书,对操作系统学习者很有帮助。
  •   本书详细讲解了Windows内核原理与实现,是一本国内作者写的优秀工具书,可以和国外书媲美。
  •   对想了解windows内核实现非常有用可以了解用户态程序各种内核对象作用以及进程线程创建过程 等等等等
  •   作为第一个以开源形式讲解windows内核原理的书,内容很适合有一定基础的读者,很全面
  •   中午刚拿到书,迫不及待看了一中午,的确好书。深度和讲解把握的很好,没有过多地纠缠复杂细节,讲解也很好,对于学习操作系统原理特别是Windows有很大帮助。
  •   接触windows内核有一年多,平时积累的内核知识都很零散,看了这本书后,把我以前零散的知识都串起来了
    真的非常棒!!!
  •   学习Windows内核必备的一本书
  •   我去北京微软玩的时候,微软给发了一本。结果回来的时候队友又在学校自己买了一本 ,重复了啊。不过好东西,收藏,学习windows怎么能少了这本书。
  •   与Windows核心编程一起看,慢慢体会提高
  •   因為是微軟亞洲研究院的研究人員編寫的一本書,所以對Windows的理解會比較深
  •   深入研究windows必备,虽然有的地方说的也不是很详细,毕竟windows太深了,书本能说的东西也有限
  •   这本书是我为公司的同事们和自己挑选的一本书,是学习操作系统底层非常值得阅读的一本书。希望我的评价对你来说没有夸张
  •   很不错的书,对于半路转行做IT的我,急需一本系统的梳理操作系统的书籍,这本很适合我。
  •   很不错的一本操作系统方面的书籍。学完操作系统后看不错。
  •   内核方面的经典书
  •   可以当手册用。学习操作系统还是很有用的
  •   很好的书,潘爱民所写,质量保证
  •   需要对计算机硬件 组成原理有一定了解
    最好是有一定的编程基础的人
    不然看了索然无味
  •   这是第一次看潘老师的书,非常的棒,行云流水,一口气读了几篇,受益良多。强烈支持潘老师,期待更好的作品...
  •   书很好,支持潘老师
  •   潘老师的书,不错
  •   对我老公来说,这本书很好。
  •   这本书不适合新手看!
  •   潘先生的书,无容置疑
  •   首先,书的外观和质量还可以,内容粗略看了一下,很不错。
  •   是我看过比较难的书,内容特别多。买了一年多,还没看完1/4,惭愧
  •   天马行空,不拘一格,但理解稍显晦涩。
  •   讲解的比较清晰,有助于理解
  •   内容充实,定价合理。比较实惠
  •   结构严谨,内容丰富,看后如沐春风,很爽。
  •   以前看了他翻译的书,这次看他写的书受益匪浅
  •   书到的很及时 正式需要的时候 哇哈哈哈~
  •   潘大的书就是好 高屋建瓴
  •   书很好 配送很快
  •   书不错,好好学习学习
  •   不错的书
    初学者都能看懂
  •   买来看看。好好学学
  •   作者本身水平很好,写得也很深入,值得学习。
  •   作为自学用的,还挺不错的
  •   还没看,听说不错,买了给点压力。
  •   好书,期待!
  •   潘老大的书先顶再看!
  •   挺难得,基本看不懂,现在还在一边扔着呢
  •   《Windows内核原理与实现》这本书,说实话还不错,需要仔细看才能理解其中精华
  •   总体不错,但是底层的细节记不住。。
  •   哈哈,这次收获极快,头天晚上9点买的,第二天下午5点多收到。对当当这次的发货速度,赞一个。头一次买潘老大的书,希望不要让我失望哦。
  •   书是不错的书 无奈还没达到那么高度 留作珍藏吧…
  •   适合有一定水平的人
  •   内容大同小异,帮别人买的,只是这本更新而已
  •   内容太多了,看不太懂,还在看
  •   书翻译的确实不错,但对初学者来说可能有点晦涩无味
  •   书不错,只是书里面有两页很脏
  •   字稍微小了,有光盘就更好了
  •   替朋友买的,评价还不错
  •   感觉不错 不过没时间看
  •   相信作者在这个领域的实力的,继续努力
  •   感觉过于执着于代码的解释,以至于逻辑性被减弱,阅读起来有些难度。也许更适合致力于看源代码的人。
  •   感觉对新手有些帮助吧,还不如自己看wrk来的快,语言很繁琐,另外纸张也不好
  •   原理与实现.第一本
  •   书中讲的内容太深奥了,还得找几本浅显点的书垫垫底,暂时得搁置起来了~
  •   帮老公买
  •   说实话,比较失望。价钱还不便宜。对国内的书籍挺失望的
  •   当当的换货过程太麻烦了,只好自己认了,以后买书还是得小心点啊。
    一下子连看的心情都没有啦
  •   肯定是好评
  •   纸版的看着舒服
  •   windows内核原理与实现
  •   搞活动买的,便宜实惠实用
  •   内核很重要
  •   还行,正版,没假
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7