Skip to content
Self-Knowing

第五章:输入输出管理

约 1513 个字 预计阅读时间 5 分钟

概念

按传输速率分类:低速设备(键盘,鼠标等),中速设备,高速设备。

按信息交换的单位分类:

  • 块设备:传输快,可寻址
  • 字符设备:传输慢,不可寻址,常采用中断驱动方式

设备控制器

组成:

  • CPU 与控制器之间的接口
  • IO逻辑
  • 控制器与设备之间的接口

实现的功能:

  • 接受和识别CPU 发出的命令
  • 向 CPU 报告设备的状态
  • 数据交换
  • 地址识别

IO端口:设备控制器中的寄存器。

  • 寄存器独立编址
  • 统一编址:与内存地址统一编制

IO控制方式

程序直接控制方式:CPU 轮询检查,每次一个字。

中断驱动方式:CPU和IO可并行工作,每次一个字。

DMA方式(直接存储器存取,Direct Memory Access)

  • 每次一个块或多个快(连续)
  • 只在传送开始和结束时,需要CPU干预
  • 数据 不经过 CPU,直接读入内存。
  • 寄存器:数据计数器(DC,Data Counter),数据寄存器(DR,Data Register)

通道管理方式

  • 通道:专门负责IO的处理机
  • 每次一组块

软件层次结构

  1. 用户层软件:实现了与用户交互的接口
  2. 设备独立性软件:逻辑设备地址
  3. 设备驱动程序
  4. 中断处理程序
  5. 硬件

设备独立性

缓冲区

数据先输入到缓冲区,然后传送到用户区,再处理。

  • 缓冲区空时,只能输入
  • 缓冲区未空时,只能输出
  • 读入缓冲区,送入用户区,处理数据
  • 时间 = 不重合的部分 * 块数 + 重合的部分(一个)

单缓冲

image-20240221145502035

双缓冲

有两个缓冲区,并行的两个缓冲区,可以一个读入,一个传送。

image-20240221145523082

设备的分配与回收

设备的分类:独占设备,共享设备,虚拟设备。

一个「通道」控制多个「设备控制器」,一个设备控制器控制多个「设备」

数据结构

系统设备表(SDT,System Device Table):记录系统中全部设备的情况

设备控制表(DCT,Device Control Table):每个设备一张DCT,用于记录设备情况

控制器控制表(COCT,Controller of Control Table):每个设备控制器一张COCT

通道控制表(CHCT,Chanel Control Table):每个通道一张CHCT

设备分配的步骤

  1. 根据进程请求的「物理设备名」查找 系统设备表
  2. 根据 系统设备表 找到 设备控制表
  3. 根据 设备控制表 找到 控制器控制表
  4. 根据 控制器控制表 找到 通道控制表

增加一张「逻辑设备表」(LUT,Logical Unit Table):将逻辑设备名转化为物理设备名

假脱机技术(SPOOLing)

为了缓和 CPU 和 IO 设备速度之间的矛盾,引入了 脱机输入/输入技术

假脱机技术(SPOOLing技术):用软件模拟脱机技术。

  • 输入过程:输入设备 -> 输入缓冲区 -> 输入井
  • 输出过程:输出井 -> 输出缓冲区 -> 输出设备

用假脱机技术将「独占式设备」改造成「共享设备」

  • 不直接分配给进程设备,用户进程实际分配到的是 外存区,即虚拟设备
  • 在输出井中分配空间,暂存数据

磁盘

物理地址:可以用 (柱面号,盘面号,扇区号) 来表示一个磁盘块。

  • 盘面号:哪一层
  • 柱面号:某层的哪一圈
  • 扇区号:某层的某圈的那一扇

image-20240220204843334

磁盘的管理:磁盘初始化,分区,引导块,坏块。

磁盘调度算法

一次磁盘的读写

寻道时间:找到柱面(哪一圈)

  • 磁头臂启动时间为 s
  • 跨越一个磁道耗时 m,跨 n 个
  • 时间 \(= s + m * n\)

延迟时间:找到扇区(哪一扇)

  • 转一圈的时间为 \(\frac{1}{r}\) ,平均转半圈。

  • 平均延迟时间 \(= \frac{1}{2} * \frac{1}{r}\)

传输时间:写入数据的时间

  • 假设磁盘转速为 r ,写入的字节数为 b,每个磁道上的字节数为 N
  • 转一圈的时间为 \(\frac{1}{r}\) ,转 \(\frac{b}{N}\)
  • 时间 \(= \frac{1}{r} * \frac{b}{N}\)

先来先服务(FCFS)

按先后顺序进行处理

最短寻找时间优先(SSTF)

先处理与当前磁头最近的磁道

优点:性能较好,平均寻道时间短

缺点:可能会饥饿

扫描算法(SCAN)

只有磁头移动到 最外侧磁道 的时候才能往内移动,移动到 最内侧磁道 的时候才能往外移动。

像扫描一样,从内到外,从外到内,周而复始。

优点:性能较好,平均寻道时间较短,不会饥饿

LOOK算法

扫面算法的改进,如果在磁头移动方向上已经没有别的请求,就改变移动方向

循环扫描算法(C-SCAN)

规定只有磁头朝某个特定方向移动时才处理磁道访问请求,而返回时直接快速移动至起始端市不处理任何请求。

C-LOOK算法

循环扫描算法的改进,如果在磁头移动方向上已经没有别的请求,就改变移动方向


降低延迟时间的方法:读完一个扇区后需要一段时间处理才能读下一个

  • 交替编号:让编号相邻的 扇区 在物理上不相邻
  • 错位命名:让相邻 盘面 的扇区编号错位

固态硬盘(SSD)

原理

基于闪存技术 Flash Memory,属于电可擦除ROM,即 EEPROM

读写性能特征

以 页(page)为单位读写,以 块(block)为单位“擦除”

支持随机访问,读快、写慢。

磨损均衡技术

将 “擦除” 平均分布在各个块上,以提升使用寿命

  • 动态磨损均衡:写入数据时,优先擦除次数少的
  • 静态磨损均衡:让老旧的闪存块承担储存任务,新的闪存块承担写任务。

Created: April 24, 2026
Last update: April 24, 2026

Discussion