第十三章I/O系统6.2内容1.I/O硬件2.I/O控制方式3.I/O应用接口4.I/O内核子系统5.I/O操作1、I/O硬件6.4概述计算机2个主要任务:I/O操作-更加频繁计算I/O设备特点种类繁多,不断有新设备出现接口标准化:如USB如何适应I/O设备的特点是操作系统的一个挑战6.5概念端口总线(链环或共享总线)控制器(主机适配器)I/O指令控制设备I/O硬件6.6个人计算机中的设备I/O端口位置(部分)6.7I/O硬件控制控制设备方法(通过设备地址):直接I/O指令INAL,60HOUT61H,AL内存映射I/O显存和内存统一编址I/O寄存器状态寄存器控制寄存器数据输入寄存器数据输出寄存器2、I/O控制方法6.9轮询Polling又称“程控输出入”(ProgrammedI/O)流程:1.由CPU定时发出询问,询问设备是否忙2.不忙即进行I/O,否则转1设备的状态就绪忙出错轮询法实作容易,但效率偏低CPU会长期处于忙等待6.10中断InterruptsI/O设备触发CPU的中断请求线触发中断中断向量为中断分配正确的中断处理程序基于优先级某些中断不可屏蔽中断处理程序处理中断中断机制也用来处理异常6.11中断驱动的I/O循环周期6.12IntelPentium处理器的事件向量表6.13为了避免用程序控制I/O来传输大量数据,需要DMA控制器绕过CPU,直接在I/O设备和内存之间传输数据直接内存访问DMA6.14DMA传输中的步骤3、I/O应用接口6.16设备独立性为了提高操作系统的可适应性和可扩展性现代操作系统中实现了设备独立性,也称为设备无关性应用程序独立于具体使用的物理设备实现方法引入逻辑设备和物理设备在应用程序中使用逻辑设备名称来请求使用某类设备而系统在实际执行时使用物理设备名称系统须具有将逻辑设备名称转换为物理设备名称的功能类似于存储管理中的逻辑地址和物理地址的概念6.17内核I/O结构I/O驱动接口I/O应用接口I/O系统的核心是I/O管理和控制6.18I/O系统调用将设备的行为封装成一些通用类型设备驱动层对内核隐藏了I/O控制器的不同细节设备在许多方面有很大差异字符流或块顺序或随机访问共享或独占操作速度读写、只读、只写I/O应用接口6.19I/O设备的特点6.20块设备包括磁盘命令包括读、写、寻找原始I/O或文件系统存取内存映射文件访问字符设备包括键盘、鼠标、串口设备命令包括get,put在接口之上,可以构造库以提供按行访问的能力块与字符设备6.21与块设备和字符设备有很大差别,具有自己的接口UNIX和WindowsNT/9i/2000具有套接字接口(Socket)分离网络协议和网络操作包括select()函数方式广泛:管道、FIFOs、流、队列、邮箱网络设备6.22获取当前时间,已逝去时间、计时器可编程间隔定时器可被用于等待一段时间,然后周期性的触发中断ioctl(在UNIX中)掩盖了时钟和定时器这些I/O设备的区别时钟与定时器6.23阻塞和非阻塞I/O3、I/O内核子系统6.25提供了与I/O有关的服务,建立在硬件和设备驱动程序结构之上,还负责保护自己免受错误进程和恶意用户的危害I/O调度某些I/O请求需要按设备队列排序某些操作系统试图维持公平先来先服务算法缓冲(Buffering)-设备之间传输的数据暂时存放在内存中解决设备之间的速度差异协调传输数据大小不一致维持“拷贝语义”I/O内核子系统6.26设备状态表6.27SunEnterprise6000的设备传输率6.28高速缓存(Cache)-保留数据拷贝的高速内存仅仅是一个拷贝关键是性能假脱机(Spooling)-保存设备输出的缓冲如果设备在一个时刻只能相应一个请求如,打印机I/O保护-防止非法I/O指令的执行定义I/O指令为特权指令应用程序I/O操作必须通过系统调用实现I/O内核子系统6.29Spooling输入进程Spi输出进程Spo输入井输出井输入缓冲区Bi输出缓冲区Bo输入设备输出设备磁盘6.30使用系统调用执行I/O6.31错误处理操作系统可以从磁盘读、设备无效、暂时写失败等错误中恢复当出现I/O请求失败时,多数情况返回一个错误号系统出错日志记录了错误报告内核数据结构内核保存了I/O组件的状态信息,包括文件打开表、网络连接、字符设备状态等许多复杂的数据结构用于记录缓冲、内存分配和“脏”块有些操作系统使用面向对象的方法和消息机制来实现I/OI/O内核子系统6.32UNIX的I/O内核结构5、I/O操作6.34考虑一个进程从磁盘读取一个文件:确定保存文件的设备将文件名转换成设备使用的表示法把数据从磁盘读入缓冲通知请求进程数据可用将控制权返回给进程把I/O操作转换成硬件操作6.35I/O请求的生命周期