操作系统-第五章-输入输出管理

重点掌握I/O接口,I/O软件。三种I/O控制方式,高速缓存与缓冲区,SPOOLing技术,磁盘特性和调度算法。

I/O管理概述

I/O 设备

I/O接口

I/O接口(设备控制器)位于CPU与设备之间,它既要与CPU通信,又要与设备通信,还要具有按CPU发来的命令去控制设备工作的功能。

主要由三部分组成:

  1. 设备控制器与CPU接口 ,该接口有三类信号线:数据线,地址线和控制线
  2. 设备控制器与设备的接口
  3. I/O逻辑

设备控制器的主要功能:

  1. 接收和识别CPU发来的命令,如磁盘控制器能接收读,写,查找等命令
  2. 数据交换,包括设备和控制器之间的数据传输,以及控制器和主存之间的数据传输
  3. 标识和报告设备的状态,以供CPU处理
  4. 地址识别
  5. 数据缓冲
  6. 差错控制

I/O端口

I/O端口是指设备控制器中可被CPU直接访问的寄存器,主要有以下三类寄存器:

  1. 数据寄存器: 实现CPU和外设之间的数据缓冲
  2. 状态寄存器: 获取执行结果和设备的状态信息,以让CPU知道是否准备好
  3. 控制寄存器: 由CPU写入,以便启动命令或更改设备模式

为了实现CPU与I/O端口进行通信,有两种方法:

  1. 独立编址
  2. 统一编址

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

特点:

  1. 基本单位是数据块
  2. 所传送的数据,是从设备直接送入内存,或者相反
  3. 仅在传送一个或多个数据块的开始和结束时,才需要CPU干预,整块数据的传送是在DMA控制器的控制下完成的。

要在主机与控制器之间实现成块数据的直接交换,必须在DMA控制器中设置以下4类寄存器:

  1. 命令/状态寄存器(CR)
  2. 内存地址寄存器(MAR)
  3. 数据寄存器(DR)
  4. 数据计数器(DC)

DMA方式与中断方式的主要区别:

中断方式在每个数据需要传输时中断CPU,而DMA方式则是在所要求传送的一批数据全部传送结束时才中断CPU;此外,中断方式的数据传送是在中断处理时由CPU控制完成的,而MDA方式则是在DMA控制器的控制下完成的。

4.通道控制方式

I/O通道是指专门负责输入/输出的处理机。通道属于硬件

I/O通道与一般处理机的区别:通道指令的类型单一,没有自己的内存,通道所执行的通道程序是放在主机的内存中,也就是说通道与CPU共享内存

I/O通道与DMA方式的区别:DMA方式需要CPU来控制传输的数据块大小,传输的内存位置,而通道方式中这些信息是由通道控制的。另外,每个DMA控制器对应一台设备或内存传递数据,而一个通道可以控制多态设备与内存的数据交换

I/O软件层次结构

总结记忆点

  1. 可寻址是块设备的基本特征
  2. 共享设备是指一段时间内允许多个进程同时访问的设备
  3. I/O控制方式为:程序直接控制方式,中断驱动方式,DMA方式,通道控制方式
  4. 接口用于传输信号,I/O逻辑即设备控制器用来实现对设备的控制
  5. DMA是在I/O设备和主存之间建立一条直接数据通路
  6. 通道又称I/O处理机,用于实现内存与外设之间的信息传输
  7. 字节多路通道 用作连接大量的低速或中速I/O设备
  8. 及时性不是设备分配中应考虑的问题
  9. 通道控制设备控制器,设备控制器控制设备工作

5.2 设备独立性软件

5.2.2 高速缓存与缓冲区

1. 磁盘高速缓存

磁盘高速缓存逻辑上属于磁盘,物理上则是驻留在内存中的盘块

高速缓存在内存中分为两种形式:

  1. 在内存中开辟一个单独的空间作为磁盘高速缓存,大小固定
  2. 把未利用的内存空间作为一个缓冲池,供请求分页系统和磁盘I/O时共享

2. 缓冲区

