五、I/O系统

IO控制方式

程序控制IO

​ 轮询IO,CPU代表进程向IO模块发出指令,然后忙等,直到IO完成;

优点:简单

缺点:CPU效率低

中断驱动

​ 不用不断询问,完成后由设备控制器主动地来通知设备驱动程序说这次结束;

优点:提高CPU利用率

缺点:每次IO都要中断CPU,浪费了时间

DMA

​ 直接存储器访问方式,有专门的控制器完成IO

优点:CPU只需干预开始和结束的工作,而其中的一批数据读写无需CPU控制,适用于数据块传输

缺点:每个设备一个DMA

通道

​ 一个特殊的有自己的指令的处理器,专门负责IO,与CPU分时使用内存;

优点:一个通道程序可以完成多个IO操作,减少CPU干预

缺点:贵

缓冲区

缓冲技术的优点:

  1. 匹配CPU与外设的不同处理速度
  2. 减少CPU中断次数
  3. 提高CPU与IO设备的并行性

RAID

一种把多块独立的硬盘(物理硬盘)按照不同方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据冗余的技术。

优点:成本低,功耗小,传输速率高,可提供容错功能

RAID0:仅提供了并行交叉存取。它虽然有效提高了磁盘I/O速度,但并无冗余校验功能;

RAID1:将每一数据块重复存入镜像磁盘,以改善磁盘机的可靠性。镜像盘也称拷贝盘,使有效容量下降了一半,成本较高。

RAID10:10是先镜像再分块,01是先分块再镜像,显然10的容错性更好。

RAID2:采用海明码纠错的磁盘阵列,将数据位交叉写入几个磁盘中。按位条带化。

RAID3:采用奇偶校验冗余的磁盘阵列,也采用数据位交叉,阵列中只有一个校验盘。

​ 优点:将磁盘分组,采用字节级别的条带,读写要访问所有盘,每组一个盘作为奇偶校验

​ 缺点:恢复时间长,读写性能水桶效应瓶颈

RAID4:一种独立传送磁盘阵列,采用数据块交叉,用一个校验盘。将数据按块交叉存储在多个磁盘上。

​ 优点:冗余代价等于RAID3,访问方法不同于RAID3,使用较少磁盘参与操作,使得磁盘阵列可以并行 操作

​ 缺点:随机读快,随机写慢(竞争同一个校验盘)

测试题

IO设备分类:

  1. 块设备,数据块为单位,速率高可寻址
  2. 字符设备:字符为单位,速率低不可寻

MIPS平台的IO端口地址:

内存映像编址,intel体系是独立IO编址

设备独立性是实现了:

应用程序与物理设备无关

设备驱动程序包括:

自动配置和初始化子程序、IO操作子程序、中断服务子程序

采用双缓冲的条件是:

CPU和外设的速度相近

SPOOLing程序和外设进行数据交换是:

实际IO,虚拟设备技术把独享设备转变成具有共享特征的虚拟设备提高设备利用率

提高I/O性能的方式:

DMA,预先读,延时写,异步IO,缓冲,SPOOLING

Linux中设备管理的代码占中代码量的:

1/2以上

某文件占10个磁盘块,现要把该文件的磁盘块逐个读入主存缓冲区,并送用户区进行分析。一个缓冲区与磁盘块大小相等。把一个磁盘块读入缓冲区的时间为100μs,缓冲区数据传送到用户区的时间是50μs,CPU对一块数据进行分析的时间为50μs。分别计算在单缓冲区和双缓冲区结构下,分析完该文件的时间是多少?

方法:画时序带重叠的图,单缓冲下读入缓冲区和CPU分析可以并行,双缓冲下相邻任务都可以并行。

单缓冲:150*10+50=1550

双缓冲:100*10+50+50=1100

假设磁盘请求以柱面10、35、20、70、2、3 和38的次序到达。寻道时磁头每移动一个柱面需要6ms,磁头起停时间忽略不计,计算以下各算法所需的寻道时间是多少:

a) 假设磁头初始位置为0, 先来先服务

b) 假设磁头初始位置为0, 最短寻道时间优先

c) 查看扫描(Look)算法,假设磁头初始位置为15,方向向上(向大柱面号)

方法:先确定柱面顺序,再加减前后柱面序号得到移动柱面量

先来先服务,磁头移动的次序为:

0 → 10 → 35 → 20 → 70 → 2 → 3 → 38

寻道总时间:(10+25+15+50+68+1+35) * 6 = 1224ms

最短寻道时间优先,磁头移动的次序为:

0 → 2 → 3 → 10 → 20 → 35 → 38 → 70

寻道总时间:(2+1+7+10+15+3+32) * 6 = 420ms

查看扫描Look算法,磁头移动的次序为:

15 → 20 → 35 → 38 → 70 → 10 → 3 → 2

寻道总时间:(5+15+3+32+60+7+1) * 6 = 738ms