本系列博客重点在深圳大学操作系统课程的核心内容梳理,参考书目《计算机操作系统》(有问题欢迎在评论区讨论指出,或直接私信联系我)。
梗概
本篇博客主要介绍操作系统第六章输入输出系统的相关知识。
目录
一、I/O(输入输出)系统
1.概述
2.I/O设备和设备控制器
3.I/O通道
4.I/O控制方式
二、缓冲管理
三、设备分配
四、用户层的I/O软件——假脱机(Spooling)系统
五、磁盘存储器管理
1.概述
1.1 结构与数据
1.2 磁盘访问时间
2.磁盘调度算法
2.1 先来先服务(FCFS)
2.2 最短寻道时间优先(SSTF)
2.3 扫描调度算法(SCAN)
2.4 循环扫描调度算法(CSCAN)
2.5 磁盘调度算法例题
3.补充知识
一、I/O(输入输出)系统
输入输出系统(Input/output)系统管理的主要对象为I/O设备与相应的设备控制器,最主要功能是完成用户提出的I/O请求,提高I/O速率,以及提高设备利用率。
1.概述
I/O软件涉及的面很宽,向下与硬件有密切关系,向上又与文件系统、虚拟存储器系统和用户直接交互,当今主流方案为层次式结构的I/O系统,利用下层服务完成输入输出功能的子功能并向上层提供服务。
其中,I/O系统的各模块层次视图如下:
2.I/O设备和设备控制器
I/O设备一般是由执行I/O操作的机械部分和执行控制I/O的电子部件组成。前者为I/O设备,后者为设备控制器或适配器(adapter)。在微型机和小型机中的控制器常做成印刷电路卡形式,因而也常称为控制卡、接口卡或网卡,可将它插入计算机的扩展槽中。在有的大、中型计算机系统中,还配置了I/O通道或I/O处理机。
I/O设备的分类很多,如:
- 按使用特性分类:①存储设备(外存:容量大,速度慢) ②I/O设备(输入输出/交互设备,键盘鼠标扫描仪/显示器)
- 按传输速率分类:①低速设备 ②中速设备 ③高速设备
通常,设备并不直接与CPU通信,而是通过设备控制器。
设备控制器的主要功能是:控制一个或多个I/O设备,易实现I/O设备和计算机(CPU)之间的数据交换。设备控制器的组成如下:
3.I/O通道
虽然在CPU与I/O设备之间增加了设备控制器后,已能大大减少CPU对I/O的干预,但当主机所配置的外设很多时,CPU的负担仍然很重。为此,在CPU和设备控制器之间又增设了I/O通道(I/O Channel)。其主要目的是为了建立独立的I/O操作。
I/O通道是一种特殊处理机,具有执行I/O指令的能力,通过执行通道(I/O)程序控制I/O操作。
1、指令类型单一,主要限于与I/O操作有关的指令
2、没有自己的内存,通道程序放在主机内存中
所以I/O通道会出现“瓶颈”问题,通道价格昂贵导致数量少,限制了I/O操作,降低了系统吞吐量。如下图中,为启动设备4,需要启动通道1和控制器2,若已被其他设备占用,会出现无法启动。
主要解决方案为多通路I/O系统,样例如下:
不仅解决了“瓶颈”问题,也提高了系统的可靠性。
4.I/O控制方式
对于I/O设备的控制方式,发展历程主要是轮询程序到中断到DMA控制器到通道。 发展的核心宗旨是减少主机对I/O控制的干预,以便其完成更多数据处理任务。
- 轮询的可编程I/O方式:输入输出时将busy状态位置1,并不断循环测试是否完成,造成CPU的极大浪费。
- 使用中断的可编程I/O方式:CPU与I/O设备并行工作,每一次输入完数据CPU再花少量时间去中断。
- 直接存储器访问方式:中断的I/O方式是以字(节)为单位干预的,对于块设备效率极低。故引入DMA控制器,组成如下:
- I/O通道控制方式:把对一个数据块的读写干预减少到对一组数据块的读写干预。
对于I/O通道控制方式核心实现为通过通道程序完成对I/O设备的控制,通道程序一般包含以下信息:
(1)操作:读、写(2)P:通道结束位:P=1表示本条指令是通道程序的最后一条指令(3)R:记录结束位:R=1表示这是处理某记录的最后一条指令(4)计数:表示本条指令要读写的字节数(5)内存地址:标明字符送入内存的首址
以上样例包含三个记录,1-3指令为一个记录,4为一个,5-6为一个(看R)。
二、缓冲管理
现代操作系统中,几乎所有I/O设备再与CPU交换数据时都使用了缓冲区,本质上是一个存储区域,一般由硬件寄存器或内存(更常见)组成。
缓冲的引入主要原因如下:
- 缓和CPU与I/O设备间速度不匹配的矛盾:生产者无需等待消费者就绪,即可将数据输出到缓冲区
- 减少对CPU的中断频率, 放宽对CPU中断响应时间的限制,下例中,对于(a)每100us就要中断且响应一次,(b)可将中断频率降为1/8,(c)可将响应时间降为1/8
- 提高CPU和I/O设备之间的并行性
1、单缓冲区:
一I/O请求一缓冲区
运行周期:Max(C, T) + M
2、双缓冲区:
消费者若未取走缓冲区数据,生产者生产出新数据也无法放入,故引入双缓冲区。
运行周期:Max(C+M, T)
C+M<T:主机速度快,主机等待,磁盘连续输入
三、设备分配
系统为实现对独占设备的分配,必须配置对应的数据结构——设备控制表(DCT)。
控制器控制表、通道控制表和系统设备表对比如下:
单通道系统的设备分配流程如下:
四、用户层的I/O软件——假脱机(Spooling)系统
在用户层的I/O软件中,需要完全运行于内核之外的假脱机系统。通过假脱机系统(技术),可以将一台物理I/O设备虚拟为多台逻辑I/O设备,运行多用户共享。
SPOOLing技术的核心是由系统中的两个专门负责I/O的进程,模拟I/O外围机的功能,实现(假)脱机输入/输出。
其系统组成如下:
1、输入与输出井:
在磁盘上开辟的两个大的存储空间:
- 输入井是模拟脱机输入时的磁盘,用于收容I/O设备输入的数据
- 输出井是模拟脱机输出时的磁盘,用于收容用户进程的输出数据
2、输入缓冲区和输出缓冲区:
为了缓和和CPU和磁盘之间速度不匹配的矛盾,在内存中开辟的两个缓冲区:
- 输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井
- 输出缓冲区用于暂存由输出井送来的数据,以后再传送到输出设备
3、输入进程SPi和输出进程SPo:
- 输入进程SPi模拟脱机输入时的外围控制机,将用户要求输入的数据从输入设备,通过输入缓冲区再送到输入井
- 输出进程SPo模拟脱机输出时的外围控制机,将用户要求输出的数据从输出井,通过输出缓冲区送到输出设备
系统特点如下:
- 提高I/O速度
- 将独占设备改造为共享设备
- 实现了虚拟设备功能
五、磁盘存储器管理
磁盘存储器是计算机系统中最重要的存储设备,其中存放了大量文件,对文件的读写都涉及对磁盘的访问。
1.概述
1.1 结构与数据
磁盘结构如下:
1、磁盘的组成:
- 磁盘由多个盘片组成
- 每个盘片分两个盘面
- 每个盘面分若干个磁道(同心圆)
- 每个磁道分若干个扇区
2:磁盘的寻址:磁头——柱面——扇区
- 磁头Head:第几个盘片的正面或背面
- 柱面Cylinder:第几个磁道
- 扇区Sector:磁道上的分区号
扇区(Sector)数据结构如下,主要包括(1)标识符字段(ID Field),(2)数据字段(Data Field)
而对于磁盘的类型,有如下两种:
- 固定头磁盘,每条磁道都有一读/写磁头,所有的磁头装在一刚性磁臂中。磁头并行读/写,I/O速度快,用于大容量磁盘
- 移动头磁盘,每个盘面仅配有一个磁头,磁头能移动进行寻道。I/O速度较慢,结构简单,广泛应用于中小型磁盘设备
1.2 磁盘访问时间
为了读或写,磁头必须移动到指定的磁道上,并等待指定的扇区旋转到磁头下,然后再读或写数据,故磁盘访问时间可分为三部分:
1、寻道时间Ts:磁头移动到指定磁道上的时间
启动磁臂时间s与磁头移动n条磁道花费的时间之和
Ts=m×n+s
Tips:m是常数,与磁盘驱动器的速度有关,一般磁盘m=0.2;高速磁盘,m≤0.1 磁臂的启动时间s约为2 ms。 一般寻道时间5~30 ms
2、旋转延迟时间Tτ :扇区移动到磁头下面的时间
5400转硬盘,即5400 r/min,每转需时11.1 ms,平均旋转延迟时间Tτ为5.55 ms
3、传输时间Tt:数据从磁盘读出或向磁盘写入数据
与每次所读/写的字节数b和旋转速度有关,r为磁盘每秒钟的转数;N为一条磁道上的字节
若知道扇区数,Tt = 1/r*扇区数
4、访问总时间Ta:
当一次读/写的字节数相当于半条磁道上的字节数时,总时间:
Tips:传输时间占比低
例题
若磁盘转速为7200 转分,平均寻道时间为 8ms,每个磁__牛客网 (nowcoder.com)
操作系统--磁盘调度题目_若磁盘转速为6000转,每个磁道包含1000个扇区_real_metrix的博客-CSDN博客
2.磁盘调度算法
1、提高磁盘I/O速度的方法:
提升磁盘硬件性能 采用好的调度算法 设置磁盘高速缓冲区
2、磁盘调度:
磁盘属于共享设备,允许多个进程访问,因此需要磁盘调度算法
磁盘调度算法目标是平均寻道时间少
2.1 先来先服务(FCFS)
核心:根据进程请求访问磁盘的先后次序调度
- 优点:简单,每个请求都能依次得到处理
- 缺点:平均寻道距离较大
2.2 最短寻道时间优先(SSTF)
核心:依据访问磁道与当前磁道最近原则(实际上是基于优先级的调度)
Tips:当前磁道为100
- 优点:平均寻道时间较短
- 缺点:会导致某些进程发生“饥饿”现象,磁头有可能长期停留在同一磁道上(磁臂粘着)
2.3 扫描调度算法(SCAN)
核心:依据磁头移动方向及访问磁道与当前磁道距离最短两个原则
磁头移动方向为…,向外,然后向内,再向外,…一直循环往复 例如:当前磁头停在80号磁道上服务,并且刚刚完成了89号磁道的请求,说明磁头移动方向向内
Tips:当前磁道为100,且方向向外
- 优点:不会出现进程“饥饿”现象,平均访问寻道时间较短
- 缺点:与磁头近但在磁头运动反方向的磁道等待时间长,磁头有可能长期停留在同一磁道上(磁臂粘着)
2.4 循环扫描调度算法(CSCAN)
核心:到达最外磁道后,返回最小磁道开始SCAN算法
Tips:当前磁道为100,且方向向外
- 优点:不会出现进程“饥饿”现象,平均访问寻道时间较短,最长等待时间较SCAN短(一半)
- 缺点:磁头有可能长期停留在同一磁道上(磁臂粘着)
2.5 磁盘调度算法例题
有一磁盘管理系统,磁道按内往外方向升序编号,假设当前等待访问磁盘的请求序列为:15、10、30、 150、 190、 80、 95、 40、 140、 20。当前磁头停在90号磁道服务,之前刚完成93号磁道的访问。请分别采用FCFS、SSTF、SCAN、CSCAN算法,求出各种算法的调度序列以及平均寻道距离
操作系统--分别用FCFS,SSTF,SCAN,CSCAN算法计算总寻道长度和平均寻道长度例题(详细)_代码爱小菜鸡的博客-CSDN博客
OS 磁盘调度算法 之 FCFS、SSTF、SCAN、CSCAN_scan算法例题讲解_MoMing丶的博客-CSDN博客
3.补充知识
1、磁盘高速缓存(Disk Cache):
利用内存中的存储空间,来暂存从磁盘中读出的一系列盘块中的信息。
高速缓存是一组在逻辑上属于磁盘, 而物理上是驻留在内存中的盘块。
2、高速缓存在内存中的两种形式:
内存中开辟单独的存储空间作为磁盘高速缓存,其大小是固定的,不受应用程序多少的影响
把所有未利用的内存空间变为一个缓冲池,供请求分页系统和磁盘高速缓存共享
3、提高磁盘速度的其它方法:
提前读:根据局部性原理,将邻近的磁盘块提前读入内存,例如预调页策略
延迟写:修改过的页面不立刻写回磁盘,积累一定数量一次性写回,减少I/O操作次数
优化物理块分布:同一文件的物理快尽量集中
虚拟盘:利用内存空间或其他存储介质仿真磁盘,例如内存式硬盘和固态硬盘