Windows内核_IO系统

上传人:n**** 文档编号:50882867 上传时间:2018-08-11 格式:PPTX 页数:20 大小:1.49MB
返回 下载 相关 举报
Windows内核_IO系统_第1页
第1页 / 共20页
Windows内核_IO系统_第2页
第2页 / 共20页
Windows内核_IO系统_第3页
第3页 / 共20页
Windows内核_IO系统_第4页
第4页 / 共20页
Windows内核_IO系统_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《Windows内核_IO系统》由会员分享,可在线阅读,更多相关《Windows内核_IO系统(20页珍藏版)》请在金锄头文库上搜索。

1、Windows内核 原理与实现曹飞目录操 作 系 统 概 述Win dows 概 述进 程 和 线 程内 存 管 理I/O 系 统存 储 系 统系 统 服 务Windows I/O系统在现代操作系统中,I/O(Input/Output是计算机 完成各种功能的一个重要方面硬件层面上,处理器支持的接口技术是计算机系 统能够协 作运行的基础从软件层面上,操作系统必须提供相应的接口来 操纵这 些设备 的控制器应用程序不直接访问 外部设备 ,而是通过操作系 统来完成对设备 的访问提供了一套可扩展的I/O处理框架,从而允许第三 方硬件厂商编写专门 的系统模块来控制其硬件设 备目录I/O概述I/O管理器即插

2、即用管理器设备驱动 管理I/O处理I/O硬件技术I/O设备可以分为块设备 和字符设备处理器通过总线 和控制器打交道,不直接操纵设备 设备控制器有一些状态寄存器或者命令寄存器 处理器通过I/O端口或者内存映射I/O的方式访问控制器 控制器通过状态寄存器或中断方式来通知处理器大量动态数据交换的设备,采用直接内存访问(DMA, Direct Memory Access) 是一种控制器,既可以整个系统共享一个DMA控制器,也可以让一个设备 独占一个DMA控制器 需要处理器指定所读写数据在内存中的地址、数量,以及传输传输 方向(读/ 写)I/O软件技术要求 I/O软件的模型应该 是设备 无关的 针对 I

3、/O设备 的软件模型必须有足够的通用性 设备 的软件组件能够融入到系统的I/O处理框架中驱动 程序 设备 的软件组件通常称为设备驱动 程序 与设备 的通信是同步或异步方式 缓冲区管理 共享和独占设备和操作系统互补 设备驱动 程序为操作系统提供了必要的访问 硬件设备 的能力 同时也依赖于操作系统提供的软件功能,比如内存管理、错误处 理、同步互斥 机制Windows I/O系统结构I/O管理器 整个I/O系统的核心,定义了一个非常通用的框架,允许各种功能的设备驱 动程序容纳于其中即插即用管理器 在检测 到一个设备 加入或移除时,加载或卸载该设备 的驱动 程序电源管理器 负责 指示设备驱动 程序执行

4、电源状态的变化WMI(Windows管理规范)例程 系统的管理机制,而非I/O机制,定义了一个通用的事件报告框架,它采用提 供者-消费者模型,将提供事件和使用事件分离开设备驱动 程序 设备 程序是操作设备 的内核模块I/O管理器I/O管理器是Windows I/O系统的核心组件,它负责 建立起基本的 I/O框架结构,允许各种类型的驱动 程序纳入到这一框架结构中 一旦一个驱动 程序被加载并且其初始化历程被执行则该驱动 程序就已经融入内 核 代码进 入系统地址空间,获得初始执行权 负责 I/O请求的流程管理驱动驱动 程序对对象代表了一个设备驱动 程序被加载到系统中以后的 内部表示设备对设备对 象代

5、表了系统中的一个设备 ,它既可以是物理设备 ,也 可以是逻辑设备文件对对象代表了一个设备对 象被打开后的实例I/O管理器驱动 程序对象 驱动 程序初始化时,它会创建一个驱动 程序对象 驱动程序对象对应 至少一个设备对 象 同一个驱动 程序的设备对 象用单链 表连接起来 包含一组处 理例程设备对 象 每个设备对 象代表了系统中的一个设备 个设备对 象都必定有一个为它负责 的驱动 程序 设备对 象描述了一个特定设备 的状态信息 同一个设备栈 的设备对 象链接成一个双链表驱动 程序对象和设备对 象都是内核中的对象I/O管理器文件对象 代表一个设备对 象被打开后的实例 文件对象是I/O操作的基本抽象,

6、它将应用程序对设备 的 操作抽象成了对文件数据的读或写动作 真正的数据文件存储在设备对 象中,多个文件对象可以共 享一个设备对 象实现 数据共享,文件对象只是代表一个 设备对 象的一个已打开的实例 CreatFile(C中的fopen)来获得文件对象并得到一个句柄 ReadFile或ReadFileEx和WriteFile或WriteFileEx来读写文件对 象 CloseHandle来关闭文件对象,通过引用计数来维护 其生 命周期即插即用管理器即插即用(PnP)管理器也是I/O系统的一部分,它负责 在 内核中对硬件设备 的即插即用提供支持自动检测设备 的插入和移除,既可能在系统引导时 ,也可

7、 能在系统运行过程中动态 地分配硬件资源,包括中断向量、I/O端口、I/O寄存器 以及与总线 有关的资源,以避免设备 之间产 生资源冲突指示I/O管理器为设备 加载正确的驱动 程序,必要时通过一 个用户模式的应用程序允许用户指定或搜索驱动 程序向内核及应用程序提供有关设备 插入或移除的通知即插即用管理器系统总线 也必须提供即插即用能力在系统引导阶段即插即用的支持主要是由计算机的BIOS 来完成支持即插即用的设备能够标识 它们自身,并报告它们的 资源需求,当系统要进行资源重新分配时,这些设备可 以接受新的资源分配在操作系统中,即插即用能力主要通过设备 的驱动程序 来体现;总线的驱动程序和附载在总

8、线上的设备的驱 动程序相互协作,完成设备的列举和自动配置工作即插即用管理器在Windows中,对 硬件设备 的操纵 是通过设备驱动 程序来完成的设备 的即插即用 是通过驱动 程序 对象的addDevice 成员和 MajorFunction分发 例程来完成为了指示设备进 行状态转 移,即 插即用管理器向设 备发 送I/O请求即插即用管理器在系统 初始化 时,必 须列举 当前系 统中所 有的硬 件设备I/O系统 创建的 第一个 设备对 象是一 个无名 设备对 象,该设 备对象 是列举 的起始 点总线驱 动程序 提供硬 件设备 的信息 , HAL 本身也 被认为 是一个 总线设 备一个设 备对应

9、一个节 点 (DEVICE _NODE), 所有的 设备组 成一个 设备树每个设 备节点 上必有 一个设 备对象 , PDO(Phy sical Device Object)为了管 理该设 备,即 插即用 管理器 家宅一 个功能 驱动, 并创建 一个功 能设备 对象 FDO设备驱动程序设备驱动 程序是操纵设备 的内核模块,I/O管理器、即插即 用管理器和电源管理器都需要与设备 的驱动 程序打交道设备驱动 程序依据其用途不同,可以分为三类 即插即用驱动 程序,也称为WDM(Windows Driver Model) 内核扩展驱动 程序,也称为非即插即用驱动 程序 文件系统驱动 程序WDM又分为三

10、类 总线驱动总线驱动 程序,总线驱动 程序管理一个总线设备 功能驱动驱动 程序,管理具体的设备 过滤驱动过滤驱动 程序,位于功能驱动 程序之上或之下,它的用途是监视 一个设备 的I/O请求以及这些请求的处理情况设备驱动程序驱动 程序本身是一个动态链 接库,扩展名为. sys驱动 程序的主入口函数也被称为初始化例程, 这是驱动 程序被初始化时首先获得控制权的代 码 驱动 程序与I/O系统之间的接口实际 上是驱动 程 序实现 的一组C风格的函数驱动 程序本质上是以上这些接口例程的集合I/O处理1. 子系统调 用I/O系统服务,打开一个有名字的文件2. I/O管理器调用对象管理器查找这个文件并检查这

11、 个子系统是否有打开这个文件对象的权限3.找到对应 的文件对象 4. I/O管理器为文件打开请求的IRP初始化分配内存5. I/O管理器调用文件系统驱动 程序,向它发送IRP6. 各级驱动 程序处理IRP完成这个I/O操作请求7. 驱动 程序在IRP中设置I/O状态块 ,操作是否成功或错误 代码8. I/O管理器从IRP中获得I/O状态,通过被保护的子系统将状态信息返回到原始调 用者处9. I/O管理器释放已经完成任务的IRP10. 如果操作成功,I/O管理器返回这个文件对象的句柄到子系统;否则返回相应的失 败状态。I/O处理I/O请求先陷入到系统核心,从上依层次向下将指令传到设备,执行结果依

12、 次向上返回到调用进程切换回用户态在Windows内核中的I/O请求基本上是通过IRP完成的IRP是由I/O管理器发出的,I/O管理器是用户态与内核态之间的桥梁一个IRP是从非分页内存中分配的可变大小的结构,它包括两部分:IRP首部 和辅助请求参数数组(栈单元)I/O请求的目标是一个设备对 象,直接指向一个文件对象(OriginalFileObject );创建前定位到关联的设备对 象,找到设备栈 ,获取栈深,确定后面栈 单元的数目I/O处理I/O管理 器接受 I/O请求 的统一 接口函 数是 IoCallDri ver应用程 序通过 创建一 个文件 对象, 向设备 对象发 送I/O请 求驱动

13、 程 序接受 到I/O请 求后, 根据分 发例程 ,发送 I/O命令 ,传输 数据数据传 输完成 后,发 送一个 硬件中 断来在 驱动 程 序插入 一个DPC 历程来 通知I/O 管理器 完成请 求I/O管理 在发起 者线程 中插入 APC例程 或直接 返回, 完成I/O 请求的 全部过 程涉及到 多个驱 动程序 处理一 个I/O请 求,每 个驱动 程序只 负责 一 部分功 能总结I/O管理器建立WindowsI/O模型,定义了一套可 扩展的驱动 程序框架即插即用管理器是Windows管理硬件的核心模 块,利用总线驱动 程序列举总线 上的设备 , 并根据设备 信息来加载和启动驱动 程序Windows完全支持异步I/O处理,I/O请求完成后 ,通过I/O管理器来通知请求线程该I/O请求的 结束

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号