6.1 I/O系统的功能、模型和接口
一、I/O系统的基本功能
- 隐藏物理设备的细节
- 与设备的无关性
- 提高处理机和I/O设备的利用率
- 对I/O设备进行控制
- 确保对设备的正确共享
- 错误处理
例:操作系统的I/O 子系统通常由四个层次组成,每一层明确定义 了与邻近层次的接口。其合理的层次组织排列顺序是( )。
A.用户级I/O软件、设备无关软件、设备驱动程序、中断处理程序
B.用户级I/O软件、设备无关软件、中断处理程序、设备驱动程序
C.用户级I/O软件、设备驱动程序、设备无关软件、中断处理程序
D.用户级I/O软件、中断处理程序、设备无关软件、设备驱动程序
6.2 I/O设备和设备控制器
一、I/O设备
I/O设备一般是由执行I/O操作的机械部分和执行控制I/O的电子 部件组成。通常将这两部分分开,执行I/O操作的机械部分就是 一般的I/O设备,而执行控制I/O的电子部件则称为设备控制器 或适配器(adapter)。
分为两部分来讲解I/O设备:
1.I/O设备的类型
2. 设备与控制器之间的接口
1.I/O设备的类型
I/O设备的类型繁多,从OS观点看,其重要的性能指标有:数据 传输速率、数据的传输单位、设备共享属性等。因而从以下不同 角度进行分类。
- 按设备的使用特性分类
- 按传输速率分类
按设备的使用特性分类:
存储设备:用于存储信息的主要设备。
输入/输出设备:可分为输入设备、输出设备和交互式设备
设备按传输速率分类:
- 低速设备:传输速率仅为每秒钟几个字节至数百个字节的 一类设备。
- 中速设备:传输速率为每秒钟数千个字节至数万个字节的 一类设备。
- 高速设备:传输速率为每秒钟数百个千字节至数十兆字节 的一类设备。
- 设备与控制器之间的接口
二、设备控制器
1.设备控制器的基本功能
(1) 接收和识别命令
(2) 数据交换
(3) 标识和报告设备的状态
(4) 地址识别
(5) 数据缓冲区
(6) 差错控制
2.设备控制器的组成
三、I/O通道
-
I/O通道设备的引入
虽然在CPU与I/O设备之间增加了设备控制器后,已能大大减少 CPU对I/O的干预,但当主机所配置的外设很多时,CPU的负担 仍然很重。为此,在CPU和设备控制器之间又增设了I/O通道 (I/O Channel)。 -
通道类型
1)字节多路通道(Byte Multiplexor Channel)
2)数组选择通道(Block Selector Channel)
3) 数组多路通道(Block Multiplexor Channel)
3.“瓶颈”问题
由于通道价格昂贵,致使机器中所设置的通道数量势必较少, 这往往又使它成了I/O的瓶颈,进而造成整个系统吞吐量的下降。 解决方法是增加设备到主机间的通路,并且提高了可靠性。
6.3 中断机构和中断处理程序
中断在操作系统中有着特殊重要的地位,它是多道程序得以实现 的基础,没有中断,就不可能实现多道程序,因为进程之间的切 换是通过中断来完成的。另一方面,中断也是设备管理的基础, 为了提高处理机的利用率和实现CPU与I/O设备并行执行,也必需 有中断的支持。中断处理程序是I/O系统中最低的一层,它是整 个I/O系统的基础。
一、 中断简介
1.中断
是指CPU对I/O设备发来的中断信号的一种响应。由于中断是外 部设备引起的,又称为外中断。
-
陷入 还有一种由CPU内部事件所引起的中断,如运算中的上溢,程序 出错,地址越界等。把这类中断称为内中断或陷入(trap)
中断和陷入的主要区别是信号的来源,即是来自CPU内部,还 是CPU外部。 -
中断向量表和中断优先级
1)中断向量表
2) 中断优先级 -
对多中断源的处理方式
二、中断处理程序
当一个进程请求I/O 操作时,该进程将被挂起,直到I/O设备 完成I/O操作后,设备控制器便向CPU发送一个中断请求,CPU 响应后便转向中断处理程序,中断处理程序执行相应的处理, 处理完后解除相应进程的阻塞状态。
例:处理外部中断时,应该由操作系统保存的是( )。 A.程序计数器(PC)的内容
B.通用寄存器的内容
C.快表(TLB)的内容
D.Cache中的内容
6.4 设备驱动程序
设备处理程序通常又称为设备驱动程序,它是I/O系统的高层与 设备控制器之间的通信程序,其主要任务是接收上层软件发来的 抽象I/O要求,如read或write命令,再把它转换为具体要求后, 发送给设备控制器,启动设备去执行;反之,也将由设备控制器 发来的信号传送给上层软件。由于驱动程序与硬件密切相关,故通常应为每一类设备配置一种驱动程序。例如,打印机和显示器 需要不同的驱动程序。
一、设备驱动程序的功能
(1)接收由与设备无关的软件发来的命令和参数,并将命令中的 抽象要求转换为与设备相关的低层操作序列。
(2) 检查用户I/O请求的合法性,了解I/O设备的工作状态,传递 与I/O设备操作有关的参数,设置设备的工作方式。
(3) 发出I/O命令,如果设备空闲,便立即启动I/O设备,完成指 定的I/O操作;如果设备忙碌,则将请求者的请求块挂在设备 队列上等待。
(4) 及时响应由设备控制器发来的中断请求,并根据其中断类型, 调用相应的中断处理程序进行处理。
二、对I/O设备的控制方式
1.使用轮询的可编程I/O方式
2. 使用中断的可编程I/O方式
3. 直接存储器访问方式DMA
4. I/O通道控制方式
6.5 用户层的I/O软件
6.6 缓冲区的管理
为了缓和CPU和I/O设备速度不匹配的矛盾,提高CPU和I/O 设备的并行性,在现代OS中,几乎所有的I/O设备与处理机 交换数据时,都用了缓冲区。
6.7 磁盘存储器管理
一、磁盘性能简述
例:某磁盘的转速为10000 转/分,平均寻道时间是6 ms,磁 盘传输速率是20 MB/s,磁盘控制器延迟为0.2 ms,读取一个 4 KB 的扇区所需的平均时间约为( )。
A. 9 ms
B. 9.4 ms
C. 12 ms
D. 12.4 ms
例、某磁盘的旋转速度为20 ms/圈,每个盘面被分成10 个扇区, 每个扇区刚好容纳1个记录,10个扇区存放在同一磁道上,处理 程序要顺序处理这些记录,每读出一个记录后处理程序要花4 ms 的时间进行处理,然后顺序读下一个记录并处理,直到处理完这 些记录,若磁头目前正处于首个逻辑记录的始点位置。回答:
(1)按逆时针方向安排10个逻辑记录(磁盘顺时针方向旋转) 顺序处理完这些记录总共花了多少时间?
(2)请给一种记录优化分布的方案,使处理程序能在最短时间 内处理完这些记录,并计算优化分布后处理所需时间。
答: (1)读一个记录花2 ms,处理花4 ms。顺序的下一个记录需等 待16 ms才能再次旋转到磁头下。所以,除第一个记录外,其它 记录都需花18 ms读出,总时间为:6 + 9*(16+2+4)= 204ms。
(2)优化时,可使前一个记录处理完,下一个记录正在磁头下, 所费时间最少。此时安排的逻辑记录顺序分别为:记录0,7,4, 1,8,5,2,9,6,3。总时间仅为读出和处理记录时间之和, 共60 ms。
二、磁盘调度算法
目前常用的磁盘调度算法有:
先来先服务(FCFS)
最短寻道时间优先(SSTF)
扫描(SCAN)算法(电梯调度算法)
循环扫描(CSCAN)算法
NStepSCAN和FSCAN调度算法
一、先来先服务(FCFS) 根据进程请求访问磁盘的先后次序进行调度。
优点:公平、简单,且每个进程的请求都能依次得到处理, 不会出现某一进程的请求长期得不到满足的情况。
缺点:未对寻道进行优化,致使平均寻道时间可能较长。 仅适用于请求磁盘I/O的进程数目较少的场合。
最短寻道时间优先(SSTF)
优先满足访问磁道与当前磁头所在磁道距离最近的进程,以 使每次的寻道时间最短。
问题:可能导致某些进程发生“饥饿”。因为只要不断有所 要访问的磁道与磁头当前所在磁道的距离较近的新进程到达, 就会出现“老进程饥饿”现象。这种调度算法不能保证平均 寻道时间最短。
扫描(SCAN)算法(电梯调度算法)
SCAN算法不仅考虑请求磁道和磁头的距离,更优先考虑磁头当前 的移动方向。算法既能获得较好的寻道性能,又能防止进程饥饿, 被广泛用于大、中、小型机和网络中的磁盘调度。
问题:当磁头刚从里向外移动过某一磁道时,恰有一进程请求访 问此磁道,这时该进程必须等待,待磁头从里向外,然后再从外 向里扫描完所有要访问的磁道后,才处理该进程的请求,致使该 进程的请求被严重地推迟。
循环扫描CSCAN算法
为了减少请求进程的延迟,CSCAN算法规定磁头单向移动。若 规定只自里向外移动,当磁头移到最外的被访问磁道时,磁头立 即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构 成循环,进行扫描。
采用循环扫描方式后,上述请求进程的请求延迟,将从原来的 2T减为T+Smax,其中,T为由里向外(或相反)扫描完所有要 访问的磁道所需的寻道时间,而Smax是将磁头从最外面被访问 的磁道直接移到最里边欲访问的磁道所需的寻道时间。
NStepSCAN和FSCAN调度算法
NStepSCAN算法:SSTF、SCAN、CSCAN几种调度算法都 可能出现磁臂停留在某处不动的情况,称为磁臂粘着。在高密 度盘上更容易出现此情况。NStepSCAN算法将磁盘请求队列 分成若干个长度为N的子队列。磁盘调度将按FCFS算法依次 处理这些子队列,而每处理一个队列时,又是按SCAN算法。 这样就可避免出现粘着现象。
N值取得很大时,其性能接近SCAN算法;
N=1时,则退化为FCFS算法。
FSCAN算法:本算法是NStepSCAN算法的简化。它只将磁 盘请求访问队列分成两个子队列。
一是当前所有请求磁盘I/O的进程形成的队列,由磁盘调 度按SCAN算法进行处理;
另一个则是在扫描期间,新出现的所有请求磁盘I/O进程 组成的等待处理的请求队列。从而使所有的新请求都将被 推迟到下一次扫描时处理。
例:假设磁头当前位于第105 道,正在向磁道序号增加的方向移 动。现有一个磁道访问请求序列为35,45,12,68,110,180, 170,195,采用SCAN 调度(电梯调度)算法得到的磁道访问 序列是 ( )。
A.110,170,180,195,68,45,35,12
B.110,68,45,35,12,170,180,195
C.110,170,180,195,12,35,45,68
D.12,35,45,68,110,170,180,195
什么叫通道技术?通道的作用是什么?
通道是一个独立于CPU的专管输入/输出控制的处理机,它控制设备与内存直接进行数据交换。它有自己的通道指令,这些通道指令受CPU启动,并在操作结束时向CPU发中断信号。
通道方式进一步减轻了CPU的工作负担,增加了计算机系统的并行工作程度。