引入缓冲区的目的:

  1. 缓和CPU与I/O设备间速度不匹配的矛盾
  2. 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
  3. 解决基本数据单元大小不匹配的问题
  4. 提高CPU和I/O设备之间的并行性

实现方法:

  1. 采用硬件缓冲区,但由于成本太高,除一些关键部位外,一般不采用硬件缓冲器
  2. 采用缓冲区(位于内存区域)

缓冲区管理需要重点考虑的问题是:

实现进程访问缓冲区的同步

根据系统设置缓冲区的个数,缓存技术可以分为以下几种:

1. 单缓冲

在块设备输入时,假定从磁盘把一块数据输入到缓冲区的时间为T,操作系统将该缓冲区中的数据传送到用户区的时间为M,而CPU对这一块数据处理的时间为C

假设初始状态为:工作区是满的,缓冲区是空的。如题目无明确说明,通常认为缓冲区的大小和工作区的大小相等

单缓冲区处理每块数据的用时为max(C,T) + M

2. 双缓冲

双缓冲区处理一块数据的用时为 max(C + M, T)

3. 循环缓冲
4. 缓冲池

为了使并发进程能有效地进行输入和输出

缓冲池在主存中

5.2.3 设备分配与回收

1. 设备分配概述

  1. 独占设备
  2. 共享设备
  3. 虚拟设备

2. 设备分配的数据结构

设备分配依据的主要数据结构:

  1. 设备控制表(DCT)
  2. 控制器控制表(COCT)
  3. 通道控制表(CHCT)
  4. 系统设备表(SDT)

3. 设备分配策略

对于独占设备,既可以采用动态分配方式,也可以采用静态分配方式,但往往采用静态分配方式。共享设备一般采用动态分配方式。

4. 设备分配的安全性

指设备分配中应防止发生进程死锁

  1. 安全分配方式,缺点:CPU和I/O设备是串行工作
  2. 不安全分配方式,优点:一个进程可以同时操作多个设备,使进程推进迅速,缺点:有可能造成死锁

5. 逻辑设备名到物理设备名的映射

为了提高设备分配的灵活性和设备的利用率,方便实现I/O重定向,引入了设备独立性。

设备独立性 指应用程序独立与具体使用的物理设备

为了实现设备独立性,在应用程序中使用 逻辑设备名 来请求使用某类设备,在系统中设置一张逻辑设备表(LUT),用于将逻辑设备名映射为物理设备名

在系统中可采取两种方式设备逻辑设备表:

  1. 在整个系统中只设置一张LUT。主要适用于单用户系统
  2. 为每个用户设置一张LUT,每当用户登陆时,系统便为该用户建立一个进程,同时也为之建立一张LUT,并将该表放入进程的PCB中

5.2.4 SPOOLing技术(假脱机技术)

为了缓和CPU的高速性与I/O设备的低速性之间的矛盾

组成:

  1. 输入井和输出井
  2. 输入缓冲区和输出缓冲区
  3. 输入进程和输出进程

SPOOLing系统特点:

  1. 提高了I/O的速度,将对低速I/O设备执行的I/O设备演变为对磁盘缓冲区中数据的存取
  2. 将独占设备改造为共享设备
  3. 实现了虚拟设备功能

SPOOLing技术是一种以空间换时间的技术

总结

  1. 提高单机资源利用率的关键技术是:多道程序设计技术
  2. 虚拟设备是靠SPOOLing技术来实现的
  3. SPOOLing技术的主要目的是:提高独占设备的利用率
  4. 在采用SPOOLing技术的系统中,用户打印结果首先被送到 磁盘固定区域
  5. 采用SPOOLing技术的计算机系统,需要使用磁盘空间(输入井和输出井)和内存空间(输入/输出缓冲区),不需要外围计算机的支持
  6. 设备可视为特殊文件
  7. 对于具备设备独立性的系统,更换物理设备后只需更换驱动程序

5.3 磁盘和固态硬盘

5.3.1 磁盘

磁盘盘面上的数据存储在一组同心圆中,称为磁道,磁道又划分为几百个扇区,每个扇区固定存储大小,一个扇区称为一个盘块,相邻磁道及相邻扇区通过一定的间隙分隔开,以避免精度错误

