IO 软件设计目标和设计原则
总体目标追求「高效率」和「通用性」。需要考虑的问题有
设备无关性:程序与具体物理设备无关。
出错处理:屏蔽错误,不让高层软件感知。
同步/异步传输:支持同步(阻塞)和异步(中断驱动)两种工作方式。
缓冲技术:数据处理速率不匹配,数据处理大小不一致。
独占性外围设备和共享性外围设备:分配和共享。
IO 软件层次
IO 软件大致分为四个层次:
IO 中断处理程序
设备驱动程序
独立于设备的操作系统 IO 软件
(没讲)
用户空间的 IO 软件
IO 操作执行步骤
进程对已打开文件的文件描述符执行读库函数;
独立设备I/O软件检查参数正确性。高速缓存中有要读的信息块,从缓冲区直接读到用户区,完成I/O请求;
若数据不在缓冲区,执行物理I/O,实现将设备逻辑名转换成物理名,检查对设备操作的权限,将I/O请求排队,阻塞进程且等待I/O完成;
内核启动设备驱动程序,分配存放读出块的缓冲区,准备接收数据,且向设备控制寄存器发启动命令,或建立DMA传输,启动I/O;
设备控制器操作设备,执行数据传输;
DMA 控制器控制一块传输完成,硬件产生I/O结束中断;
CPU 响应中断,转向磁盘中断处理程序。
当应用进程被再次调度执行时,从I/O系统调用的断点恢复执行。
Interactive Graph
Table Of Contents
IO 软件设计目标和设计原则
IO 软件层次
IO 操作执行步骤