-
2018-02-03 17:16:57
本文章是作者本人在学习《windows原理与实现》一书时的一些总结和笔记
第二篇:windows系统总述
2.windows内核的基本概念
2.1处理器模式
intelx86处理器:0-最高级特权,cpu处在内核模式,可以访问当前进程的地址空间和系统空间;3-最低特权,处在用户模式,只能访问当前进程的地址空间。2.2内存管理
共享的系统地址空间和私有的进程地址空间。windows使用页表机制来访问虚拟内存,一旦页表项不在物理内存中,触发页面错误异常,将对应页面换入物理内存。2.3进程和线程管理
进程和线程的核心机制在微内核的中实现,管理机制在执行体中完成。windows实现了基于优先级的抢占式线程调度算法,每 个线程都有一个基本优先级和动态优先级,优先级为0-31直接,0为系统优先级,最低,1-15为动态优先级,线程的动态优先 级可以在此范围内微调,16-31为实时优先级,用于一些实时处理任务。2.4中断和异常
中断时处理器与外部设备打交道的途径,而异常时处理器的正常指令流在执行过程中产生的一些特殊事件。Intel x86都利用中 断描述表(IDT),将每个中断或异常与一个处理该中断或异常的服务例程联系起来。在此硬件机制的基础上,通过一种中断对象机 制,允许设备驱动程序为特定的中断向量添加中断服务例程(ISR),一个中断向量允许连接多个中断对象(一种封装了中断服务 例程的内核对象)软件中断优先级的问题:中断请求级别,使用0-31来表示,数值越大优先级别越高;处理器在运行时有一个当前中断请求级别 中断源的中断请求级别等于或低于当前级别,则该中断被屏蔽。windows为所有需要处理的异常都提供了异常处理器(即异常处理例程),当代码发生异常时,异常分发器会对异常进行分发, 根据处理器模式的不同,分发过程也不同。2.5同步
根据执行环境中的中断请求级别(IRQL)大于APC_LEVEL(1,表示异步过程调用)或者等于PASSIVE_LEVEL(0,普通线程) 可以将同步机制分为:不依赖于线程调度同步机制和基于线程调度的同步机制。
更多相关内容 -
windows内核原理与实现 配套工具
2019-03-30 10:48:36《windows内核原理与实现》是一本比较好的学习系操作系统的工作原理的一本书,值得参考。 -
WINDOWS内核原理与实现(jb51.net).pdf
2019-05-06 20:39:23WINDOWS内核原理与实现(jb51.net).pdf -
《Windows内核原理与实现》书内工具
2018-10-03 23:03:07《Windows内核原理与实现》书内工具 包括DPerfLite,EventHandler,IRPMon,MemMon,ProcMon,SDTViewer 等相关工具 -
WINDOWS内核原理与实现(带书签版)-潘爱民.pdf
2021-06-29 16:51:24WINDOWS内核原理与实现(带书签版) -
Windows内核原理与实现.rar
2019-05-26 13:48:13Windows内核原理与实现.rar -
WINDOWS内核原理与实现
2016-07-05 17:33:24本书介绍Windows内核的基本原理,包括进程和线程、内存管理、线程间同步、I/O模型和Windows的存储模型。对于每一部分内容的介绍,首先从现代操作系统的基本原理出发,然后结合Windows公开的源代码WRK来介绍Windows中... -
Windows内核原理与实现
2016-04-28 10:46:17本书介绍Windows内核的基本原理,包括进程和线程、内存管理、线程间同步、I/O模型和Windows的存储模型。对于每一部分内容的介绍,首先从现代操作系统的基本原理出发,然后结合Windows公开的源代码WRK来介绍Windows中... -
Windows内核原理与实现 微软对高校提供的系统源码
2018-12-21 20:04:30微软对此光盘虽免费索取的政策,但非大专院校教师几乎不可获得。分享给正在读《Windows内核原理与实现》此书的人。可以上机练习了。 -
Windows内核原理与实现1
2022-08-04 00:13:29本章也将介绍 Windows 系统中的基本概念以及 Windows 内核中的一些公共管理设施,这些知识不仅有助于读者全面认识 Windows 操作系统,而且也便 -
Windows内核原理与实现.潘爱民
2018-05-14 11:35:07Windows内核原理与实现.潘爱民Windows内核原理与实现.潘爱民Windows内核原理与实现.潘爱民 -
Windows内核原理与实现高清pdf版
2011-10-27 10:42:33在内容选取方面,本书侧重于Windows内核中最基本的系统部件,同时也兼顾到作为一个操作系统的完整性,所以,本书也介绍了像存储体系、网络、Windows环境子系统等,这些虽然并不位于内核模块但却支撑整个Windows... -
Windows内核原理与实现附带工具
2012-03-27 19:49:22书中提到的所有工具, DPerfLite IRPMon MemMon ProcMem STDViewer EventHandler -
Windows内核原理与实现之Windows研究内核(WRK)
2019-11-26 23:39:54Microsoft开放了一份以Windows XP x64和Windows Server 2003 SP1为基础的内核源代码,它可以编译和运行,作为教育科研机构的教学实践和研究的平台使用,称为WRK(Windows Research Kernel,Windows研究内核)。...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内核原理与实现.潘爱民.完整标签版
2015-06-20 18:08:57网上的很多版本都是没有标签的,而这个版本是完整标签,完全对应目录,非常方便查阅。 -
Windows内核原理与实现.PDF
2012-03-24 11:15:41潘爱民大师的著作,本人看过后感觉对于操作系统的理解有了很大的提高,结合windows的内核的WRK源代码来解释windows的内核原理 很好的书籍 分享给大家 -
Windows内核原理与实现.pdf
2011-05-27 21:48:27Windows内核原理与实现.pdf Windows内核原理与实现.pdf Windows内核原理与实现.pdf -
WINDOWS内核原理与实现].潘爱民.扫描版.pdf
2012-04-01 18:22:25本书从操作系统的原理角度组织材料,深度戒心了Windows内核如何实现现代操作系统的各个关键部件,并直接以Windows内核源代码(WRK,Windows Research Kernel)为参照。在内容选取方面,侧重Windows内核中基本的系统... -
Windows内核原理与实现 潘爱明
2018-06-09 11:35:19Windows内核原理与实现 潘爱明 -
Windows内核原理与实现.part2
2013-09-24 14:02:25Windows内核原理与实现.part2 第二部分,如有侵权行为,请联系原作者。 -
Windows内核原理与实现:Windows子系统
2019-11-19 23:32:13用户登录(即使是终端服务)到Windows中时,操作系统为用户建立一个会话,每个子系统会话都有自己的会话空间,属于某一会话的资源将从该会话空间中分配。 通常我们运行的图形界面应用程序运行在默认桌面上。...用户登录(即使是终端服务)到Windows中时,操作系统为用户建立一个会话,每个子系统会话都有自己的会话空间,属于某一会话的资源将从该会话空间中分配。
通常我们运行的图形界面应用程序运行在默认桌面上。交互式窗口站有独立的剪贴板、键盘、鼠标、显示器等,在它们三个桌面中,任一时刻只有一个是激活的,输入输出设备归激活的桌面所有。
Windows子系统会话有一个RIT(Raw Input Thread)线程,负责从输入设备读取原始的输入事件,然后生成消息,寄送到正确的线程消息队列中。
DirectX(包括DirectDraw和Direct3D)允许应用软件绕过GDI图形引擎直接操纵显示器硬件。
进程(process)定义了一个执行环境,包括自己私有的地址空间、一个句柄表,以及一个安全环境;线程(thread)是一个控制流,有自己的调用栈(call stack),记录了它的执行历史,每个线程代表一个指令执行序列,同时也是一个调度单元。Windows是一个多进程操作系统环境,但它对处理器资源的分配是按照线程来进行调度的。
Windows内核结构中,进程和线程的核心机制是在微内核中实现的,而管理机制是在执行体中实现的。这正符合“机制与策略分离”的原则。线程调度由微内核完成,而线程和进程的创建、各种管理属性的设置由执行体来完成。
Windows内核除了接受来自应用程序的系统调用服务,自己也有一些线程用于各种用途,这些线程运行在一个特殊环境中,称为System进程。System进程的线程称为系统线程,其中有一组系统辅助线程(system worker thread)代表了操作系统或其它应用进程来完成一些特殊工作。
设备驱动程序或执行体可以在调用者进程中创建线程,也可以在System进程中创建线程。或者,也可以不创建任何线程,而是调用执行体函数ExQueueWorkItem或I/O管理器函数IoQueueWorkItem向系统辅助线程请求得到它们的服务。这两个函数负责把一个工作项目(WorkItem)放到一个队列中,而系统辅助线程从此队列提取工作项目并执行工作项目中指定的一个例程。因此,工作项目中的例程是在System进程的环境中执行的。
系统辅助线程实际是个线程池,Windows系统初始化时创建了一定数量的辅助线程而且随着辅助线程的负载变化,执行体也会动态创建一些辅助线程。
几个重要系统进程:
·系统空闲进程(Idle),PID为0,每个处理器或核对应一个线程
·System进程,PID为4,包含了内核模式系统线程。系统辅助线程,以及执行体和驱动程序通过PsCreateSystemThread创建的线程都在System进程中
·会话管理器(Session manager, smss.exe)是Windows系统中第一个创建的用户模式进程。它在Windows启动过程中承担了一些重要步骤,创建环境变量,启动子系统进程csrss.exe和登录进程winlogon.exe等。
·登录进程(winlogon.exe)。处理交互用户的登录和注销。
·Windows子系统进程(csrss.exe)。
·本地安全权威子系统进程(lsass.exe)。负责本地系统安全策略
·Shell进程(explorer.exe)。Windows的默认Shell(图形界面Shell,提供比如菜单、任务栏、资源管理器窗口等)
·服务控制管理器(services.exe)。管理系统服务