DMA操作时CPU如何执行其他进程的指令

liangcb 2018-03-20 03:30:25
前面在网上查询操作系统缺页错误处理的相关内容的时候想到,操作系统内核如果发现虚拟页面没有在内存里面,那么需要将页面从磁盘调入内存,另外可能还会有被置换出来的内存里的页面写入磁盘上的交换分区。
这部分的功能应该我想应该是使用了DMA操作的吧,我的疑问就在于,DMA操作的状态下,CPU是出于高阻状态的,即CPU让出了总线的控制权给DMA芯片的,我还记得,当CPU加载缺少的页面的过程中,可能会发生进程切换,那么我的疑问就在于,如果发生了进程切换,那么CPU执行别的进程的时候怎么访问内存呢?这个时候不是还在进行DMA操作吗,CPU应该没有总线的控制权了才对
...全文
691 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangcb 2018-03-24
  • 打赏
  • 举报
回复
比较认同cpu读取缓存的做法,如果这时候再出现缺页错误或者t l b失效,那么cpu估计只好等了,等待之前的缺页错误的页面的DMA操作完成后在进行了。
  • 打赏
  • 举报
回复
因为有cache,大多数内存访问不需要实际访问内存,如果确实需要的话(比如cache刷新),它可以等待,并复位一个HLDA(我有点忘记了,大概是这个总线保持请求确认)信号,这样一个DMA传输周期之后,可能64字节/128字节之类的,处理器会重新获得总线控制权。
ooolinux 2018-03-20
  • 打赏
  • 举报
回复
不过如果真有兴趣,每口井深挖都是有水的。
ooolinux 2018-03-20
  • 打赏
  • 举报
回复
华为也不是每一个专项技术都研究了的,有的就用专利交换国外技术了,全部自己研究,搞个东西要等猴年马月。
ooolinux 2018-03-20
  • 打赏
  • 举报
回复
这种原理性的东西,除了搞主板、芯片组研发的,一般应付下考试就差不多了吧,要是深究的话,电脑每一个部件、每一个元件都是一门学科。学以致用。

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