Linux内存管理
文章平均质量分 79
Wang20122013
喷泉有了压力才优美,滴水有了坚持才有了穿石。顶住压力,享受压力,坚持奋斗。
展开
-
聊聊scatterlist的chain结构
最近写一个驱动,涉及DMA内存管理,不可避免的需要了解到scatterlist。网上能够搜到很多方面的资料,例如这个和这个。同时内核源码里scatterlist的实现代码include/linux/scatterlist.h和lib/scatterlist.c也不是很长,稍微读读源码也能对它的原理和使用有更深的理解。这里参考的内核版本为4.14。这里不对scatterlist的原理和使用做解释说明,只是聊聊我自己在看以上材料时比较疑惑的一点:scatterlist是如何组成链的。struct scatt转载 2021-01-21 15:08:54 · 865 阅读 · 0 评论 -
Linux内存管理 —— DMA和一致性缓存(dma_alloc_coherent(),dma_map_sg())
1. 出现内存不一致的原因CPU写内存的时候有两种方式:write through: CPU直接写内存,不经过cache。write back: CPU只写到cache中。cache的硬件使用LRU算法将cache里面的内容替换到内存。通常是这种方式。DMA可以完成从内存到外设直接进行数据搬移。但DMA不能访问CPU的cache,CPU在读内存的时候,如果cache命中则只是在cache去读,而不是从内存读,写内存的时候,也可能实际上没有写到内存,而只是直接写到了cache。这样一来,如果D转载 2021-01-19 11:08:03 · 4366 阅读 · 4 评论