转自: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与外设并行工作。