文章目录
第六章——输入输出系统
I/O系统的功能、模型和接口
I/O系统的主要任务:
完成用户提出的I/O请求,提高I/O的速率,以及提高设备的利用率,并能为更高层的进程方便地使用这些设备提供手段。
I/O系统的基本功能
- 隐藏物理设备的细节
- 与设备的无关性
- 提高处理机和I/O设备的利用率
尽可能的让处理机和I/O设备并行操作 - 对I/O设备进行控制
① 采用轮询的可编程I/O方式;② 采用中断的可编程I/O方式;③ 直接存储器访问方式;④ I/O通道方式。 - 确保设备的正确共享
- 错误处理
I/O设备和设备控制器
设备与控制器之间的接口
- 数据信号线
用于在设备和设备控制器之间传送数据信号 - 控制信号线
作为设备控制器向I/O设备发送控制信号的通路 - 状态信号线
用于传送指示当前设备状态的信号
对I/O设备的控制方式
1、使用轮询的可编程I/O方式
缺点:
在程序I/O方式中,CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成对CPU的极大的浪费
2、使用中断的可编程I/O方式
优点:
可以成百倍的提高CPU的利用率
3、直接存储器访问方式
优点:
成百倍的减少了CPU对I/O的干预,进一步提高了CPU与I/O设备的并行操作程度。
4、 I/O通道控制方式
优点:
更有效的提高整个系统的资源利用率
与设备无关的I/O软件
设备分配
- 系统设备表SDT
- 设备控制表DCT
- 控制器控制表COCT
- 通道控制表CHCT
设备分配中的安全性
- 安全分配方式:
每当进程发出I/O请求后便进入阻塞状态,直到I/O操作完成时才被唤醒 - 不安全分配方式:
进程在发出I/O请求后仍继续运行,需要时又发出第二个I/O请求,第三个I/O请求等,仅当进程所请求的设备已被另一进程占用时,才进入阻塞状态。
基本的设备分配程序
- 分配设备: 根据物理设备名在SDT中找出该设备的DCT,若设备忙,便将请求I/O的进程PCB挂在设备队列上;否则,便按照一定的算法来计算本次设备分配的安全性,若不会导致系统进入不安全状态,便将设备分配给请求进程;否则,仍将其PCB插入设备队列。
- 分配控制器: 分配设备给进程后,再到其DCT中找出与该设备连接的控制器的COCT。若控制器忙,便将请求I/O进程的PCB挂在该控制器的等待队列上;否则,将该控制器分配给进程。
- 分配通道: 分配控制器后,再在COCT中找到与该控制器连接的CHCT。若通道忙,便将请求I/O的进程挂在该通道的等待队列上;否则,将该通道分配给进程。
只有在设备、控制器和通道三者都分配成功时,这次的设备分配才算成功;之后便可启动该I/O设备进行数据传送。
用户层的I/O软件
SPOOLing系统的组成
- 输入井和输出井。是磁盘上开辟的两个大存储空间。输入井模拟脱机输入的磁盘设备,输出井模拟脱机输出时的磁盘。
- 输入缓冲区和输出缓冲区。在内存中开辟两个缓冲区,输入缓冲区暂存由输入设备送来的数据,后送输入井;输出缓冲区暂存从输出井送来的数据,后送输出设备。
- 输入进程和输出进程。利用两个进程模拟脱机I/O时的外围处理机。
- 井管理程序。用于控制作业与磁盘井之间信息的交换。
SPOOLing系统的特点
- 提高了I/O的速度。利用输入输出井模拟成脱机输入输出,缓和了CPU和I/O设备速度不匹配的矛盾。
- 将独占设备改造为共享设备。并没有为进程分配设备,而是为进程分配一存储区和建立一张I/O请求表。
- 实现了虚拟设备功能。多个进程同时使用一台独占设备,虚拟成了多台设备。
缓冲区管理
缓冲的引入
- 缓和CPU与I/O设备间速度不匹配的矛盾。
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
- 提高CPU和I/O设备之间的并行性。
磁盘存储器的性能和调度
早期的磁盘调度算法
先来先服务(FCFS)
优点:
公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。
缺点:
未对寻道进行优化,致使平均寻道时间可能较长。仅适用于请求磁盘I/O的进程数目较少的场合。
最短寻道时间优先(SSTF)
算法选择要求访问的磁道与当前磁头所在的磁道距离最近的进程,以使每次的寻道时问最短。
缺点:
可能导致某些进程发生“饥饿”。因为只要不断有所要访问的磁道与磁头当前所在磁道的距离较近的新进程到达,就会出现“老进程饥饿”现象。这种调度算法不能保证平均寻道时间最短
基于扫描的磁盘调度算法
扫描(SCAN)算法
每次选择要访问的磁道,在当前磁道之内且距离最近者这样的进程来调度。
优点:
算法既能获得较好的寻道性能,又能防止进程饥饿,被广泛用于大、中、小型机和网络中的磁盘调度。
缺点:
当磁头刚从里向外移动过某一磁道时,恰有一进程请求访问此磁道,这时该进程必须等待,待磁头从里向外,然后再从外向里扫描完所有要访问的磁道后,才处理该进程的请求,致使该进程的请求被严重地推迟。
循环扫描CSCAN
原理:
CSCAN算法规定磁头单向移动。若规定只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。