zl程序教程

您现在的位置是:首页 >  后端

当前栏目

缓存IO读写的方式

缓存IO 方式 读写
2023-09-14 09:11:21 时间

转自:https://blog.csdn.net/weixin_42096901/article/details/103017044

1.中断

  • ①用户进程发起数据读取请求
  • ②系统调度为该进程分配cpu
  • ③cpu向io控制器(ide,scsi)发送io请求
  • ④用户进程等待io完成,让出cpu
  • ⑤系统调度cpu执行其他任务
  • ⑥数据写入至io控制器的缓冲寄存器
  • ⑦缓冲寄存器满了向cpu发出中断信号
  • ⑧cpu读取数据至内存

 缺点:中断次数取决于缓冲寄存器的大小。

 2.DMA : 直接内存存取

 

  • ①用户进程发起数据读取请求
  • ②系统调度为该进程分配cpu
  • ③cpu向DMA发送io请求
  • ④用户进程等待io完成,让出cpu
  • ⑤系统调度cpu执行其他任务
  • ⑥数据写入至io控制器的缓冲寄存器
  • ⑦DMA不断获取缓冲寄存器中的数据(需要cpu时钟)
  • ⑧传输至内存(需要cpu时钟)
  • ⑨所需的全部数据获取完毕后向cpu发出中断信号

减少cpu中断次数,不用cpu拷贝数据

2.1 DMA了解

https://blog.csdn.net/zhejfl/article/details/82555634

DMA(Direct Memory Access,直接存储器访问),DMA的出现就是为了解决批量数据的输入/输出问题。

DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。这样数据的传送速度就取决于存储器和外设的工作速度。

通常系统总线是由CPU管理的,在DMA方式时,就希望CPU把这些总线让出来,而由DMA控制器接管,控制传送的字节数。

 

对于实现DMA传输,它是由DMA控制器直接掌管总线(地址总线、数据总线和控制总线),因此,存在一个总线控制权转移问题

DMA传输开始前:    CPU------>DMA控制器

DMA传输结束后: DMA控制器------>CPU

一个完整的DMA传输过程必须经历DMA请求、DMA响应、DMA传输、DMA结束4个步骤。

理解关键点:在数据准备阶段,CPU与外设并行工作