扇区是磁盘可寻址的最小单位,磁盘上能存储的物理块数目由扇区数,磁道数及磁盘面数决定。

磁盘地址用“柱面-盘面号-扇区号”表示

5.3.2 磁盘的管理

1.磁盘初始化

在磁盘可以存储数据之前,必须将它分成扇区,以便磁盘控制器能够进行读写操作,这个过程称为低级格式化(或物理格式化)

2.分区

在可以使用磁盘存储文件之前,操作系统还要将自己的数据结构记录到磁盘上,分为两步:

  1. 将磁盘分为由一个或多个柱面组成的分区(即C盘,D盘等分区),每个分区起始扇区和大小都记录在磁盘主引导记录的分区表中
  2. 对物理分区进行逻辑格式化(创建文件系统),操作系统将初始的文件系统数据结构存储到磁盘上

因为扇区的单位太小,为了提高效率,操作系统将多个相邻的扇区组合在一起,形成一簇。为了更高效的管理磁盘,一簇只能存放一个文件的内容,文件所占用的空间只能是簇的整数倍;如果文件大小小与一簇,也要占用一簇的空间

3.引导块

计算机启动时需要运行一个初始化程序(自举程序),它初始化CPU,寄存器,设备控制器和内存等,接着启动操作系统。

自举程序通常存放在ROM中,通常只在ROM中保留很小的自举装入程序,而将完整功能的引导程序保存在磁盘的启动块上,启动块位于磁盘固定位置,具有启动分区的磁盘称为启动磁盘或系统磁盘

4. 坏块

对坏盘的处理实质上就是用某种机制使系统不去使用坏块

5.3.3 磁盘调度算法

一次磁盘读写的时间由寻找(寻道)时间,旋转延迟时间和传输时间决定

  1. 寻找时间\(T_s\)

活动头磁盘在读写信息前,将磁头移动到指定磁道所需要的时间,这个时间除了跨越n条磁道的时间外,还包括启动磁臂的时间s

\[ T_s = m * n + s \]

m是与磁盘驱动器速度有关的常数,约为0.2ms,磁臂的启动时间约为2ms

  1. 旋转延迟时间\(T_r\)

磁头定位到某一磁道的扇区所需要的时间,设磁盘的旋转速度为r

\[ T_r = \frac{1}{2r} \]

对于硬盘,典型的旋转速度为5400转/分,相当于11.1ms,则\(T_r\)为5.55ms

  1. 传输时间\(T_t\)

从磁盘读出或向磁盘写入数据所经历的时间,这个时间取决于每次所写或读的字节数b和磁盘的旋转速度

\[ T_t = \frac{b}{rN} \]

r为磁盘每秒的转数,N为一个磁道上的字节数

在磁盘存取时间的计算中,寻道时间与磁盘调度算法相关,而延迟时间和传输时间都与磁盘旋转速度相关,且为线性相关

总平均存取时间\(T_a\)

\[ T_a = T_s + \frac{1}{2r} + \frac{b}{rN} \]

常用磁盘调度算法

  1. 先来先服务(FCFS)算法

  1. 最短寻找时间优先(SSTF)算法

会产生饥饿现象

  1. 扫描(SCAN)算法(又称电梯调度算法)

可避免饥饿现象

  1. 循环扫描(C-SCAN)算法

消除了对两端磁道请求的不公平

改进型SCAN和C-SCAN,不需要到达磁盘端点,称为LOOK调度和C-LOOK调度

无特殊说明默认SCAN和C-SCAN为LOOK和C-LOOK调度

除了减少寻找时间外,减少延迟时间也是提高传输效率的重要因素,可以对盘面扇区进行交替编号

5.3.4 固态硬盘

1. 固态硬盘特性

固态硬盘(SSD)是一种基于闪存技术的存储器。

随机读写性能明显高于磁盘

随机写比较慢,易于磨损

2. 磨损均衡

  • 动态磨损均衡,写入数据时,自动选择较新的闪存块。
  • 静态磨损均衡,这种技术更先进。