- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.8Linux的设备管理 5.8.1 Linux设备管理概述 ? Linux中,设备当作文件处理,可使用标准文件系统调用来控制设备操作。对于字符设备和块设备,其设备文件用mknod命令创建,用主设备号和次设备号标识,同一设备驱动程序控制的所有设备具有相同的主设备号,并用不同次设备号加以区别; ? 网络设备也当作设备文件来处理,不同的是这类设备由Linux创建,并由网络控制器初始化; ? 设备文件与普通文件有着根本不同,当进程访问普通文件时,它会通过文件系统访问磁盘分区中的数据块;当进程访问设备文件时,它只要驱动物理设备就行,VFS负责为应用程序隐蔽设备文件与普通文件之间的差异,可把对设备文件的任一系统调用转换成对设备驱动程序的函数调用。 5.8.2 设备驱动程序 1 驱动程序的注册与注销 2 设备的打开与释放 3 设备的读/写操作 4 设备的控制操作和控制方式 5.8.3 设备I/O的处理 1 数据传输和设备驱动 2 块设备请求 3 低级请求处理 5.9Windows 2003I/O系统 5.9.1 I/O系统结构和组件 5.9.2 I/O系统数据结构 5.9.3 I/O类型和处理 5.9.4 高速缓存管理 5.9.1 I/O系统结构和组件(1) Windows I/O系统是执行体的组件,存在于 NTOSKRNL.EXE文件中。 它接受来自用户态和核心态的I/O请求,并以不同形式把它们传送到I/O设备。 I/O系统结构和组件(2) 一个典型的I/O请求流程 I/O管理的特点 1) I/O包驱动 2) 通过虚拟文件实现I/O操作 5.9.2I/O系统数据结构 四种数据结构代表了I/O请求: 文件对象、 驱动程序对象、 设备对象、 I/O请求包(IRP)。 1、文件对象 文件作为对象来管理,是可以共享的系统资源,被基于对象的安全性所保护,并且它们支持同步。 当调用者打开文件或单一设备时,I/O管理器为文件对象返回句柄。 文件对象由包含访问控制表(ACL)的安全描述体保护。 I/0管理器查看安全子系统来决定文件的ACL是否允许进程去访问它的线程正在请求的文件。 2、驱动程序对象和设备对象(1) 线程为文件对象打开句柄时,I/O管理器根据文件对象名称来决定将调用哪个或哪些驱动程序来处理请求。下面的系统对象满足这些要求: 驱动程序对象,I/O管理器从驱动程序对象中获得并且为I/O记录每个驱动程序的调度例程的地址。 设备对象在系统中代表一个物理的、逻辑的设备并描述它的特征,例如,所需要的缓冲区的对齐方式和用来保存I/O请求包的设备队列位置。 驱动程序对象和设备对象(2) 3、I/O请求包 (1) IRP是I/O系统用来存储处理I/O请求所需信息的数据结构。 线程调用I/O服务时,I/O管理器就构造一个IRP来表示在整个系统I/O进展中要进行的操作。 I/O管理器在IRP中保存一个指向调用者文件对象的指针。 I/O请求包 (2) IRP由两部分组成 固定部分(标题)和一个或多个堆栈单元。 固定部分包括:请求的类型和大小、同步请求还是异步请求、用于缓冲I/O的指向缓冲区的指针和随着请求的进展而变化的状态信息。 IRP堆栈单元包括一个功能码、功能特定的参数和指向调用者文件对象的指针。 4 驱动程序分类和组成 1) 驱动程序分类: (1)核心模式驱动程序。 (2)用户模式驱动程序。 (3)硬件支持驱动程序。 2)包括调用处理I/O请求不同阶段的例程,主要有:初始化例程、功能例程、启动I/O例程、中断服务例程、延迟过程调用例程、完成例程、取消例程、卸载例程、系统关闭通知例程和错误记录例程。 5 多处理机中I/O同步问题 多个CPU上运行,驱动程序必须同步执行的主要原因。 驱动程序必须同步执行的方法。 5.9.3 I/O类型和处理(1) 1 I/O类型 1) 同步I/O和异步I/O 2) 快速I/O 3) 映射文件I/O和文件高速缓存 4) 分散/集中I/O I/O类型和处理(2) 2 I/O处理步骤(1) Windows核心态设备驱动程序I/O请求包含步骤: I/O库函数经过语言的运行时库转换成对子系统DLL的调用; 子系统DLL调用I/O的系统服务; I/O系统服务调用对象管理程序,检查给定的文件名,再搜索名空间,把控制转交给I/O管理器寻找文件对象; 驱动程序询问安全子系统,确定线程的存取权限。 I/O类型和处理(3) I/O处理步骤(2) I/O管理器以IRP的形式将I/O请求送给设备驱动程序,驱动程序启动I/O操作; 设备完成指定操作,请求I/O中断,设备驱动程序的ISR服务于中断; I/O管理器再调用I/O完成例程
文档评论(0)