【计算机考研408强化 - 操作系统】5 输入输出管理

5 输入输出管理

5.1 IO控制方式

程序直接控制

程序直接控制方式的运行流程

  1. 对读入的每个字,CPU都需要对外设状态进行循环检查,直到确定该字已经在I/O控制器的数据寄存器中。
  2. 在程序直接控制方式中,由于CPU的高速性和I/O设备的低速性,致使CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成了CPU资源的极大浪费
  3. 在该方法中,在CPU之所以要不断的测试I/O设备的状态,就是因为在CPU中采用中断机构,使I/O设备无法向CPU报告他已完成了一个字符的输入操作。

在这里插入图片描述

--------------------------------------------------------------------------

程序直接控制方式的优点:简单易于实现

程序直接控制方式的缺点:由于CPU与I/O设备智能串行工作,导致CPU的利用率下降

中断驱动控制

中断驱动方式的思想是,允许IO设备主动打断CPU的运行并请求服务,从而"解放"CPU。与程序直接控制方式相比,不用程序经常循环去检查设备状态。这使得CPU向IO控制器发送读命令后可以继续做其他工作。

--------------------------------------------------------------------------

中断驱动控制方式的运行流程(IO控制器的角度)

  1. 【I/O控制器】从CPU接受一个读命令,然后从外围设备读数据
  2. 一旦数据读入该【I/O控制器】的【数据寄存器】,便通过【控制线】给CPU发出一个【中断信号】,表示数据已经准备好,然后等待CPU请求该数据
  3. IO控制器收到CPU发出的取数据请求后,将数据放到【数据总线】上,传到CPU的寄存器中,一次IO操作完。

在这里插入图片描述

从CPU的角度来说

  1. CPU发出读命令,然后保存当前运行程序的上下文(现场,包括程序计数器和处理机寄存器),转去其他程序。
  2. 在每个指令周期末尾,CPU需要检查中断
  3. 当有来自【I/O控制器】的中断时,CPU保存当前正在运行程序的上下文,转去执行中断处理程序,以处理该中断
  4. 这时,CPU从I/O控制器读一个字的数据传送到寄存器,并存入主存。
  5. 当数据接收完毕,CPU恢复发出I/O命令的程序(或其他程序)的上下文,然后继续运行。

--------------------------------------------------------------------------

中断驱动控制的优点:比程序直接控制方式更有效

中断驱动控制的缺点:由于数据中的每个字在存储器与I/O控制器之间的传输都必须经过CPU,这就导致了中断驱动方式仍然会消耗较多时间。

DMA方式

DMA方式就是在I/O设备和内存之间开辟直接的数据交换通道。DMA方式的特点有:

  1. 基本单位时【数据块】
  2. 传送的数据是从设备直接送入内存的,或者相反
  3. 仅在传送一个或多个数据的【开始】和【结束】时,才需要CPU的干预,整块数据的传送是在DMA控制器的控制下完成的

--------------------------------------------------------------------------

DM控制器中的4类寄存器:

  • 命令/状态寄存器CR
  • 内存地址寄存器MAR
  • 数据寄存器DR
  • 数据计数器DC

--------------------------------------------------------------------------

DMA方式的运行流程是:

  1. CPU接收到IO设备的DMA请求,它给IO控制器发出一条命令,启动DMA控制器,然后继续其他工作
  2. 之后CPU把控制操作委托给DMA控制器了,由DMA控制器负责处理数据的传输
  3. DMA控制器直接与存储器交互数据,传送整个数据块,【每次传送一个字】,这个过程不需要CPU参与
  4. 传送完毕后,DMA控制器发送一个中断信号给处理器

在这里插入图片描述

--------------------------------------------------------------------------

DMA方式与中断驱动方式的区别是:

  • 中断驱动方式在【每个数据】需要传输时中断CPU;而DMA控制方式则是在所要求传送的【一批数据全部传送结束】时才中断CPU。
  • 中断驱动方式传送时是在中断处理时由【CPU】控制完成的;DMA方式传送则是由【DMA控制器】控制完成的
  • 中断驱动方式数据传送通过【软件】完成,DMA方式数据传送通过【硬件】完成
  • 中断响应发生在一条【指令执行结束后】,DMA响应发生在一个【总线事务完成后】

通道控制方式

IO通道是指专门负责输入/输出的处理机。使用IO通道可以进一步减少CPU的干预,即把对一个数据块的读/写为单位的干预,减少为对一组数据块的读/写及相关控制和管理为单位的干预。同时又实现CPU、通道和IO设备三者的并行操作,从而更有效地提高整个系统的资源利用率。

