Windows并非一个开放源码的操作系统,但正如上一章所提,Microsoft开放了一份以Windows XP x64和Windows Server 2003 SP1为基础的内核源代码,它可以编译和运行,作为教育科研机构的教学实践和研究的平台使用,称为WRK(Windows Research Kernel,Windows研究内核)。

WRK重要目标是辅助教学,让计算机专业的学生能够通过Windows内核源代码来理解和掌握现代操作系统中的基本概念和各种机制。

1,WRK包含以下

WRK内核源代码,涉及进程、线程、内存管理、执行体、对象管理器、缓存管理器、本地过程调用(LPC)、注册表、I/O管理器、安全引用监视器,以及线程调度、APC(异步过程调用)/DPC(延迟的过程调用)、中断以及异常处理等。随源码一起提供的还有响应的编译工具,因此,无须额外的编译器即可将WRK编译成Windows Server 2003 SP1的可执行内核。

NT设计文档。这是一组早期的文档,但是,通过阅读这些文档一方面可以清楚地理解Windows NT背后的原始设计思想,另一方面也可以看出Windows在这十多年中是如何发展和进化的。这些文档涵盖了Windows操作系统的方方面面,甚至包括文件系统设计大纲和内核的调式结构等。

软件Virtual PC 2007,以及Windows Server 2003 SP1的虚拟机映像,此虚拟机系统已配置好WRK内核。利用此Virtual PC 2007和WRK系统映像,您可以方便地调试和跟踪WRK中的代码。

课程资源CRK(Curriculum Resource Kit),包括一整套Windows操作系统讲义,共15个单元。每个单元又包含一些专题讲义、习题和上机练习题。对于以Windows为教学和实验平台的课程,这是一份非常有帮助的课件。

ProjectOZ源代码。ProjectOZ是一个利用Windows内核的NTAPI建立起来的CPU、MMU和陷进机制的操作系统实验环境,其核心是CPU、MMU和陷进机制的SPACE抽象。由于此实验平台的下面是一个真实的Windows操作系统在处理和操纵硬件,所以,学生们更有机会学习和感受操作系统算法和数据结构的复杂性。

然而,Microsoft目前并非对所有人开放以上材料,而是以教学和科研为开放目标,仅限于大学的教职工使用。参见:

2,WRK源代码说明

Windows的内核模块文件是ntoskrnl.exe,位于Windows\System32目录下,它包含了Windows体系结构中的执行体和内核(微内核)部分。WRK提供的源代码可以编译得到这一内核模块文件,在WRK编译环境下针对Intel x86处理器的默认生成文件名为wrkx86.exe。Windows的引导选项/kernel可以指定不同于ntoskrnl.exe的内核模块文件。表2.2列出了WRK源代码的目录结构及其对应的内核组件。

WRK包含了编译ntoskrnl.exe内核模块所需要的绝大部分代码,未公开部分的代码主要包括即插即用设备管理、电源管理、设备驱动程序校验器和虚拟DOS机的实现。为了编译WRK源代码以及得到实际可运行的内核模块,缺失的这部分被以二进制目标代码的形式包含在WRK中,位于base\ntos\BUILD\PREBUILT\i386(或base\ntos\BUILD\PREBUILT\amd64)目录。该目录还包含了其他一些需要静态链接的目标文件。尽快如此,WRK对于学习和理解Windows的工作机理仍然是一份极佳的资源。

WRK的代码是当时最新的Windows产品代码中摘出来的,可以编译并运行于Windows Server 2003 SP1(x86处理器版本)和Windos XP SP2(AMD64版本)系统中,其内核版本为5.2。WRK代码与产品代码几乎一致,主要的变化在于去掉了对服务器的支持,比如与Intel IA 64有关的代码。

Windows源代码一致性较好,非常易读。代码本身的逻辑以及各种标识符基本上是自解释性的,重要的函数头部都有详细的注释说明,重要的代码片段也有专门的注释。总体上,代码组织较为清晰,如表2.2所示。内核模块内部的每个组件都提供了一些接口函数供其他组件调用,也有一些函数供该组件内部使用。表2.3列出了一些常用的标识性前缀。有一些组件内部函数也有规律可循:前缀第一个字母后面跟一个i,或者在前缀后面跟一个p,这里i代表internal,即内部的;p代码private,即私有的。

即使没有代码,也能够通过本书对Windows内核原理有很深的了解,远比代码更加的直观和有效

