ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

39、Linux内核内存管理:固定映射地址与ioremap解析

39、Linux内核内存管理:固定映射地址与ioremap解析

Linux内核内存管理:固定映射地址与ioremap解析

1. 固定映射地址(Fix-Mapped Addresses)

固定映射地址是一组特殊的编译时地址,其对应的物理地址不必是线性地址减去__START_KERNEL_map。每个固定映射地址映射一个页帧,内核将它们用作地址永不改变的指针。其主要目的是在编译时拥有一个常量地址,而仅在引导过程中设置物理地址。

在早期,我们已经设置了level2_fixmap_pgt

NEXT_PAGE(level2_fixmap_pgt) .fill 506,8,0 .quad level1_fixmap_pgt - __START_KERNEL_map + _PAGE_TABLE .fill 5,8,0 NEXT_PAGE(level1_fixmap_pgt) .fill 512,8,0

可以看到,level2_fixmap_pgt紧跟在level2_kernel_pgt之后,level2_kernel_pgt包含内核代码、数据和BSS段。

每个固定映射地址由一个整数索引表示,该索引在arch/x86/include/asm/fixmap.h中的fixed_addresses枚举中定义。例如,它包含VSYSCALL_PAGE <

返回列表