《Windows内核原理与实现》的进度

Windows内核原理与实现》的进度

去年1月份,我曾经写到了,我正在写一本讲Windows内核技术的书,一年过去了,书还没有出来。期间常有读者问起这本书的情况,现在我介绍一下这本书的进展情况。

这本书的全部初稿0912月初已经完成,将近700页,不算厚,也不薄。内容比较扎实,把Windows内核中重要的话题都讨论了。现在我正在复查,已经把一部分交给编辑审稿了。

由于编审和排版流水线作业,所以,可望这本书在45月份能面市。

 

附上内容结构和配套工具的介绍:

本书内容简介

本书共包括9章正文内容和两个附录。内容介绍如下:

1章介绍了操作系统的基础概念、Windows操作系统的发展历史、Windows内核的发展,以及学习操作系统的一些前提知识,最后还介绍了操作系统的研究进展。

2章从总体上介绍Windows操作系统。首先讨论现代操作系统的基本模型,以及一些重要部件的职责;然后讨论Windows的总体结构,以及有关WRK和相应源代码的一些说明。为了让读者对Windows内核有一个初步的认识,这一章还介绍了内核中的一些基本概念,包括进程、线程、内存管理、中断、异常、同步等,然后细致地讨论了Windows内核中的公共管理设施,包括对象管理器、配置管理器、事件追踪(ETW)和安全性管理。之所以在这一章中介绍这些公共设施,是为了让读者在学习本书后面章节中的核心概念和机制时,可以方便地直接引用这些管理设施中的功能。这一章的最后还介绍了Windows 引导过程,包括内核初始化和用户会话建立过程。

3章讨论Windows中的进程和线程管理。首先讨论了进程和线程的基本概念,然后描述了Windows中有关进程和线程的重要数据结构,列出了这些数据结构的定义并解释了其中的域的含义。接下来介绍了Windows进程中的句柄表结构、进程和线程的创建过程和结束处理,以及系统的初始进程和线程。这一章后面还介绍了Windows中的线程调度,包括时限管理、环境切换、线程状态转移等内容。

4章介绍Windows中的内存管理。首先介绍了一般性的内存管理知识,包括页式内存管理和段式内存管理。然后介绍Windows的系统内存管理,涉及到系统地址空间初始化、换页内存池和非换页内存池的管理算法,以及系统PTE区域的管理算法。紧接着介绍了进程虚拟地址空间的内存管理,包括地址空间的创建和初始化、虚拟内存的管理数据结构,以及虚拟内存中的内存区对象(section object)。然后讨论了Windows的页面交换机制和物理内存的管理,最后讨论了Windows的工作集(working set)管理。

5章讨论Windows中的并发和同步机制。这一章首先介绍了有关进程和线程同步的基础知识,然后介绍了Windows中的中断和异常处理机制,包括IRQL(中断请求级别)和中断对象、DPC(延迟过程调用)和定时器管理、APC(异步过程调用),以及异常分发过程。接下来分别介绍了两种类型的同步机制:高IRQL时的同步处理,以及基于线程调度的同步机制。Windows支持大量的同步语义,而且很多同步语义被导出成系统服务,可供应用程序使用。

6章讲述WindowsI/O模型。首先讨论了Windows I/O系统的三个重要部件:I/O管理器、即插即用管理器和电源管理器,介绍了设备驱动程序的初始化,驱动程序对象、设备对象和文件对象的数据结构,设备的列举过程,以及Windows中电源I/O请求的处理过程。在此基础上,这一章还详细地讨论了设备驱动程序,包括驱动程序分类、驱动程序结构模型,并通过一个例子(toaster)来说明驱动程序设备栈结构。最后,这一章介绍了I/O处理,包括IRP(I/O请求包)的定义、I/O请求的处理过程以及I/O完成处理。

7章讨论Windows的存储体系。这一章分别讨论了Windows的缓存管理器、卷的管理以及文件系统。缓存管理器将文件系统和内存管理器有机地结合起来;而文件系统和卷管理驱动程序以及磁盘管理驱动程序联合起来形成了一个存储栈,为Windows提供外部存储服务。第7.4节讨论了文件系统的过滤机制,以及三个文件系统的实现:RAW(由内核模块提供)、FATNTFS

8章讨论Windows的系统服务。这一章首先描述了Windows用户模式代码调用内核模式系统服务的详细过程,然后介绍Windows的系统服务分发表的结构。随后,这一章还介绍了三个重要的跨进程通讯系统服务:LPC(Local Procedure Call)、命名管道(Named Pipe)和邮件槽(Mailslot)

9章介绍一些高级话题,重点讨论了Windows中的网络模型、Windows子系统,以及Windows的内核日志。这一章最后也介绍了Windows最新版本(Windows VistaWindows Server 2008Windows 7)中的一些重要变化。

本书正文之后是两个附录。附录A讲述了如何编译WRK,以及在虚拟机环境中运行和调试WRK。附录B介绍了一个基于WRK的学生实习项目:KInjectToolKitKInjectToolKit允许把一段用户模式代码插入到内核模式下运行,从而提供了在响应内核模式事件时执行用户指定代码的能力。

 

本书的配套工具

为了配合本书中的内容讲解,本书也特别提供了一组工具,读者可以通过本书的Web主页下载到这些工具,它们不仅可以运行在WRK内核的系统中,也可以在其他版本的Windows系统上运行。下面是这一组工具的简单介绍:

·        ProcMon,进程和线程监视工具。它可以实时地显示当前每个处理器正在执行哪些进程和线程。这些信息还可以被转储到一个文本文件中供进一步分析和查看。

·        MemMon,内存监视工具。它可以显示当前系统内存空间和每一个进程的用户空间的内存布局。在进程内存空间,MemMon能够显示进程中的模块、堆、栈等信息。

·        DPerfLite,一个可以揭示线程间同步关系的工具。它记录了当前系统中与同步有关的内核操作,允许用户在一个图形界面中直观地观察这些操作,并检查线程之间的各种同步关系。

·        IRPMonIRP完成情况的监视工具。它在内核中记录下每一个I/O请求的完成操作,并且由IRPMon用户模式程序定期地从内核中获取这些纪录,并显示在一个列表窗口中,供用户检查或查询。

·        SdtViewerSDT(服务描述符表)显示工具。此工具可以显示出当前系统中的SDT表;如果有符号表支持的话,它也能够显示Windows子系统的SDT

 

 

没有更多推荐了,返回首页