--------------------------------------------------------------------------

IO通道的运行流程是:

  1. 当CPU要完成一组相关的读/写操作及有关控制时,只需向IO通道发送一条IO指令,以给出其所要执行的通道程序的【首地址】和要【访问的IO设备】
  2. 通道接收该指令后,执行通道程序即可完成CPU所指定的IO任务,数据传输结束时向CPU发送【中断请求】

在这里插入图片描述

--------------------------------------------------------------------------

【IO通道】与【一般处理机】的区别:【通道指令】的类型单一,没有自己的内存,通道所执行的通道程序是放在主机内存中的,也就是说通道与CPU共享内存。

【IO通道】与【DMA方式】的区别:【DMA方式】需要CPU来控制传输的数据块大小、传输的内存位置,而【通道方式】中这些信息都是通道控制的;【DMA方式】中每个DMA控制器对应一台设备与内存传递数据,而【一个通道】可以控制多台设备与内存交换信息。

IO子系统的层次结构

重点在前面4个 :用户级IO软件、设备独立性软件、设备驱动程序、中断处理程序

用户层IO软件:实现与用户交互的接口

设备独立性软件:实现用户程序与设备驱动器的统一接口、设备命令、设备保护以及设备的分配与回收

设备驱动程序:与硬件直接相关,具体负责系统对设备发出的控制操作指令

中断处理程序:用于处理中断等相关事宜

硬件设备:包括一个机械部件(设备本身)和一个电子部件(控制器)

在这里插入图片描述

5.2 IO核心子系统

IO核心子系统提供的主要服务有:IO调度、缓冲与高速缓存、设备分配与回收、假脱机、设备保护和差错处理等

IO调度

IO调度等概念:确定一个好的顺序来执行这些IO请求。用队列实现调度,即出现阻塞时,IO系统调用

缓冲与高速缓存

磁盘高速缓存:在内存中开辟一个 单独的存储空间作为磁盘高速缓存,但是这个空间大小固定;把未用到的内存空间(这个空间是灵活的)作为一个缓冲地,供请求分页系统和磁盘IO时共享(比如Cache)。

缓冲区有:单缓冲、双缓冲、循环缓冲、缓冲池。

--------------------------------------------------------------------------

单缓冲:在设备与处理机之间设置【一个】缓冲区,设备与CPU交互数据时,先把被交换的数据写入缓冲区,然后需要需要数据的设备或CPU从缓冲区中取走数据。

单缓冲的用时为 M a x ( C , T ) + M Max(C,T)+M Max(C,T)+M,C为CPU对一块数据处理的时间,T为数据把一块数据输入到缓冲区的时间,M为数据传送到用户区(工作区)的时间。解释一下:工作区未处理完数据,但此时磁盘已经把一块数据输入到缓冲区中(取最大值C);工作区已经处理完毕,但磁盘尚未完成把一块数据输入到缓冲区中(取最大值T)。

在这里插入图片描述

双缓冲:在设备与处理机之间设置【两个】缓冲区,只有一个缓冲区填满时,在会启动另一个缓冲区。然后被填满的缓冲区向处理机传送数据。

双缓冲区的用时为Max(C+M,T),C为CPU对一块数据处理的时间,T为数据把一块数据输入到缓冲区的时间,M为数据传送到用户区(工作区)的时间。解释一下:一个缓冲区中的数据传到了工作区且被处理完毕,磁盘尚未把数据写入(取最大值T);一个缓冲区的数据尚未完成传到工作区且被处理完毕,但此时磁盘已经把数据写入(取最大值C+M)

在这里插入图片描述

循环缓冲:包含多个大小相等的缓冲区,每个缓冲区中有一个链表指针指向下一个缓冲区,最后一个缓冲区指针指向第一个缓冲区,多个缓冲区构成一个环形

在进行输入输出时,还需要两个指针in和out,in指针指向可以输入数据的第一个空缓冲区,out指针指向可以输出数据的第一个满缓冲区

缓冲池:由多个系统共用的缓冲区组成,缓冲区安使用状况分为三个队列

--------------------------------------------------------------------------

高速缓存与缓冲区的对比

在这里插入图片描述

相同点:都介于高速设备与低速设备之间

