第五章.输入/输出(I/O)管理
5.1.I/O管理概述
5.1.1 I/O设备
I/O设备: 就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。
按使用特性分类:
1.人机交互类外部设备:鼠标,键盘等用于人机交互;数据传输速度慢
2.储存设备:移动硬盘,光盘等用于数据存储;数据传输速度快
3.网络通信设备: 调制解调器等,用于网络通信;数据传输速度介于前两者之间
按传输速率分类:
1.低速设备:传输速率为每秒几个到几百字节
2.中速设备:传输速率每秒数千至上万个字节
3.高速设备:传输速率每秒数千字节至千兆字节的设备
按信息交换的单位分类:
1.块设备:数据传输的基本单位是“块”,传输速率较高,可寻址,即对它可随机地读写任一块
2.字符设备:数据传输的基本单位是字符;传输速率较慢,不可寻址,在输入输出时常采用中断驱动方式
I/O设备由机械部件和**电子部件(I/O控制器,设备控制器)**组成
机械部件:主要用来执行具体的I/O操作;显示屏等
电子部件:通常是一块插入主板扩充槽的印刷电路板。
5.1.2 I/O控制方式
1.程序直接控制方式
2.中断驱动方式
3.DNA方式
4.通道控制方式
5.1.3 I/O软件层次结构
设备独立性软件:又称设备无关性软件,与设备的硬件特性无关的功能几乎都在这一层实现
功能:
1.向上层提供统一的调用接口
2.设备的保护
3.差错处理
4.设备的分配与回收
5.数据缓冲区管理
6.建立逻辑设备名到物理设备名的映射关系;根据设备类型选择调用相应的驱动程序;
5.1.4 应用程序I/O接口
阻塞I/O: 应用程序发出I/O系统调用,进程需转为阻塞态等待
非阻塞I/O: 应用程序发出I/O系统调用,系统掉哟给可迅速返回,进程无需阻塞等待
5.2 设备独立性软件
5.2.1 I/O核心子系统
IO核心子系统: 设备独立性软件,设备驱动程序,中断处理程序
I/O调度: 用某种算法来确定一个好的顺序来处理各个I/O请求
设备保护: 在UNIX系统中,设备被看作是一种特殊的文件,每个设备也有对应的FCB。当用户请求访问某个设备时,系统根据FCB中记录的信息来判断该用户是否有相应的访问权限
5.2.2 假脱机技术
批处理阶段引入了脱机输入/输出技术(用磁带完成)
【脱离主机的控制进行的操作】
在外围脱机控制机的控制下,慢速输入设备的数据先被输入到更快速的磁带上。之后主机可以从快速的磁带上读入数据,从而缓解了速度矛盾;
引入脱机技术后,缓解了CPU与慢速I/O设备的速度矛盾,另一方面,即使CPU在忙碌,也可以提前将数据输入到磁带;即使慢速的输入设备在忙碌,也可以提前将数据输出到磁带。
假脱机技术(SPOOLing): 用软件的方式模拟脱机技术
独占式设备: 只允许各个进程串行使用的设备,一段时间只能满足一个进程的请求;
共享设备: 允许多个进程“同时”使用设备(宏观同时,微观交替)
5.2.3 设备的分配与回收
设备的分配算法:FIFO,优先级高,短进程等
静态分配: 进程运行之前为其分配全部所需资源,运行结束后归还资源
(破坏了“请求和保持”条件,不会发生死锁)
动态分配: 进程运行过程中动态的请求设备资源
设备分配的步骤:
1.根据进程请求的物理设备名查找SDT
2.根据SDT找到DCT,若设备忙碌则将PCB挂到设备等待队列中,不忙碌则将设备分配给进程。
3.根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程
4.根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程
(只有设备,控制器,通道三者都分配成功时,这次设备分配才算成功,之后便可启动I/O设备进程数据传送)
5.2.4 缓冲区管理
1.单缓冲
双缓冲
循环缓冲区
缓冲池
5.3 磁盘和固态硬盘
5.3.1 磁盘
磁盘: 磁盘的表面由一些磁性物质组成,可以用这些磁性物质来记录二进制数据
磁盘的盘面被划分成一个个磁道。这样的一个”圈“就是一个磁道;
一个磁道又被划分成一个个扇区,每个扇区就是一个”磁盘块“,各个扇区存放的数据量相同;
最内侧磁道上的扇形面积最小,因此数据密度最大。
如何在磁盘中读/写数据?
——需要把“磁头”移动到想要读/写的扇区所在的磁道;磁盘会转起来,让目标扇区从磁头下面划过,才能完成对扇区的读/写操作。
一个盘片可能会有两个盘面;
每个盘面对应一个磁头;
所有磁头都是连在同一个磁臂上的,因此所有磁头只能“共进退”
所有盘面中相对位置相同的磁道组成柱面。
可用(柱面号,盘面号,扇区号)来定位任意一个“磁盘块”;
可以根据该地址读取一个“块”
1.根据柱面号移动磁臂,让磁头指向指定柱面。
2.激活指定盘面对应的磁头
3.磁盘旋转过程中,指定的扇区会从磁头下面划过,这样就完成了指定扇区的读/写。
磁盘的分类:
磁头可以移动的称为活动头磁盘。磁臂可以来回伸缩来带动磁头定位磁道
磁头不可移动的称为固定头磁盘。这种磁盘中每个磁道有一个磁头
可换盘磁盘: 盘片可以更换的
固定换盘磁盘: 盘片不可更换的
5.3.2 磁盘的管理
1.磁盘初始化
2.引导块
3.坏盘的管理
5.3.3 磁盘调度算法
总的平均存取时间:Ta=Ts+1/2r+b/(rN)
延迟时间和传输时间都与磁盘转速相关,且为线性相关。而转速时硬件的固有属性,因此操作系统也无法优化延迟时间和传输时间;
但时操作系统的磁盘调度算法会直接影响寻道时间。
1.先来先服务算法(FCFS)
根据进程请求访问磁盘的先后顺序进行调度;
优点: 公平;如果请求访问的磁道比较集中的话,算法性能还算过得去
缺点: 如果有大量进程竞争使用磁盘,请求访问的磁道很分散,则FCFS在性能上很差,寻道时间长。
2.最短寻找时间优先(SSTF)
SSTF算法会优先处理的磁道是与当前磁头最近的磁道。可以保证每次的寻道时间最短,但是不能保证总的寻道时间最短。
优点: 性能比较好,平均寻道时间短
缺点: 可能产生“饥饿”现象
3.扫描算法:
只有在磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动。(电梯算法)
优点: 性能较好,平均寻道时间较短,不会产生饥饿现象
缺点: 只有到达最边上的磁道时才能改变磁头移动的方向;对于各个位置磁道的响应频率不平均;
4.LOOK调度算法
如果磁头移动方向上已经没有别的请求,就可以立即改变磁头的移动方向了(边移动边观察)
优点: 寻道时间进一步缩短
5.循环扫描算法(C-SCAN)
规定只有磁头朝着某个特定方向移动时才处理磁道访问请求,而返回时直接快速移动至起始段而不处理任何请求。
优点: 对于各个位置磁道的响应频率很平均
缺点: 比起SCAN算法,平均寻道时间更长
6.C-LOOK算法
如果磁头移动方向上已经没有磁道访问请求了,就可以立即让磁头返回,并且磁头只需要返回到有磁道访问请求的位置即可
优点: 寻道时间进一步缩短
减少延迟时间的方法:交替编号
——若采用交替编号的策略,即让逻辑上相邻的扇区在物理上有一定的间隔,可以使读取连续的逻辑扇区所需要的延迟时间更小。
磁盘地址结构的设计?
减少延迟时间的方法:错位命名