• 计算机考研408-I/O方式大题答题流程


    I/O方式大题

    一 程序查询流程

    1. 程序运行scanf代码,此时发生系统调用,操作系统等待来自键盘的字符

    2. 程序查询方式不断轮询查看是否有字符输入(注意:不会一直占用处理机导致系统死机,参考并发概念,仅在分配的时间片内轮询)

    3. 通过键盘设备经过usb向I/O接口输入字符,(此处出现数据的输入输出速率),输入的字符会被放入缓冲区(题目会告知缓冲区大小)

    4. cpu应当取走缓冲区内的数据去进行处理

    ​ cpu不应当取的太慢,这是由于缓冲区的大小是有限的,如果太慢会导致还没取出的数据被新传输的数据所覆盖。

    ​ 但也不该太快,所以最好是缓冲区刚满,cpu就取出缓冲区内的数据

    综上可知,cpu轮询的频率(cpu定时查询的频率) = 输入输出数据的速率/缓冲区大小

    1. 若题目给出输入输出至少执行x条指令,那么便可以得到

      传输满一次缓冲区所需要的时间 = 缓冲区大小/输入输出数据的速率 = cpu轮询频率的倒数

      每秒查询次数 = 1s/传输满一次缓冲区所需要的时间

      设备输入输出的时间占cpu总时间的百分比 =(CPI * x * 每秒查询次数)/ 计算机主频

    注意:输入输出速率是设备和缓冲区之间的,而轮询频率是cpu和缓冲区之间的。

    二 中断I/O流程

    1. 设备向I/O接口输入数据(此处题目一般会给出数据输入输出速率)

    2. 同样当数据充满缓冲区时,此时中断源向cpu发出中断请求告知cpu缓冲区已经满了,需要它来处理

    ​ 1)中断请求:中断源向CPU发送中断请求信号。

    ​ 2)中断判优:多个中断源同时提出请求时,通过中断判优逻辑响应一个中断源。

    ​ 3)中断响应及中断隐指令。

    ​ 4)中断服务程序寻址

    ​ 5)执行中断服务程序

    1. cpu取走了缓冲区内的数据(此时的缓冲区就可以接受新的数据,而不必担心有数据未被取走而被覆盖的情况了)

    数据输入输出速率/缓冲区大小 = 每时间内应当发生中断的频率

    题目若给出每次数据中断的开销(时间),就可以计算每时间内中断的开销

    总开销 = 每次中断开销 * 每时间内应当发生中断的频率

    三 DMA方式

    一个DMA控制器,实际上是采用DMA方式的外围设备与系统总线之间的接口电路,这个接口电路是在中断接口的基础上再加DMA机构组成。

    习惯上将DMA方式的接口电路称为DMA控制器。

    DMA控制器的组成

    1. 主存地址计数器:存放要交换数据的主存地址
    2. 传送长度计数器:记录传送数据的长度,计数溢出时。数据即传送完毕,自动发出中断请求信号
    3. 数据缓冲寄存器:暂存每次传送的数据
    4. DMA请求触发器:每当I/O设备准备好数据后,给出一个控制信号,使DMA请求触发器置位。
    5. ”控制/状态“逻辑:有控制和时序电路及状态标志组成,用于指定传送方向,修改传送参数,并对DMA请求信号、cpu响应信号进行协调和同步
    6. 中断机构:当一个数据块传送完毕后触发中断机构,向cpu提出中断请求。

    流程

    1. 预处理阶段
    • CPU会向DMAC指明要读/写的数据应该存放在主存当中的什么位置,应该存放在I/O设备的什么位置,指明传送数据的个数,然后启动I/O设备
      • 主存起始地址 -> AR
      • I/O设备地址 -> DAR
      • 传送数据个数 -> WC
    1. 数据传输阶段(数据传送阶段完全由DMA硬件控制)

    ​ 1)DMA设备(块设备)经过usb线向DMA控制器中的数据缓冲寄存器按字或者字节传输数据,也可以以数据块为基本单位。

    ​ 2)从数据缓冲寄存器由直接通路传输到主存当中

    1. 后处理阶段

    ​ 1)中断服务程序

    ​ 2)DMA结束处理

    ​ 一整块数据传输完成时,DMA控制器中的传送长度计数器会向cpu发出中断请求信号,cpu执行中断服务程序做DMA结束处理,包括校验送入主存的数据是否正确、测试传送过程是否正确、是否决定继续使用DMA传送数据等等。

    1. 继续执行主程序

    注:主存和DMA控制器之间有一条数据通路,因此主存和I/O设备交换信息时,不需要通过cpu,但是当cpu和DMA同时访问主存时是可能发生冲突的。

    因此,在DMA传送过程中。DMA控制器将接管cpu的地址总线、数据总线和控制总线,cpu的主存控制信号被禁止使用。而当DMA传送结束后,将恢复cpu的一切权力并开始执行其操作。(概括:DMA控制器必须具有控制系统总线的能力)

    数据传送前由DMA控制器请求总线使用权。

    如何解题

    计算题

    每传送完一个数据块发生中断

    ① 数据输入输出的速率/块的大小=DMA发生中断的频率(次数)

    ② 每次DMA传送一个数据块的开销 = 这一块的预处理时钟周期数 + 这一块的后处理时钟周期数

    总开销 = ① * ②(个时钟周期)

    I/O时间占整个cpu时间的百分比 = DMA总开销/时钟周期频率

    选择题

    2019年

    1. DMA传送前由设备驱动程序设置传送参数
    2. 数据传送前由DMA控制器请求总线使用权
    3. 数据传送由DMA控制器直接控制总线完成
    4. DMA传送结束后的处理由中断服务程序完成

    区分DMA方式和中断

    DMA 方式中的中断请求,只是为了报告 CPU一组数据传送结束, 有待 CPU做一些其他处理工作。程序中断方式的中断请求是为了传送数据, I/O 和主机交换信息完全靠 CPU响应中断后,转至中断服务程序完成的。

    1. 中断方式是在数据缓冲寄存区满后,发中断请求,CPU进行中断处理。

    2. DMA方式则是以数据块为单位传输的,在所要求传送的数据块全部传送结束时要求CPU进行中断处理,大大减少了CPU进行中断处理的次数。

    3. 中断方式的数据传送是由设备到CPU再到内存,或者相反。

    4. DMA方式的数据传送则是将所传输的数据由设备直接送入内存,或是由内存直接送到设备。

  • 相关阅读:
    【无标题】
    测试面试 | 某互联网大厂测试面试真题,你能回答出多少?
    R 语言patchwork包拼图间隙
    docker笔记7:Docker微服务实战
    【计算机网络】第一章 概述
    three.js相机调用reset方法复原但无法完全复原
    element树形控件编辑节点组装节点
    5大LOGO免费在线生成器,从此设计不求人!
    【Linux】vim
    Windows取证——学习笔记(二)
  • 原文地址:https://blog.csdn.net/qq_43382350/article/details/128045657