I/O系统地功能、模型和接口
基本功能
- 隐藏物理设备的细节 I/O设备的类型非常多,且彼此间在多方面都有差异,诸如它们接收和产生数据的速度,传输方向、粒度、数据的表示形式及可靠性等方面。 设备控制器可部分隐藏设备操作细节。 I/O系统对设备加以抽象,以隐藏物理设备的实现细节,仅向上层进程提供少量的、抽象的接口。
- 与设备无关性
隐藏物理设备的细节早已有之。与设备的无关性是在较晚时才实现的,这是在隐藏物理设备细节的基础上实现的。例如:
- 逻辑设备名
- 即插即用
- 提高处理机和I/O设备的利用率
- 许多I/O设备间是相互独立的,能够并行操作,在处理机与设备之间也能并行操作。因此,要尽可能地让处理机和I/O设备并行操作,以提高它们的利用率。为此,一方面要求处理机能快速响应用户的I/O请求,使I/O设备尽快地运行起来;另一方面也应尽量减少在每个I/O设备运行时处理机的干预时间
- 对I/O设备进行控制
对I/O设备进行控制是驱动程序的功能。目前对I/O设备有四种控制方式: ① 采用轮询的可编程I/O方式; ② 采用中断的可编程I/O方式; ③ 直接存储器访问方式; ④ I/O通道方式。 不同设备采用不同方式。 - 确保对设备地正确共享
从设备的共享属性上,可将系统中的设备分为如下两类: (1) 独占设备:进程应互斥地访问这类设备。典型的独占设备有打印机、磁带机等。系统在对独占设备进行分配时应考虑到分配的安全性。 (2) 共享设备:是指在一段时间内允许多个进程同时访问的设备。典型的共享设备是磁盘。 - 错误处理
大多数的设备都包括了较多的机械和电气部分,运行时容易出现错误和故障。 从处理的角度,可将错误分为临时性错误和持久性错误。 对于临时性错误,可通过重试操作来纠正,只有在发生了持久性错误时,才需要向上层报告。
层次结构
I/O系统接口
块设备与字符设备的比较期末容易考
- 块设备接口
- 流设备接口
- 网络接口
I/O设备和设备控制器
中断处理程序
缺页中断在指令中完成
中断处理时从用户态转到系统态(内核态)
设备驱动程序
设备驱动程序和普通应用程序的区别(重要)
6.5 与设备无关的I/O软件
与设备无关的软件(记住)
- 设备驱动程序的统一接口
- 缓冲管理
- 差错控制
- 对独立设备的分配与回收
- 独立于设备的逻辑数据块
设备分配
数据结构
- 设备控制表(DCT)
- 控制器控制表(COCT)
- 通道控制表(CHCT)
- 系统设备表(SDT)
设备分配的影响因素
逻辑设备名到物理设备名映射的实现
逻辑设备名由用户给出
物理设备名由系统给出
逻辑设备表(LUT):逻辑设备名,物理设备名,设备驱动程序的入口地址
如何设置
- 第一种方式,是在整个系统中只设置一张LUT。
- 第二种方式,是为每个用户设置一张LUT
用户层的I/O软件
系统调用
库函数
假脱机(Spooling)系统
使用高速磁盘做缓存,外围设备与内存之间的缓冲
缓冲区管理
设备无关层
引入原因
- (1) 缓和CPU与I/O设备间速度不匹配的矛盾。
- (2) 减少对CPU的中断频率,放宽对CPU中断响应时间的限制。
- (3) 解决数据粒度不匹配的问题。
- (4) 提高CPU和I/O设备之间的并行性。
缓冲区满产生一次中断
缓冲区扩充,中断频率降低
比较这几种缓冲方式的特点
- 单缓冲区
- 工作方式
- 双缓冲区
- 工作方式
- 环形缓冲区
- 缓冲池
- 空白缓冲队列
磁盘存储器的性能和调度
机械磁盘
调度算法(最容易处前四种,常出如下表的形式)
- 先进先执行
- 最短寻道优先算法
- 基于扫描的调度算法
- 扫描(SCAN)算法 (电梯调度)
- 循环扫描(CSCAN)算法:开始位置向最访问,然后跳转最小
- 扫描(SCAN)算法 (电梯调度)
- NstepSCAN算法:请求队列划分n个子队列,任务随机进入队列[N很大接近SCAN,N=1为FCFS]
- FSCAN调度算法:分为两个队列,扫描的期间进入的新任务在另一个队列保存