操作系统学习笔记-04设备管理
现代计算机系统外设分为两大类,一类是存储型设备,另一类是I/O型设备。
设备管理是操作系统中最为庞杂和琐碎的部分,通常使用I/O中断、缓冲区管理、通道、设备驱动调度等多种技术,克服了由于设备和CPU速度不匹配产生的问题,使设备能和CPU并行工作。另一方面,操作系统把所有设备抽象为文件,便于管理。
设备管理具有以下功能:设备中断处理、缓冲区管理、设备分配去配、设备驱动调度、虚拟设备。
I/O硬件管理
I/O系统
I/O操作
通常把I/O设备及其接口线路、控制部件、通道和管理软件称为I/O系统,把计算机的内存和设备介质之间的信息传送操作称为I/O操作。
分类
按I/O操作特性分为:输入/输出设备、存储型设备。
按I/O信息交换单位分为:字符设备、块设备。
输入/输出设备通常是字符设备,交换单位是字节,存储型设备通常是块设备。
存储型设备又可分为:顺序存取存储设备、直接存取存储设备。
I/O控制方式
轮询方式
又称程序直接控制方式,使用查询指令测试设备控制器的忙先状态位,闲则传输数据,忙则继续查询。如果有多个设备,则轮流查询这些设备忙闲状态。
中断方式
要求CPU和设备控制器、设备之间有中断请求线。设备控制器状态寄存器有中断允许位。
中断方式一般是用于随机出现的服务,并且一旦提出要求,应立即执行。
DMA方式
通过DMA控制器完成I/O存取而不占用CPU资源。如果DMA与CPU同时经总线访问内存,CPU总是吧总线占有权让给DMA,这叫做周期窃用,窃取时间通常为一个存取周期。DMA功能还不够强,不能满足复杂的I/O操作要求。大中型计算机中一般使用通道技术。
通道方式
通道又称I/O处理器,能完成内存和设备之间的信息传送,与CPU并行工作。通道技术解决了I/O操作独立性和硬部件工作的并行性。
缓冲技术
在内存中开辟一个存储区,称为缓冲区,专门用于临时存储I/O操作数据。
基本思想
- 写操作:先申请一个输出缓冲区,数据送到缓冲区,如果是顺序写请求,则不断写入缓冲区直到写满,之后进程继续运行,缓冲区内容写到设备上。
- 读操作:先申请一个输入缓冲区,系统把设备一条物理记录读到缓冲区,根据要求把当前所需逻辑记录从缓冲区选出并传送给进程。
驱动调度技术
采用一种调度策略,能够按照最佳次序执行要求访问的诸多请求叫做驱动调度。
存储设备的物理结构
三个参数:柱面号、磁头号、扇区号。
磁盘机根据柱面号控制移动臂做横向运动,带动磁头到达指定柱面,缓慢的时间叫做查找时间;之后选择磁头,等待被访问扇区旋转到读写磁头下,按扇区号存取信息称为搜索延迟。
优化分布
磁盘盘片是旋转型设备。假如经常需要处理一一些数据,排列在一个磁道上,盘片旋转一周用20ms时间,处理程序花4ms来处理,那么读每个记录就是2ms。
物理块 | 逻辑记录 |
---|---|
1 | A |
2 | B |
3 | C |
4 | D |
5 | E |
6 | F |
7 | G |
8 | H |
9 | I |
10 | J |
假设我们要以ABC……顺序读取数据,那么我们在读完A并且处理数据后此时盘片已转到物理块4的位置了,所以我们要把B放在之前D的位置,以此C放在之前G的位置,如下表:
物理块 | 逻辑记录 |
---|---|
1 | A |
2 | H |
3 | E |
4 | B |
5 | I |
6 | F |
7 | C |
8 | J |
9 | G |
10 | D |
处理10条数据总时间为:10ms(旋转到A的平均时间)+10×[2ms(读)+4ms(处理)]=70ms。
搜索定位
除旋转延迟外,还有搜查寻道延迟。由于数据请求在不同的柱面上,移动臂要进行移动才能对在不同柱面上的数据进行访问。
对于移动臂调度算法有若干种,在此我们举例说明,假设磁盘机有200个柱面,请求序列如下:150,30,190,20,100,55,90。移动臂初始位置在50处。
先来先服务算法
First In First Out Algorithm,磁盘臂的移动完全按照I/O请求的顺序执行。
移动臂移动柱面总数为:(150-50)+(150-30)+(190-30)+(190-20)+(100-20)+(100-55)+(90-55)=710。
最短查找时间优先算法
Shortest seek time first algorithm,总是先执行查找时间最短的请求。但易产生饥饿现象。
移动臂移动柱面总数为:(55-50)+(55-30)+(30-20)+(90-20)+(100-90)+(150-100)+(190-150)=210。
扫描算法
scan algorithm,移动臂每次沿一个方向移动,扫过所有柱面,遇到I/O请求便进行处理,直到最后一个柱面再反向移动。
移动臂移动柱面总数为:(55-50)+(90-55)+(100-90)+(150-100)+(190-150)+(199-100)+(199-30)+(30-20)=328。
分步扫描算法
在一段时间内进程重复请求访问同一柱面会垄断整个设备,造成移动臂停留不动,称为磁盘粘性。采用分步扫描算法N - steps scan algorithm可避免这个问题。将I/O请求氛围长度为N的子队列,按FIFO算法依次处理每个子队列,每个子队列采用扫描算法,处理完一个再服务下一个子队列,扫描期间新I/O请求放入等待队列中。当N=1时,接近FIFO算法性能。
电梯调度算法
elevator algorithm又称LOOK算法,就像电梯一样,错过的不再返回,未访问的按序访问,完成一个方向所有访问请求后,再调头。
移动臂移动柱面总数为:(55-50)+(90-55)+(100-90)+(150-100)+(190-150)+(190-30)+(30-20)=310。
循环扫描算法
在磁盘请求对柱面分布均匀的情况下,当移动臂移动到头转向时靠近磁头一端请求特别少,许多请求分布在另一端,循环扫描算法circular scan algorithm可以克服这个问题。移动臂总是从0号柱面顺序扫描,到头后返回0号,中途不提供服务,构成一个循环。
移动臂移动柱面总数为:(55-50)+(90-55)+(100-90)+(150-100)+(190-150+(199-190)+(199-0)+(190-30)+(30-20)=310。
设备分配方式
设备分配可以可分为静态分配、动态分配和虚拟分配。
独占性设备往往采用静态分配,作业执行前把所需全部资源分配给它,当作业执行过程中不再需要使用这类设备或作业执行结束将要撤离再收回设备。静态分配实现简单,能防止死锁,但会降低设备利用率。
在作业执行过程中要求输出一批信息时,系统才把打印机分配给作业,当文件输出要关闭时,系统就收回分配给此作业的打印机。对某些独占使用的设备,动态分配不仅是可行的而且也能提高设备利用率。
磁盘等,往往可以多作业同时使用,因为速度块、容量大、可直接访问,所以这类设备,主要是驱动调度和实施驱动。
SPOOLing设计与实现
系统在磁盘上开辟输入井和输出井,井用作缓冲的存储区域,井的技术可以调节供需矛盾。
预输入程序把控制信息从输入设备输入到输入井。井管理程序控制从相应输入井读取信息,或把信息送到输出井。
当处理器空闲,操作系统调用缓输出程序执行缓输出,它查看缓输出表,是否有输出打印文件,并组织信息格式加工等。