内核内存管理与设备DMA配置实战
📚 共计 30 章节
01
内存管理全景
物理内存与虚拟内存 · MMU与页表 · 内核空间与用户空间划分
基础
MMU
02
页分配器
伙伴系统原理 · gfp_mask标志 · alloc_pages与free_pages
伙伴系统
GFP
03
slab分配器
slab/slub/slob对比 · kmalloc与kfree · 内存池mempool
slab
kmalloc
04
vmalloc与ioremap
vmalloc区域布局 · vmap与vunmap · ioremap映射设备内存
vmalloc
ioremap
05
内存描述符
mm_struct结构 · vm_area_struct · 红黑树管理VMA
VMA
红黑树
06
缺页异常处理
do_page_fault流程 · 匿名页与文件页 · 写时复制COW
缺页
COW
07
Kmalloc内核API
kmalloc家族 · kzalloc/kcalloc/krealloc · GFP标志实战
API
GFP
08
DMA基础概念
DMA控制器工作原理 · 总线主控与从控 · DMA传输类型
DMA
基础
09
DMA引擎框架
dmaengine子系统 · dma_device与dma_chan · dma_slave_config
dmaengine
框架
10
DMA API详解
dma_map_single/unmap · dma_alloc_coherent · 流式与一致性DMA
API
一致性
11
DMA描述符
dma_async_tx_descriptor · tx_submit与issue_pending · 回调机制
描述符
回调
12
DMA设备树配置
dts中dma节点 · dma-ranges属性 · dma-coherent标志
设备树
dts
13
DMA控制器驱动
xilinx_dma为例 · probe流程 · 中断处理
驱动
中断
14
SG列表与DMA
scatterlist结构 · dma_map_sg · SG模式下的DMA传输
SG
scatterlist
15
IOMMU与SMMU
IOMMU原理 · SMMU驱动框架 · iommu_map/unmap
IOMMU
SMMU
16
CMA连续内存分配器
CMA区域配置 · cma_alloc/cma_release · 与DMA结合
CMA
连续内存
17
内存回收机制
LRU链表 · kswapd内核线程 · 页面换出与swap
回收
kswapd
18
内存压缩
zswap与zram · 内存碎片整理 · compaction机制
zram
压缩
19
HugePage与透明大页
hugetlbfs · THP原理 · 大页与DMA
HugePage
THP
20
内存热插拔
memory hotplug · online/offline · 内存节点管理
热插拔
hotplug
21
DMA缓冲区管理
dma_buf框架 · buffer sharing · ion与dmabuf
dma_buf
ion
22
DMA与Cache一致性
cache line bouncing · dma_sync_single_for_cpu/device · 非一致性架构
Cache
一致性
23
DMA池化技术
dma_pool_create/dma_pool_alloc · 固定大小DMA缓冲区
内存池
dma_pool
24
DMA延迟与性能
DMA延迟来源 · prefetch与write combining · 性能调优
性能
调优
25
内存错误检测
KASAN · kmemleak · slab debug
KASAN
调试
26
内存压力测试
memtester · stress-ng · 自定义DMA压力测试
压力测试
memtester
27
DMA在网卡驱动中的应用
igb/ixgbe为例 · RX/TX ring与DMA
网卡
igb
28
DMA在存储驱动中的应用
NVMe驱动 · PRP与SGL · CQ与SQ
NVMe
存储
29
DMA在GPU驱动中的应用
GEM与TTM · GPU显存管理 · p2p DMA
GPU
p2p
30
综合实战
编写DMA字符设备驱动 · 用户态测试程序 · 性能分析
实战
字符驱动