Windows内核原理与实现之Windows研究内核(WRK)相关推荐

  1. Chromium内核原理之网络栈HTTP Cache

    <Chromium内核原理之blink内核工作解密> <Chromium内核原理之多进程架构> <Chromium内核原理之进程间通信(IPC)> <Chro ...

  2. 读书笔记之《Windows内核原理与实现》

    最近学习<Windows内核原理与实现>发现其博大精深,粗略过了一遍,很多东西比较茫然,看书之余把书中涉及的函数,结构,全局变量的所在页数总结出来,便于以后查阅. 由于半自动半手工,难免有 ...

  3. Windows内核原理-同步IO与异步IO

    目录 Windows内核原理-同步IO与异步IO 背景 目的 I/O 同步I/O 异步I/O I/O完成通知 总结 参考文档 Windows内核原理-同步IO与异步IO 背景 在前段时间检查异常连接导 ...

  4. 微软内核工程师:ReactOS 剽窃了 Windows 研究内核代码!

    "绝对不可能有人从零编写出这样的代码." 作者 | Tim Anderson 译者 | 弯月,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 以下为译文: React ...

  5. Windows内核原理与实现之 NDIS(网络驱动程序接口规范)

    文章摘录自<Windows内核原理与实现>一书. 在Windows的网络栈中,网络协议与网络适配器是分离的,协议驱动程序并不针对特定的网络适配器而设计,然而,当协议驱动程序正真运行时,它必 ...

  6. 《Windows内核原理与实现笔记》(二)注册表和配置管理器,事件追踪,安全性管理

    注册表和配置管理器 Windows系统很多组件都是可以配置的,内核组建通常支持一些参数,甚至有些完全依赖于系统配置信息.例如I/O管理器和即插即用管理器在初始化阶段根据系统设置来例句和加载设备驱动程序 ...

  7. 漫谈兼容内核之十七:再谈Windows的进程创建

    在漫谈之十中.我根据"Microsoft Windows Internals 4e"一书第六章的叙述介绍了Windows的进程创建和映像装入的过程.但是,由于缺乏源代码的支撑,这样 ...

  8. windows进程管理器_面向Windows,Linux,Mac ,安卓, 木马,密码破解内存提取基于KPCR结构的技术研究...

    Windows内存分析原理 内存镜像存储的是二进制数据,内存取证分析的任务就是从这些貌似毫无意义的二进制数据中找到系统的运行信息.这些二进制数据从根本上说,其来源都是操作系统的内存分配.为何分配.如何 ...

  9. 枚举windows进程模块的几种方法—PEB内核结构详解

    1. 引言 在诸多的场景中(例如软件测试,软件安全研究等领域)经常需要分析在目标进程中        具体加载了哪些模块(DLL),以及所加载的模块的信息(如模块基地址,映射文件大小等).获取这win ...

  10. 在c#使用Windows IOCP(完成端口)编程研究

    一:概述 (1)IOCP是什么呢? 它就是Io   Completion   Port的缩写,它就是MS的内核调用机制.    因为在硬件里,与驱动程序打交道都是通过协议栈进行的,并且是通过发送包请求 ...

最新文章

  1. Mysql:查询当天、今天、本周、上周、本月、上月、本季度、本年的数据
  2. windows家庭版 启用组策略
  3. lnmp的搭建及php加速
  4. 用javascript伪造太阳系模型系统
  5. JVM-虚拟机栈详解 附面试高频题 (手画多图)!!!深入浅出,绝对值得收藏哈!!!
  6. springboot配置文件的加载顺序(./config目录优先级最高)
  7. ARC115D-Odd Degree【dp,欧拉回路】
  8. php生成16位不重复随机码,PHP n个不重复的随机数生成代码
  9. 开源干货!.NET Core + Vue.js通用动态权限(RBAC)管理系统框架[DncZeus]开源
  10. 7 FI配置-财务会计-定义字段状态变式(总账科目组)
  11. zabbix 4.0监控mysql_从零开始搭建 Zabbix 4.0
  12. 详述支付路由的设计方案
  13. 扇贝有道180929每日一句
  14. Python错误篇 | UserWarning: findfont: Font family [‘SimHei‘] not found. Falling back to DejaVu Sans.
  15. canvas实现背景图和二维码合并-生成海报
  16. 「课程」微观经济学-北京大学光华管理学院
  17. vue之使用vue-video-player实现实时视频流播放
  18. 思考与总结:我对管理岗位的思考
  19. 像素值为什么归一化?归一化作用?
  20. Codeforces Round #616 (Div. 2)B. Array Sharpening

热门文章

  1. 将超星图书转成PDF文档
  2. Wifite批量破解WEP/WPA/WPS
  3. Android:简易计算器
  4. wsdl2java validate_使用cxf wsdl2java进行客户端证书身份验证
  5. sql server2008密钥,sql server 2008 r2 序列号密钥
  6. php 3cschool,W3Cschool中的PHP测试题题目以及答案
  7. JAVA 函数的重载
  8. git可视化工具——GitKraken
  9. 项目管理-Visio可以绘制甘特图编辑操作极方便
  10. 手机木马以及移动安全