操作系统课程讲义《操作系统原理》I/O设备管理案例分析主讲教师:史广顺gsshi@expervision.com.cngsshi@imi.nankai.edu.cn操作系统课程讲义2Minix中的I/O设备管理设备驱动方式(与Unix的本质区别,与Linux类似方式)每一类设备均有单独的设备驱动程序,其中硬件无关的内容形成公共程序、硬件相关的内容作为特定驱动。以模块化组织提高系统灵活性采用进程间通信的方式完成I/O设备的使用(Minix的进程式组织结构)Unix采用过程调用的方式,用户进程调用驱动程序,引发操作系统陷入,完成I/O操作后由中断处理程序唤醒用户进程设备管理方法设备驱动程序作为独立进程存在,OS启动时各个设备驱动进程完成基本初始化,而后等待消息(阻塞),直到用户进程发送消息(使用I/O设备)将其唤醒与硬件相关的设备驱动部分作为过程被设备驱动程序调用,从而实现无关性封装I/O软件与死锁处理Minix将所有与设备无关的I/O软件封装在文件系统模块中,所有的块设备均作为一种特殊的文件用户空间的I/O软件主要是供用户程序调用的函数库Minix中对死锁的处理采用“鸵鸟算法”I/O管理实例操作系统课程讲义3进程式OS与整体式OSI/O管理实例操作系统课程讲义4Windows中的I/O设备管理I/O管理系统结构I/O管理系统是一个独立的系统组件,存在于NTOSKRNL.exe文件中I/O管理系统由多个执行体组件和设备驱动程序组成,负责接受I/O请求,并针对性的将设备请求传送到各类对应的设备Windows中将所有的I/O操作均看作对虚拟文件的操作,所有的I/O数据传输都被看作“流数据”,由I/O管理系统负责将虚拟文件映射到对应的物理设备上I/O管理系统组成I/O管理器:负责定义支撑设备驱动程序的基本架构,直接响应I/O请求设备驱动程序:负责定义并实现某一特定类型设备的I/O接口管理PnP管理器:与I/O管理器和总线驱动程序协同,检测硬件资源的分配、设备的变更电源管理器:与I/O管理器协同工作来检测整个系统和单个设备,完成电源状态转换WDMWMI:WDM的WMI支持例程,负责实现设备与WMI服务之间的通信注册表:作为一个数据库,存储基本硬件描述信息以及驱动程序的初始化和配置信息硬件抽象层:将设备驱动程序实现为二进制可移植的形式,实现对硬件平台的独立Windows中的I/O系统数据结构文件对象、驱动程序对象、设备对象、I/O请求包I/O管理实例操作系统课程讲义5Windows中I/O系统组件I/O管理实例操作系统课程讲义6Windows中的I/O数据结构文件对象所有I/O设备被看作文件对象,用户程序进行I/O操作时就像是对一个文件进行操作文件对象是可共享的、有设备无关命名的、受保护的、支持同步的结构调用与实现过程:C库函数——Win32DLL——NTDLL.DLL——NTOSKRNL.DLL驱动程序对象与设备对象驱动程序对象代表一个独立的驱动程序,I/O管理器从驱动程序对象中获得并且为I/O记录每个驱动程序的入口点设备对象在OS中代表一个物理/逻辑/虚拟的设备,并描述设备的基本特征当驱动程序被加载时,I/O管理器将创建一个驱动程序对象,然后调用驱动程序的初始化例程,初始化例程将创建一个设备对象。设备对象接受I/O操作请求,驱动程序对象实现I/O操作请求I/O请求包由固定部分(标题)和堆栈单元(数量不定)组成,包含了I/O请求的各类信息IRP由I/O管理器构造,保存了I/O请求的相关信息,同时保存了调用者的相关信息所有的IRP均保存在IRP队列中,当用户程序终止后,I/O系统将清除未完成的IRPI/O管理实例操作系统课程讲义7I/O请求涉及到的数据结构I/O管理实例操作系统课程讲义8Windows中设备驱动程序层次I/O管理实例操作系统课程讲义9设备驱动程序的内容组成I/O管理实例操作系统课程讲义10Windows中的I/O处理简述设备驱动程序的同步操作驱动程序在访问相关数据时,必须实现“同步”操作,即以互斥的形式保护各类共享数据。在单CPU的机器上,通过同步例程实现;在多CPU的机器上,通过“自旋锁”实现I/O处理的类型同步I/O和异步I/O:绝大部分I/O操作是以同步方式实现的。但是也可以通过设定CreatFile的参数来使用异步I/O,异步I/O要求用户程序在设计和实现时必须保证不访问来自I/O操作的数据。在异步方式下,用户程序通过等待同步对象来实现与异步I/O操作的“同步”快速I/O:允许I/O系统不产生IRP而直接使用驱动程序执行I/O请求映射文件I/O和文件高速缓存•映射文件I/O是将磁盘中的MappingFile作为进程的虚拟内存一部分,直接把文件作为大的数组进行访问•Windows利用MappingFile可实现文件高速缓存和映象活动分散/集中式I/O:运行用户程序从虚拟内存的多个缓冲区(映射文件)中读写数据到磁盘文件(非高速缓存打开)的一个连续区域中。I/O管理实例操作系统课程讲义11盘设备的管理描述盘的硬件组成及相关原理磁盘:软盘和硬盘,基于电磁原理存储数据,盘面附着可磁化金属氧化物,磁头旋转保持角速度一致即可只读光盘:CD-ROM,基于光学原理,利用凹痕与槽脊的过渡来记录0、1;光头旋转时需要保持线速度一致可刻录光盘:CD-R,盘面附着染料,通过调整激光的功率溶化染料,形成光学上的暗斑,记录0、1可擦写光盘:CD-RW,盘面附着银/铟/锑/碲合金DVD光盘:更小的凹痕、更密的螺旋、更短的激光波长盘的I/O管理问题物理空间的分布:磁道/柱面/扇区,螺旋/扇区物理空间的逻辑化映射:控制器实现统一的虚拟几何规格数据存储和读写的性能保证:RAID、低级/高级格式化、柱面斜进、交叉编码磁盘驱动的核心算法:磁盘臂调度算法容错机制:坏扇区记录、ECC校验、稳定存储器I/O管理实例操作系统课程讲义12电源的管理描述计算机硬件设备的电能消耗电源管理的目的:合理、有效的使用电能驱动计算机硬件设备工作如何减少能量消耗:当设备不工作时,由OS将其关闭;或者通过降低应用程序的速度来降低能源消耗电池类型:一次性使用、可充电、智能电池电源管理的方法硬件设备设计为多种状态,例如工作、睡眠、休眠、关闭等,可通过机械按钮或者设备本身转换状态以节省能源操作系统根据能量消耗的规律负责调整设备的状态硬件设备和电池均提供“智能化”设计,通过向OS提供当前状态信息供OS进行决策,合理规划电能消耗“退化”操作:当能源不足时,OS通过降低电压、降低分辨率等操作以延长计算机可用时间I/O管理实例操作系统课程讲义13电源的管理描述计算机硬件设备的电能消耗电源管理的目的:合理、有效的使用电能驱动计算机硬件设备工作如何减少能量消耗:当设备不工作时,由OS将其关闭;或者通过降低应用程序的速度来降低能源消耗电池类型:一次性使用、可充电、智能电池ACPI(高级配置与电源接口)标准:为系统定义了6种不同的能耗状态(S0-S5),为设备定义了4种不同的能耗状态(D0-D3)电源管理的方法硬件设备设计为多种状态,例如工作、睡眠、休眠、关闭等,可通过机械按钮或者设备本身转换状态以节省能源操作系统根据能量消耗的规律负责调整设备的状态硬件设备和电池均提供“智能化”设计,通过向OS提供当前状态信息供OS进行决策,合理规划电能消耗“退化”操作:当能源不足时,OS通过降低电压、降低分辨率等操作以延长计算机可用时间I/O管理实例操作系统课程讲义14ACPI标准中的能耗状态分布I/O管理实例系统能耗状态能耗描述软件恢复硬件延迟设备能耗状态S0(正常工作)最大无无D0(正常工作)S1(睡眠)比S0大,比S2小恢复运行小于2秒D2S2(睡眠)比S1大,比S3小恢复运行2秒或更多D2S3(睡眠)比S2大,比S4小恢复运行2秒或更多D2S4(休眠)电源按钮保持微弱电流,系统保持唤醒电流恢复运行长D3(关闭)S5(完全关闭)电源按钮一直保持微弱电流系统引导长D3(关闭)操作系统课程讲义15Windows中的PNP与电源管理I/O管理实例操作系统课程讲义16Thanksforyourtime!Questions&Answers全文结束