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

liangcb 商泰汽车软件有限公司 开发测试工程师  2018-03-20 03:30:25
前面在网上查询操作系统缺页错误处理的相关内容的时候想到,操作系统内核如果发现虚拟页面没有在内存里面,那么需要将页面从磁盘调入内存,另外可能还会有被置换出来的内存里的页面写入磁盘上的交换分区。
这部分的功能应该我想应该是使用了DMA操作的吧,我的疑问就在于,DMA操作的状态下,CPU是出于高阻状态的,即CPU让出了总线的控制权给DMA芯片的,我还记得,当CPU加载缺少的页面的过程中,可能会发生进程切换,那么我的疑问就在于,如果发生了进程切换,那么CPU执行别的进程的时候怎么访问内存呢?这个时候不是还在进行DMA操作吗,CPU应该没有总线的控制权了才对
...全文
569 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
这种原理性的东西,除了搞主板、芯片组研发的,一般应付下考试就差不多了吧,要是深究的话,电脑每一个部件、每一个元件都是一门学科。学以致用。
回复
相关推荐
发帖
C++ Builder
创建于2007-08-02

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
帖子事件
创建了帖子
2018-03-20 03:30
社区公告
暂无公告