计算机考研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方式的数据传送则是将所传输的数据由设备直接送入内存,或是由内存直接送到设备。

猜你喜欢

转载自blog.csdn.net/qq_43382350/article/details/128045657
今日推荐