第五章:输入输出系统

一、I/O管理概述

1. I/O设备

(1)设备分类

分类依据设备类型描述示例
按信息交换单位块设备数据交换以块为单位,传输速率高,可寻址,采用DMA方式磁盘
字符设备数据交换以字符为单位,传输速率低,不可寻址,采用中断I/O方式交互式终端机、打印机
按传输速率低速设备传输速率低,通常用于输入和输出键盘、鼠标
中速设备传输速率中等,常用于网络和存储设备网卡、USB存储设备
高速设备传输速率高,常用于高速存储和网络设备SSD、千兆以太网卡

(2)I/O接口

(组成:设备控制器与CPU的接口+设备控制器与设备的接口+I/O逻辑)

image

(3)I/O端口

  • 概念:是指设备控制器中可被CPU直接访问的寄存器(数据、状态、控制寄存器)
  • 编址方式:独立编制、统一编址

2. I/O控制方式

(1)程序直接控制方式、中断驱动方式、DMA方式(计组详细介绍)

(2)通道控制方式

  • 通道:I/O通道是专门负责输入/输出的处理机,是DMA方式的发展
  • 执行过程:CPU发送通道程序首地址和I/O设备–>通道执行通道指令–>传输结束向CPU发送中断请求
  • 通道指令类型单一,通道程序存放在主机的内存中(通道与CPU共享内存)
  • 通道与DMA
    • 一个DMA控制一台设备与内存的数据交换;一个通道可以控制多台设备与内存的数据交换
    • DMA方式需要CPU控制传输的数据块大小、 传输的内存位置; 通道方式中这些信息都是由通道控制
  1. DMA(直接内存访问)
  • DMA允许外部设备(如磁盘控制器、网卡等)在不经过CPU干预的情况下直接读写内存。当CPU启动一个DMA传输后,DMA控制器接管数据传输过程,根据预设的地址、传输方向和字节数进行数据交换。
  • 在DMA方式下,虽然CPU不必参与每个数据字节的传输,但仍需要初始化DMA传输参数,如设置源地址、目的地址及传输长度等,并在传输完成后接收到中断通知。
  • 每个设备通常需要自己的DMA控制器来管理其与内存之间的数据传输。
  1. 通道(Channels)
  • 通道是比DMA更高级别的I/O技术,常见于大型计算机系统中,它实际上是一个能够执行有限指令集的微型处理器,专门负责输入输出操作。
  • 通道可以独立于CPU运行简单的程序(称为通道程序),这些程序能够管理和控制多个I/O设备的数据传输任务。
  • 当CPU向通道发送一条I/O指令后,通道就能够自主完成一组相关的读写操作,包括设备寻址、数据缓冲区管理以及完成后的状态报告等,显著减少了CPU的介入次数。
  • 一个通道可以连接并同时服务多个外设,实现真正的并行I/O操作,极大地提高了系统的并发处理能力。

3. I/O软件层次结构

(1)用户层I/O软件

  • 实现与用户交互的接口, 用户可直接调用在用户层提供的、 与I/O操作有关的库函数

(2)设备独立性软件

  • 对用户提供统一接口,如read\write命令
  • 对设备的分配回收、逻辑设备名和物理设备名的映射、缓冲管理、差错控制、速率差异…
  • 把系统调用参数翻译成设备操作命令

(3)设备驱动程序

  • 与硬件直接相关,负责具体实现操作系统对设备发出的操作命令
  • 把抽象I/O请求变为具体要求,如把read\write命令变为设备能识别的命令
  • 再例如将磁盘块号转换为磁盘的盘面、 磁道号及扇区号(2013)

(4)中断处理程序

  • 进行进程上下文的切换,对处理中断信号源进行测试,读取设备状态和修改进程状态
  • 是首先获得键盘输入信息的程序(2010)

4. 应用程序I/O接口

(1)字符设备接口、块设备接口、网络设备接口

(2)I/O接口模式

I/O操作类型特点
阻塞I/O用户进程调用I/O操作时, 进程就被阻塞, 需要等待I/O操作完成, 进程才被唤醒继续执行
非阻塞I/O用户进程调用I/O操作时, 不阻塞该进程, 该I/O调用返回一个错误返回值

二、设备独立性软件

1. 高速缓存与缓冲区

(1)磁盘高速缓存

  • 目的:减少磁盘I/O次数(2015)
  • 利用内存的存储空间来暂存从磁盘中读出的一系列盘块的信息
  • 磁盘高速缓存逻辑上属于磁盘,物理上则是驻留在内存中的盘块

(2)缓冲区

引入缓冲区的原因

  • 缓和CPU与I/O设备间速度不匹配的矛盾
  • 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
  • 解决数据粒度不匹配的问题
  • 提高CPU和I/O设备之间的并行性

(3)分类

① 单缓冲区与双缓冲区 image

② 环形缓冲区

  • 多个大小相等的缓冲区首尾相连构成一个环形
  • in指针指向可以输入数据的第一个空缓冲区
  • out指针指向可以提取数据的第一个满缓冲区

③ 缓冲池

  • 了解即可

2. 设备分配与回收

(1)考虑因素

  • 固有属性
设备类型描述
独占设备使用时不再允许其他设备申请使用,属于临界资源,不合理分配可能会引起进程死锁(一般用静态分配)
共享设备一段时间内被同时访问(而不是同一时间内被同时访问),分配不会引起进程死锁(一般用动态分配)
虚拟设备虚拟设备:SPOOLing技术实现的,以空间换时间
  • 安全性
    • 安全分配:进程获得I/O后便进入阻塞状态
    • 不安全分配:发出I/O请求后继续运行

(2)分配方式

  • 静态分配
    • 作业开始前一次性分配完设备,不会死锁
  • 动态分配
    • 边运行边分配,可能死锁

