4-5非连续内存分配:页表-方向页表

优化页表机制:从页寄存器到哈希计算
文章探讨了减少页表大小与逻辑地址空间关系的方法,包括使用页寄存器、关联存储器(如TLB)以及哈希计算的定向页表。页寄存器通过页帧号查找页号,但查找机制复杂;关联存储器实现成本高;哈希计算能有效缓解映射开销,但存在碰撞和内存访问问题。高端CPU采用定向页表机制,它依赖快速哈希计算和冲突解决策略,以节省空间并提高效率。

页表的大小和逻辑地址的空间大小,是有一个对应关系的,l逻辑空间越大,寻址空间也就越大,其实意味者对应的页表也越多,那有没有办法使得页表项不和l逻辑地址空间有直接的关系?尽量和物理地址空间建立关系。这其实就是所谓的方向页表的想法。

方法一,页寄存器:

就是有一个页寄存器的一个数组,他里面的index是页帧号,根据物理页号可以查出来对应的页号是多少,跟页表项内容一样,有属性和对应的页号,是的寄存器大小只与物理地址大小有关,而与逻辑地址空间大小是无关的。

但是很明显的问题是,查找的时候是根据page num,怎么找到page num所在的位置?

页寄存器最大的问题,第一个问题就是怎么去根据页号找到页帧号,这个机制给建立起来。

好处如上图,占的空间很少。

[2025-11-16 01:20:43] [30782.619961][T1326059] luci: [name:fault&]Unable to handle kernel paging request at virtual address 0fe7000000000040 [2025-11-16 01:20:45] [30782.630733][T1326059] luci: [name:fault&]Mem abort info: [2025-11-16 01:20:45] [30782.636065][T1326059] luci: [name:fault&] ESR = 0x0000000096000004 [2025-11-16 01:20:45] [30782.642323][T1326059] luci: [name:fault&] EC = 0x25: DABT (current EL), IL = 32 bits [2025-11-16 01:20:45] [30782.650153][T1326059] luci: [name:fault&] SET = 0, FnV = 0 [2025-11-16 01:20:45] [30782.655724][T1326059] luci: [name:fault&] EA = 0, S1PTW = 0 [2025-11-16 01:20:45] [30782.661374][T1326059] luci: [name:fault&] FSC = 0x04: level 0 translation fault [2025-11-16 01:20:45] [30782.668768][T1326059] luci: [name:fault&]Data abort info: [2025-11-16 01:20:45] [30782.674165][T1326059] luci: [name:fault&] ISV = 0, ISS = 0x00000004 [2025-11-16 01:20:45] [30782.680508][T1326059] luci: [name:fault&] CM = 0, WnR = 0 [2025-11-16 01:20:45] [30782.685990][T1326059] luci: [name:fault&][0fe7000000000040] address between user and kernel address ranges [2025-11-16 01:20:45] [30782.695639][T1326059] luci: [name:traps&]Internal error: Oops: 0000000096000004 [#1] SMP [2025-11-16 01:20:45] [30782.703719][T1326059] luci: [name:mrdump&]mtk_aee_exception_notifier_call_chain: val=1 [2025-11-16 01:20:45] [30782.705904][T1326059] luci: [name:mrdump&]aee_get_modules failed [2025-11-16 01:20:45] [30782.717890][T1326059] luci: [name:mrdump&]Kernel Offset: 0x0 from 0xffffffc008000000 [2025-11-16 01:20:45] [30782.731627][T1326059] luci: [name:mrdump&]PHYS_OFFSET: 0x80000000 [2025-11-16 01:20:45] [30782.737716][T1326059] luci: CPU: 3 PID: 26059 Comm: luci Tainted: P W 5.15.167 #0 [2025-11-16 01:20:45] [30782.746494][T1326059] luci: Hardware name: MediaTek evb6990_cpe_mt7992_emmc (DT) [2025-11-16 01:20:45] [30782.753880][T1326059] luci: pstate: 20400005 (nzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [2025-11-16 01:20:45] [30782.762223][T1326059] luci: pc : get_freepointer+0x18/0x2c [2025-11-16 01:20:45] [30782.767705][T1326059] luci: lr : kmem_cache_alloc+0xec/0x130
最新发布
11-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值