- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows IO处理流程浅析
Windows I/O处理流程浅析黄贝宁
Windows操作系统中(以Windows 2000/XP为例),一个典型的I/O请求要通过一系列复杂的操作实现。
讨论Windows 系统的I/O操作的流程之前,不得不提及Windows的I/O系统结构。简单说来,从虚拟机的角度来说,Windows的I/O系统是一个层层封装的虚拟机。Windows在系统核心中,对设备进行了数层封装:直接构建在设备上的是硬件抽象层(HAL),在此之上的是设备驱动程序,然后是I/O系统(I/O管理器、电源管理、WDM、WMI例程等);同时还有许多在用户态运行的系统服务如WMI服务,方便应用程序管理I/O设备。正因为有这种复杂的层次结构,统一管理、兼容成百上千不同种类的系统设备才成为可能。各个抽象层次把硬件结构上的多样性屏蔽掉,使用户能够按照一个统一的方式进行I/O操作。由于这里主要讨论I/O处理流程,I/O系统的结构不做细致阐述。
以下以打开一个文件对象的过程为例,说明Windows I/O请求的处理流程:
打开文件对象(File Object)
)create请求。
I/O管理器调用文件系统驱动程序,向它发送IRP。文件系统驱动程序访问它在IRP中的I/O堆栈单元(I/O stack location)以决定要进行什么操作,检查参数,决定是否需要通过cache访问文件。如果不需要,在IRP中建立更低一级驱动程序的I/O堆栈单元。
各级驱动程序处理IRP完成这个I/O操作请求,会调用I/O管理器和其他系统组件提供的核心态支持例程。
驱动程序在IRP中设置I/O状态块(指明操作是否成功或错误代码),并将IRP返回到I/O Manager。
I/O管理器从IRP中获得I/O状态,通过被保护的子系统将状态信息返回到原始调用者处。
I/O管理器释放已经完成任务的IRP。
如果操作成功,I/O管理器返回这个文件对象的句柄到子系统;否则返回相应的失败状态。
如果打开成功,子系统就可以通过句柄来对这个设备进行各种I/O操作。其他操作的工作流程与此类似。I/O管理器会根据不同的请求类型产生相应的IRP发送到相应的驱动程序中执行特定的操作。
以上处理流程虽然复杂,但去掉一些细节后,总脉络是清晰的:I/O请求先陷入到系统核心,从上依层次向下将指令传到设备,执行结果依次向上返回到调用进程,切换回用户态。
整个流程中,有几个重要的数据结构:
文件对象(File Object):文件对象是一种逻辑上的对象,它并不仅仅可以代表文件,事实上它可以代表许许多多不同的物理设备(键盘、打印机、屏幕……当然也可以代表文件)。它事实上提供的是一种基于内存共享的物理资源表示法。每个文件对象对应一个句柄,用户程序通过这个句柄实现各种I/O操作。具体说,通过写入/查询特定的内存区段的,即可实现和物理设备的通讯。Windows所有的I/O操作都通过这种虚拟的文件对象进行,它隐藏了I/O操作目标的实现细节,为各种不同的物理设备提供了一个统一的操作接口。
驱动程序对象(Driver Object))
事实上由于I/O操作种类繁多,它们有不同的需求和特点,所以Windows提供了不同的I/O操作选项。主要的I/O操作类型有:同步I/O和异步I/O,快速I/O(注意:快速I/O模式比较特殊,不使用IRP),映射文件I/O和文件高速缓存,分散/集中I/O。各种I/O操作类型的内部处理步骤是很不一样的。同时,单层和多层的驱动程序也有不同的执行策略。这些涉及到过多的细节和Windows驱动程序模型(WDM),在此不更多的展开讨论。
虽然具体到每一个I/O请求处理策略会各有不同,但总的来说,涉及到的操作对象和数据结构就是前面提到的那些。而且总的处理脉络仍然是:I/O请求先陷入到系统核心,从上依层次向下将指令传到设备,执行结果依次向上返回到调用进程,切换回用户态。
参考资料:
《操作系统教程》
《MSDN Library》 DDK部分
用户程序
环境子系统或动态链接库
I/O管理器
服务
设备对象和驱动程序对象
物理设备
文件对象句柄
调用 返回
IRP
I/O端口操作、寄存器等
中断、DMA等方式……
请求
返回
用户态
核心态
您可能关注的文档
- 那霸已下线珊瑚花园7池公寓(CoralGarden7PoolsCondominium).docx
- 邦威特别风险提示.doc
- USBKey使用操作步骤及常见问题 一USBKey使用环境配置(请按照.doc
- USB随身碟病毒防治方式.doc
- 邦能泗县项目柴油发电机组报价单.doc
- userfilesfiles2015年同济大学生命科学与技术学院研究生国家奖学金.doc
- userfilesfiles2015年同济大学生命科学与技术学院研究生校级奖学金.doc
- userfilesfiles论文科技政策实施效果的经验分析_殷醒民.doc
- 邮件合并的操作步骤.docx
- userfiles德昌高速公路建设管理标准化活动实施方案doc.doc
最近下载
- 高中物理竞赛试题库附详细答案.pdf VIP
- 幼儿园意识形态风险研判记录.docx VIP
- 新版pep六年级上册unit1A-let's-talk课件.ppt VIP
- EN-18031-1规格参数说明.pdf VIP
- 肥胖患者麻醉管理专家共识(2025版中国麻醉学指南与专家共识).pdf VIP
- 中国建筑史(全套课件471P).ppt
- 《测量降水量》教案.docx VIP
- 2024年新人教版七年级上册历史全册课件(2024年新教材).pptx
- 语文课程与教学论 课件 欧阳芬 第1--5章 语文课程性质和理念---识字与写字教学.pptx VIP
- 学前教育原理(00398)全套教学课件第二章学前教育与社会发展PPT.pptx VIP
文档评论(0)