高速缓存于缓冲区存放数据的区别

  • 【高速缓存】存放的都是低速设备上的某些数据的复制数据,即高速缓存上有的,低速设备上必然也有
  • 【缓冲区】存放的是低速设备传递给高速设备(或方向相反)的数据,而这些数据在低速设备(或高速设备)上不一定有备份,这些数据再从缓冲区送到高速设备(或低速设备)

高速缓存和缓冲区目的的区别

  • 【高速缓存】存放是高速设备经常要访问的数据,若高速设备访问的数据不在高速缓存中,则高速缓存要访问低速设备,就如同CPU访问Cache一样,如果未命中Cache中的数据块,则需要访问主存
  • 【缓冲区】的目的是高速设备和低速设备都要经过缓冲区,高速设备永远不会访问低速设备

设备分配与回收

设备的分类

  1. 独占式使用设备:设备被使用时不再允许其他进程使用该设备(比如打印机),一般采用【静态分配】
  2. 分时共享使用设备:设备没有独占使用的要求时,可以通过分时共享使用(比如磁盘),一般采用【动态分配】
  3. SPOOLing技术:将独占设备改造为共享设备,对IO操作的批处理(以空间换时间)

分享的原则:既要充分发挥设备的使用效率,又要避免造成进程死锁,还要将用户程序和具体设备隔离开

【注意】设备分配程序为用户进程分配设备的过程通常是:先分配设备,再分配设备控制器,最后分配通道

设备分配的算法:先来先服务、优先级高的优先

分配方式

  • 静态分配:在用户作业开始执行前,由系统一次性分配改作业所要求的全部设备
  • 动态分配:在进程执行过程中,根据执行需要进行分配(有死锁的风险,通过系统调用命令向系统提出请求)

设备分配依据的主要数据结构:设备控制表DCT、控制器控制表COCT、通道控制表CHCT、系统设备表SDT

  • 设备控制表DCT:一个设备控制表就表征一个设备

在这里插入图片描述

  • 设备控制表DCT与控制器控制表COCT有一一对应关系;COCT控制器控制表与通道控制表CHCT有一多对应关系
  • 系统设备表SDT:整个系统就一张设备控制表SDT

在这里插入图片描述

分配时主要考虑的因素:IO设备的固有属性,IO设备的分配算法,IO设备分配的安全性、IO设备的独立性

假脱机(SPOOLing技术)

脱机技术就是利用专门的外围控制机,将低速IO设备上的数据传到高速磁盘上。SPOOLing的意思是外部设备同时联机操作,又称假脱机。所谓"脱机"指的是——脱离用户的控制进行的输入/输出操作,缓解CPU与IO的速度矛盾。

SPOOLing需要外存的支持(也就是输入井和输出井存放的位置),需要多道程序设计技术的支持(如果没有多道程序,那么CPU与设备就是串行,无所谓是不是使用SPOOLing技术),可以让多个作业共享一台独占设备(逻辑上共享,微观上还是串行),由【系统】控制设备与输入井/输出井之间的数据传送。

在这里插入图片描述

输入井:模拟脱机输入时的磁盘,用于收容IO设备输入的数据。也就是低速设备给CPU输入数据时, 把数据输入到磁盘。数据准备完毕后, 由磁盘把数据一次性输入到主存,这里CPU就不需要再等待低速设备输入数据,而可以暂时把进程挂起去做其他时期。

输出井:模拟脱机输出时的磁盘,用于收容用户程序的输出数据。比如一项打印操作,CPU要将打印机输出要打印的数据,打印机的打印速度慢,CPU就必须迁就打印机,在打印机完成打印操作后,CPU才会做其他事情,浪费CPU时间。而使用SPOOLing技术下,CPU将要打印的数据先输入到磁盘中的输出井中,然后去做其他事情。若此时打印机被占用,SPOOLing系统就会把这个打印请求挂在打印请求队列上,待打印机有空时再把数据打印出来。整个过程CPU可以做其他事情。

户程序的输出数据。比如一项打印操作,CPU要将打印机输出要打印的数据,打印机的打印速度慢,CPU就必须迁就打印机,在打印机完成打印操作后,CPU才会做其他事情,浪费CPU时间。而使用SPOOLing技术下,CPU将要打印的数据先输入到磁盘中的输出井中,然后去做其他事情。若此时打印机被占用,SPOOLing系统就会把这个打印请求挂在打印请求队列上,待打印机有空时再把数据打印出来。整个过程CPU可以做其他事情。

SPOOLing的主要特点:提高了IO的速度;将独占设备改造为共享设备,实现了虚拟设备的功能

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_之桐_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值