(3)设备独立性

  • 概念:应用程序独立于具体使用的物理设备
  • I/O重定向:更换用于I/O操作的设备时不必更改应用程序(2020)
  • 外部设备是一种特殊的文件,可以用文件名访问物理设备(2020)
  • 为实现设备独立性,须在驱动程序上设置一层软件,称为设备独立性软件
  • 程序员和应用程序使用逻辑设备名来请求某类设备(2009、2020)
  • 系统实际执行时必须将逻辑设备名转为物理设备名(2020)
  • 逻辑设备表LUT(逻辑设备名,物理设备名,驱动程序入口地址)用于实现逻辑设备名和物理设备名的转换

(4)设备分配中的数据结构

  • 设备控制表DCT(表述设备属性,如标识符、状态等)
  • 控制器控制表COCT
  • 通道控制表CHCT
  • 系统设备表SDT(系统只有一张,包括设备类、设备标识符、DCT等)
  • 逻辑设备表LUT(逻辑设备名,物理设备名,驱动程序入口地址)
  • 分配的流程,从资源多的到资源紧张的:LUT->SDT->DCT->COCT->CHCT

(5)分配步骤

  • 根据用户请求的I/O设备的逻辑名,查找逻辑设备和物理设备的映射表
  • 以物理设备为索引,查找SDT,找到该设备所连接的DCT
  • 根据DCT找到COCT再找到CHCT
  • 在有通道的系统中,一个进程只有获得了通道,控制器和所需设备三者之后,才具备了进行I/O操作的物理条件

3. 假脱机系统(SPOOLing)

(1)主要组成:

image (2)特点

  • 提高了I/O的速度和设备利用率
  • 将独占设备改造为共享设备,以空间换时间
  • 实际分给用户进程的不是打印设备,而是共享输出井中的磁盘上的一片存储区域
  • 外设输入数据首先放在磁盘输入井中
  • 由操作系统控制设备与输入/输出井之间的数据传送(2016)
  • 在输入进程的控制下,"输入缓冲区“用于暂存从输入设备输入的数据,之后再转存到输入井中
  • 在输出进程的控制下,"输出缓冲区“用于暂存从输出井送来的数据,之后再传到到输出设备上

(3)支持条件

  • 大容量高速度的外存、spooling相关软件、独占设备、多道程序设计技术(2016)

三、磁盘和固态硬盘

1. 磁盘结构

(1)图示

image

(2)重要概念

  • 扇区:通常固定为512B,也称为盘块,是磁盘最小的物理存储单元
  • 簇:由于扇区众多难以寻址,通常把2^n个扇区合并形成簇,一个簇中只能存放一个文件的内容(2017)

(3)地址结构

  • 柱面号,盘面号,扇区号
  • 假设每个磁道m个扇区,每个柱面n个盘面,每个盘面q个磁道。第x个盘块地址为
  • 柱面号=x/mn;盘面号=(x%mn)/m;扇区号=x/m

2. 磁盘的管理

(1)磁盘初始化

  • 物理格式化
    • 将磁盘各个磁道划分为扇区,一个扇区通常包含三部分
    • image
    • 格式化后磁盘空间会减少,用来存储前导码、ECC校验码以及间隙
  • 对磁盘分区
    • 为什么要分区:方便管理、数据安全
  • 逻辑格式化
    • 建立文件系统
    • 建立引导块、根目录、空闲块管理、空文件系统(2017)
    • 为什么要逻辑格式化:操作系统无法识别系统上磁盘分区的格式

(2)坏块

  • 坏块标明
    • 在FAT中指明,坏块对操作系统不透明
  • 扇区备用
    • 使用时用其它扇区替换,坏块对操作系统透明

3. 磁盘调度算法

(1)读写时间

  • 组成
    • 寻找(寻道)时间、(旋转)延迟时间、传输时间
  • 减少延迟方法
    • 交替编号:让编号相邻的扇区在物理上不相邻
    • 错位命名:让相邻盘面的扇区编号错位

(2)调度算法

调度算法描述
先来先服务(FCFS)性能很差,但不会导致磁臂黏着(2018)
最短寻找时间优先会导致饥饿现象
扫描算法(电梯算法、SCAN)对各个未知的响应频率不均匀
默认是LOOK算法(2015)
循环扫描算法(C-SCAN)朝某方向移动到最末端后快速返回,返回期间不处理请求
LOOK/C-LOOK不移动到最末端就可以返回

4. 提高磁盘I/O速度途径

  • 磁盘高速缓存:在内存中为磁盘盘块设置一个缓冲区,在缓冲区中保存了某些盘块的副本
  • 提前读:在读当前块时也把下一个盘块数据读入缓冲区(2012)
  • 延迟写:缓冲区的数据不立即写回磁盘,因为可能会在不久后被访问(2012)
  • 重排I/O请求次序(2012)
  • 优化文件物理块分布(2012)
  • 虚拟盘:利用内存空间去仿真磁盘
  • 廉价磁盘冗余阵列
    • 方法:把数据分别存储到不同磁盘的相同位置,各个磁盘数据并行传输
    • 优点:速度提高n-1倍;牺牲1/n的容量为代价

5. 固态硬盘

(1)图示

基于闪存技术 image

(2)特性

  • 数据以页为单位读写,只有在一页所属的块被整个擦除后才能写这一页

(3)磨损均衡

  • 动态磨损均衡
    • 写入数据时, 自动选择较新的闪存块。 老的闪存块先歇一歇
  • 静态磨损均衡
    • 没有数据写入时自动进行数据分配,让老闪存块承担无需写任务的存储任务,平时读写操作在新闪存块中进行
  • 静态磨损均衡比动态磨损均衡的性能更好