Windows内核原理与实现

潘爱民

出版时间

2010-04-01

ISBN

9787121105289

评分

★★★★★

标签

编程

书籍介绍

本书从操作系统原理的角度,详细解析了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下载这些工具。

AI导读
核心看点
  • 基于WRK源码深度解析Windows内核机理
  • 涵盖进程、内存、I/O等核心系统部件实现
  • 结合框架图与关键细节,兼顾宏观与微观
适合谁读
  • 对Windows底层原理有好奇心的技术爱好者
  • 计算机专业师生及系统软件工程师
  • 希望编写高效软件的开发人员
读前提醒
  • 需具备体系结构、汇编及C/C++基础
  • 内容理论性强,建议配合源码对照阅读
  • 可从第三章进程线程切入,不必逐页死磕
读者共识
  • 国内少有的基于源码的Windows内核好书
  • 示意图多逻辑清晰,但部分读者觉枯燥
  • 适合理论参考,实战深度略逊于Internals

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "对硬件进行抽象是操作系统的本质任务,而硬件抽象的一个极端是硬件虚拟化。硬件虚拟化的做法是,在给定的硬件平台上运行一个控制程程(称为宿主软件,host software),该程序为一个或多个客体软件(guest software)建立一个虚拟环境,此模拟环境称为虚拟机(virtual machine)。所以,硬件虚拟化也称为虚拟机,而控制程序称为VMM(Virtual Machine Monitor )。 在Intel平台上,VMware在不利用硬件特性支持的情况下,使用“二进制代码翻译”技术自动修改x86软件中的指令,达到了完全虚拟化。"
  • "ntldr 构造了一个类型为LOADER_PARAMETER_BLOCK 的参数块,把与系统初始化相关的参数信息包装到此结构中,然后将控制权传递给内核模块ntoskrnl.exe 的入口函数。因此,内核的初始化从内核模块的入口函数开始,WRK 包含了内核初始化过程的绝大多数代码。此入口函数为KiSystemStartup,它是一个汇编函数,位于base\ntos\ke\i386\newsysbg.asm 文件中。 内核的初始化主要是内核各个组件的初始化,但由于这些内核组件之间有紧密的耦合关系,所以它们的初始化并不是简单地顺序执行初始化。为了解决在初始化过程中的相互依赖性问题,内核的初始化分两个"
  • "KeStartAllProcessors 函数的代码位于base\ntos\ke\i386\allproc.c 文件中,它设置好前文提到的位于KiSystemStartup 函数结束处的屏障KiBarrierWait , 然后依次调用KiInitProcessor 函数来启动每个处理器。KiInitProcessor 函数为每个处理器构造一份状态信息(KPROCESSOR_STATE 结构),然后调用HalStartNextProcessor 函数启动该处理器。处理器状态信息是通过调用KiInitProcessorState 函数来构造的,在该函数的代码中,我们可以看到,新处理器的起始指令地址"
  • "操作系统是一种特殊的软件,它的职责是管理硬件资源,同时为上层应用软件提供各种服务。"
  • "因为任务的数量可能超过CPU或核的数量,所以,多个任务可能共用同一个CPU或核,这就需要有一种硬件机制能够让操作系统在不同的任务之间实现切换,这是任务调度的硬件基础。通常,计算机提供的时钟中断可以让操作系统很方便的做到这一点,也就是说,每隔一定的时间,硬件系统会触发一个中断;操作系统截获此中断,按照某种算法暂停当前正在执行的任务,并选择一个新的任务,从而实现任务的切换;到下一个时钟中断到来时,再继续这样的切换过程。因此多个任务可以在一个CPU或核中被轮流执行。"
  • "除了计算资源和内存资源的管理以外,操作系统对其他资源都通过I/O来管理"
  • "为应用程序提供执行环境。"
  • "每个进程有它自己的内存空间,并且无法直接访问其他进程的内存空间。"
作者简介
潘爱民,微软亚洲研究院,研究员。从1994年开始在北京大学计算机研究所从事计算机应用方向的研究和开发工作,2000年破格晋升为副研究员。2002年担任北京大学计算机研究所信息安全研究室主任。2004年加入微软亚洲研究院,从事操作系统与网络安全方向的研究工作。 潘爱民长期从事软件技术的研究和开发工作,撰写了大量软件技术文章,并著译了多部经典计算机图书,包括《COM原理与应用》(1999年出版)、《Visual C++技术内幕》(第4、6版)、《C++ Primer中文版》(第3版)、《计算机网络》(第4版)以及《深入解析Windows操作系统》(第3版)等。潘爱民曾经为北京大学计算机科学技术系和软件学院开设多门研究生课程,最近三年为清华大学软件科学实验班讲授《程序设计与算法基础》课程,深受学生好评。 潘爱民的研究领域包括软件设计、计算机网络、信息安全、操作系统等,目前主要从事Windows操作系统和Internet安全方向的研究工作。
目录
第1章 概述 1.1 操作系统基础 1.1.1 计算机系统的硬件资源管理 1.1.2 为应用程序提供执行环境 1.2 学习操作系统之必备知识 1.3 WINDOWS操作系统发展历史 1.4 WINDOWS内核的版本 1.5 操作系统的研究与发展 1.6 本章总结 第2章 WINDOWS系统总述第3章 WINDOWS进程和线程第4章 WINDOWS内存管理第5章 WINDOWS中的并发和同步第6章 WINDOWS I/O系统第7章 WINDOWS存储管理第8章 WINDOWS系统服务第9章 WINDOWS内核高级话题附录
用户评论
WRK学习必备之书,还有一本是windows internel
作为一本技术书我不知道要签名干什么,但却竟然有了! 如果想脚踩在硬件之上仰望操作系统内部,这本书是个很好的选择;作为阅读WRK的参考书也不错,只是颗粒粗了点。
这本是基于WRK写的,比毛德操那本基于CentOS的起点要高,但是没后者读起来通顺易懂,技术牛人并不一定善于传播知识
开始从读第三章看
底层高手必读
比起毛德操那本,关于system mechanism反而语焉不详了起来,确实说到了一些只有WRK上面才能看到的Windows nt内核的“专有”实现,但是以自己现在的眼光来看还不如直接读WRK的源码
Windows落伍了
用了多年Windows,都停留在表面,好多问题都不主动解决。偷过的懒都会变成打脸的巴掌,这次主动看了Windows这方面的书。书挺不错的,不属于那种傻瓜书的范畴,建议有兴趣的同学没事翻翻,不过篇幅真的挺大的
不适合我
纸质书好像买不到了,淘宝上二手书都很贵
下载
收藏