固定映射的线性地址

本文探讨了内核线性地址空间的分布,特别关注了3GB到4GB间的固定映射机制。固定映射允许以特殊方式映射物理地址,特别是在第4个GB的末端。通过enum fixed_addresses结构体的索引,可以使用fix_to_virt()函数获取固定映射线性地址,而set_fixmap()用于设置物理地址并可选择禁用高速缓存,clear_fixmap()则用于撤销映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内核地址空间

内核线性地址空间范围:3GB-4GB (0xc0000000-0xffffffff)

内核线性地址空间[3GB,3GB+896MB]-----(线性映射)----------物理地址空间[0,896M]

内核线性地址空间[3GB+896MB,4GB]用来实现“非连续内存分配”和“固定映射”

固定映射

固定映射的线性地址以“任意方式”(与前896MB线性映射方式相比)映射任何物理地址空间

固定映射使用的线性地址位于线性地址第4个GB末端

每个固定映射的线性地址都由定义在enum fixed_addresses数据结构中的整型索引来表示

enum fixed_addresses {
#ifdef CONFIG_X86_32
	FIX_HOLE,
#else
#ifdef CONFIG_X86_VSYSCALL_EMULATION
	VSYSCALL_PAGE = (FIXADDR_TOP - VSYSCALL_ADDR) >> PAGE_SHIFT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值