磁盘数据读写流程(DMA)

DMA技术

DMA(Direct Memory Access)就是直接内存访问技术。在进行IO设备和内存之间数据传输的时候,数据搬运的工作全部交给DMA控制器,而CPU不再参与任何和数据搬运相关的事情了,这样就把CPU空出来了,如下图所示:
在这里插入图片描述

将数据写入磁盘的流程

  1. 用户程序将数据写入用户空间的缓冲区,然后调用write系统调用。
  2. CPU进入内核态,将数据写入拷贝到页缓存,写入成功,立即返回。
  3. 用户进程调用系统调用fsync、fdatasync、sync等刷盘指令。CPU会向DMA控制器发送写指令,告诉磁盘控制器要刷盘的数据在主存的位置、要刷盘多少数据、要刷到磁盘什么位置等,然后CPU就可以返回干其他事情了。
  4. DMA控制器开始将页缓存中的数据写入到磁盘。
  5. 写完了之后,DMA控制器会向CPU发出中断请求,触发中断处理程序,进行一些扫尾的工作。

磁盘读取数据的流程

  1. 用户程序调用read系统调用。
  2. CPU进入内核态,操作系统会检查页缓存是否有数据。如果有CPU拷贝这些数据到用户空间;如果没有则触发缺页中断,需要向磁盘调页,即从磁盘加载数据到页缓存
  3. CPU向DMA控制器发送读指令,并且告诉磁盘主存地址、要读取的数据长度、要从哪一个设备读,然后CPU返回干其他事情了。
  4. DMA控制器将磁盘中的数据拷贝到页缓存。
  5. 数据拷贝完成后,DMA控制器向CPU发送中断信号,触发中断处理程序,进行扫尾工作。
  6. 页缓存把数据返回给用户进程。
  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值