操作系统-第五章-输入输出管理
重点掌握I/O接口,I/O软件。三种I/O控制方式,高速缓存与缓冲区,SPOOLing技术,磁盘特性和调度算法。
I/O管理概述
I/O 设备
I/O接口
I/O接口(设备控制器)位于CPU与设备之间,它既要与CPU通信,又要与设备通信,还要具有按CPU发来的命令去控制设备工作的功能。
主要由三部分组成:
- 设备控制器与CPU接口 ,该接口有三类信号线:数据线,地址线和控制线
- 设备控制器与设备的接口
- I/O逻辑
设备控制器的主要功能:
- 接收和识别CPU发来的命令,如磁盘控制器能接收读,写,查找等命令
- 数据交换,包括设备和控制器之间的数据传输,以及控制器和主存之间的数据传输
- 标识和报告设备的状态,以供CPU处理
- 地址识别
- 数据缓冲
- 差错控制
I/O端口
I/O端口是指设备控制器中可被CPU直接访问的寄存器,主要有以下三类寄存器:
- 数据寄存器: 实现CPU和外设之间的数据缓冲
- 状态寄存器: 获取执行结果和设备的状态信息,以让CPU知道是否准备好
- 控制寄存器: 由CPU写入,以便启动命令或更改设备模式
为了实现CPU与I/O端口进行通信,有两种方法:
- 独立编址
- 统一编址
I/O控制方式
设备管理的主要任务之一是控制设备和内存或CPU之间的数据传送。
1.程序直接控制方式
简单且易于实现,由于CPU和设备只能串行工作,导致CPU利用率相当低
2.中断驱动方式
允许I/O设备主动打断CPU的运行并请求服务,从而“解放”CPU。
从CPU的角度来看,CPU发出读命令,然后保存当前运行程序的上下文(现场,包括程序计数器以及处理机寄存器),转去执行其他程序。在每个指令周期的末尾,CPU检查中断。当有来自I/O控制器的中断时,CPU保存当前正在运行程序的上下文,转去执行中断处理程序以处理该中断。这时,CPU从I/O控制器读一个字的数据传送到寄存器,并存入主存,接着,CPU恢复发出I/O命令的程序(或其他命令)的上下文,然后继续执行。
中断驱动方式比程序直接控制方式有效,但由于数据中的每个字在存储器与I/O控制器之间的传输都必须经过CPU,这就导致了中断驱动方式仍然会消耗较多的CPU时间。
3.DMA方式
DMA(之间存储器存取)是在I/O设备和内存之间开辟直接的数据交换通路,彻底“释放”CPU
特点:
- 基本单位是数据块
- 所传送的数据,是从设备直接送入内存,或者相反
- 仅在传送一个或多个数据块的开始和结束时,才需要CPU干预,整块数据的传送是在DMA控制器的控制下完成的。
要在主机与控制器之间实现成块数据的直接交换,必须在DMA控制器中设置以下4类寄存器:
- 命令/状态寄存器(CR)
- 内存地址寄存器(MAR)
- 数据寄存器(DR)
- 数据计数器(DC)
DMA方式与中断方式的主要区别:
中断方式在每个数据需要传输时中断CPU,而DMA方式则是在所要求传送的一批数据全部传送结束时才中断CPU;此外,中断方式的数据传送是在中断处理时由CPU控制完成的,而MDA方式则是在DMA控制器的控制下完成的。
4.通道控制方式
I/O通道是指专门负责输入/输出的处理机。通道属于硬件
I/O通道与一般处理机的区别:通道指令的类型单一,没有自己的内存,通道所执行的通道程序是放在主机的内存中,也就是说通道与CPU共享内存
I/O通道与DMA方式的区别:DMA方式需要CPU来控制传输的数据块大小,传输的内存位置,而通道方式中这些信息是由通道控制的。另外,每个DMA控制器对应一台设备或内存传递数据,而一个通道可以控制多态设备与内存的数据交换
I/O软件层次结构
总结记忆点
- 可寻址是块设备的基本特征
- 共享设备是指一段时间内允许多个进程同时访问的设备
- I/O控制方式为:程序直接控制方式,中断驱动方式,DMA方式,通道控制方式
- 接口用于传输信号,I/O逻辑即设备控制器用来实现对设备的控制
- DMA是在I/O设备和主存之间建立一条直接数据通路
- 通道又称I/O处理机,用于实现内存与外设之间的信息传输
- 字节多路通道 用作连接大量的低速或中速I/O设备
- 及时性不是设备分配中应考虑的问题
- 通道控制设备控制器,设备控制器控制设备工作
5.2 设备独立性软件
5.2.2 高速缓存与缓冲区
1. 磁盘高速缓存
磁盘高速缓存逻辑上属于磁盘,物理上则是驻留在内存中的盘块
高速缓存在内存中分为两种形式:
- 在内存中开辟一个单独的空间作为磁盘高速缓存,大小固定
- 把未利用的内存空间作为一个缓冲池,供请求分页系统和磁盘I/O时共享
2. 缓冲区
引入缓冲区的目的:
- 缓和CPU与I/O设备间速度不匹配的矛盾
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
- 解决基本数据单元大小不匹配的问题
- 提高CPU和I/O设备之间的并行性
实现方法:
- 采用硬件缓冲区,但由于成本太高,除一些关键部位外,一般不采用硬件缓冲器
- 采用缓冲区(位于内存区域)
缓冲区管理需要重点考虑的问题是:
实现进程访问缓冲区的同步
根据系统设置缓冲区的个数,缓存技术可以分为以下几种:
1. 单缓冲
在块设备输入时,假定从磁盘把一块数据输入到缓冲区的时间为T,操作系统将该缓冲区中的数据传送到用户区的时间为M,而CPU对这一块数据处理的时间为C
假设初始状态为:工作区是满的,缓冲区是空的。如题目无明确说明,通常认为缓冲区的大小和工作区的大小相等
单缓冲区处理每块数据的用时为max(C,T) + M
2. 双缓冲
双缓冲区处理一块数据的用时为 max(C + M, T)
3. 循环缓冲
4. 缓冲池
为了使并发进程能有效地进行输入和输出
缓冲池在主存中
5.2.3 设备分配与回收
1. 设备分配概述
- 独占设备
- 共享设备
- 虚拟设备
2. 设备分配的数据结构
设备分配依据的主要数据结构:
- 设备控制表(DCT)
- 控制器控制表(COCT)
- 通道控制表(CHCT)
- 系统设备表(SDT)
3. 设备分配策略
对于独占设备,既可以采用动态分配方式,也可以采用静态分配方式,但往往采用静态分配方式。共享设备一般采用动态分配方式。
4. 设备分配的安全性
指设备分配中应防止发生进程死锁
- 安全分配方式,缺点:CPU和I/O设备是串行工作
- 不安全分配方式,优点:一个进程可以同时操作多个设备,使进程推进迅速,缺点:有可能造成死锁
5. 逻辑设备名到物理设备名的映射
为了提高设备分配的灵活性和设备的利用率,方便实现I/O重定向,引入了设备独立性。
设备独立性 指应用程序独立与具体使用的物理设备
为了实现设备独立性,在应用程序中使用 逻辑设备名 来请求使用某类设备,在系统中设置一张逻辑设备表(LUT),用于将逻辑设备名映射为物理设备名
在系统中可采取两种方式设备逻辑设备表:
- 在整个系统中只设置一张LUT。主要适用于单用户系统
- 为每个用户设置一张LUT,每当用户登陆时,系统便为该用户建立一个进程,同时也为之建立一张LUT,并将该表放入进程的PCB中
5.2.4 SPOOLing技术(假脱机技术)
为了缓和CPU的高速性与I/O设备的低速性之间的矛盾
组成:
- 输入井和输出井
- 输入缓冲区和输出缓冲区
- 输入进程和输出进程
SPOOLing系统特点:
- 提高了I/O的速度,将对低速I/O设备执行的I/O设备演变为对磁盘缓冲区中数据的存取
- 将独占设备改造为共享设备
- 实现了虚拟设备功能
SPOOLing技术是一种以空间换时间的技术
总结
- 提高单机资源利用率的关键技术是:多道程序设计技术
- 虚拟设备是靠SPOOLing技术来实现的
- SPOOLing技术的主要目的是:提高独占设备的利用率
- 在采用SPOOLing技术的系统中,用户打印结果首先被送到 磁盘固定区域
- 采用SPOOLing技术的计算机系统,需要使用磁盘空间(输入井和输出井)和内存空间(输入/输出缓冲区),不需要外围计算机的支持
- 设备可视为特殊文件
- 对于具备设备独立性的系统,更换物理设备后只需更换驱动程序
5.3 磁盘和固态硬盘
5.3.1 磁盘
磁盘盘面上的数据存储在一组同心圆中,称为磁道,磁道又划分为几百个扇区,每个扇区固定存储大小,一个扇区称为一个盘块,相邻磁道及相邻扇区通过一定的间隙分隔开,以避免精度错误
扇区是磁盘可寻址的最小单位,磁盘上能存储的物理块数目由扇区数,磁道数及磁盘面数决定。
磁盘地址用“柱面-盘面号-扇区号”表示
5.3.2 磁盘的管理
1.磁盘初始化
在磁盘可以存储数据之前,必须将它分成扇区,以便磁盘控制器能够进行读写操作,这个过程称为低级格式化(或物理格式化)
2.分区
在可以使用磁盘存储文件之前,操作系统还要将自己的数据结构记录到磁盘上,分为两步:
- 将磁盘分为由一个或多个柱面组成的分区(即C盘,D盘等分区),每个分区起始扇区和大小都记录在磁盘主引导记录的分区表中
- 对物理分区进行逻辑格式化(创建文件系统),操作系统将初始的文件系统数据结构存储到磁盘上
因为扇区的单位太小,为了提高效率,操作系统将多个相邻的扇区组合在一起,形成一簇。为了更高效的管理磁盘,一簇只能存放一个文件的内容,文件所占用的空间只能是簇的整数倍;如果文件大小小与一簇,也要占用一簇的空间
3.引导块
计算机启动时需要运行一个初始化程序(自举程序),它初始化CPU,寄存器,设备控制器和内存等,接着启动操作系统。
自举程序通常存放在ROM中,通常只在ROM中保留很小的自举装入程序,而将完整功能的引导程序保存在磁盘的启动块上,启动块位于磁盘固定位置,具有启动分区的磁盘称为启动磁盘或系统磁盘
4. 坏块
对坏盘的处理实质上就是用某种机制使系统不去使用坏块
5.3.3 磁盘调度算法
一次磁盘读写的时间由寻找(寻道)时间,旋转延迟时间和传输时间决定
- 寻找时间\(T_s\)
活动头磁盘在读写信息前,将磁头移动到指定磁道所需要的时间,这个时间除了跨越n条磁道的时间外,还包括启动磁臂的时间s
\[ T_s = m * n + s \]
m是与磁盘驱动器速度有关的常数,约为0.2ms
,磁臂的启动时间约为2ms
- 旋转延迟时间\(T_r\)
磁头定位到某一磁道的扇区所需要的时间,设磁盘的旋转速度为r
\[ T_r = \frac{1}{2r} \]
对于硬盘,典型的旋转速度为5400
转/分,相当于11.1ms
,则\(T_r\)为5.55ms
- 传输时间\(T_t\)
从磁盘读出或向磁盘写入数据所经历的时间,这个时间取决于每次所写或读的字节数b和磁盘的旋转速度
\[ T_t = \frac{b}{rN} \]
r为磁盘每秒的转数,N为一个磁道上的字节数
在磁盘存取时间的计算中,寻道时间与磁盘调度算法相关,而延迟时间和传输时间都与磁盘旋转速度相关,且为线性相关
总平均存取时间\(T_a\)
\[ T_a = T_s + \frac{1}{2r} + \frac{b}{rN} \]
常用磁盘调度算法
- 先来先服务(FCFS)算法
- 最短寻找时间优先(SSTF)算法
会产生饥饿现象
- 扫描(SCAN)算法(又称电梯调度算法)
可避免饥饿现象
- 循环扫描(C-SCAN)算法
消除了对两端磁道请求的不公平
改进型SCAN和C-SCAN,不需要到达磁盘端点,称为LOOK调度和C-LOOK调度
无特殊说明默认SCAN和C-SCAN为LOOK和C-LOOK调度
除了减少寻找时间外,减少延迟时间也是提高传输效率的重要因素,可以对盘面扇区进行交替编号
5.3.4 固态硬盘
1. 固态硬盘特性
固态硬盘(SSD)是一种基于闪存技术的存储器。
随机读写性能明显高于磁盘
随机写比较慢,易于磨损
2. 磨损均衡
- 动态磨损均衡,写入数据时,自动选择较新的闪存块。
- 静态磨损均衡,这种技术更先进。