关于MMU转换表基址的问题

hxj6021   2010-1-21 16:30 楼主
MMU理解的高手来帮帮小弟啊,别人看到后也会有所帮助

在软件设计与优化一书中,发现有两处疑问。。
疑问一:我怀疑是编书错误。
“一个L2粗页表有256个页表项,占用1KB的主存空间”
“一个L2细页表有1024个页表项,占用4KB的主存空间”
这有问题吧,第一句应该是占用4KB,后者应该是占用1KB吧

疑问二:不太理解的地方
“传递给函数的唯一参数是转换表的基地址,TTB地址必须与存储器的16KB边界对齐
这个16KB边界对齐从而算来的???我隐约知道,但不太会清楚语言表达出来。呵呵

回复评论 (8)

MS在看ARM的内存管理?

1、对32位系统而言,每个表项4字节,256项自然是1024字节,1024项自然是4096字节,不知道你怎么算的。

2、如果真的说得是ARM,我这样理解16K的来源:arm采用的是段式页表,按照VMSA规定,每个表项描述1MB空间,16KB可存放4K个表项,覆盖4GB虚拟地址空间。
点赞  2010-1-21 17:20
非常谢谢 ls

对于第一点,我确实理解有错误
我之前竟然只这样理解的:
ARM MMU那章里有个LEVEL ONE FETCH框图
我看到Section 大小为1MB,我理所当然的认为对于Coarse page 肯定也是1MB,而corse page分为256个入口,我就当每个页表项占用4KB, 正好4KB * 256 = 1MB嘛
点赞  2010-1-21 18:25
而对于您说的第二点,我不太了解了。
首先“按照VMSA规定,每个表项描述1MB空间,16KB可存放4K个表项,覆盖4GB虚拟地址空间。”
哪里规定有必须要4K个表项呢?

点赞  2010-1-21 18:28
哦哦哦
莫非就是TTB转换表中的4096个入口
点赞  2010-1-21 18:29
兄弟,参阅下下面两个博客:
http://hi.baidu.com/percy_place/blog/item/28d27ede970d3151cdbf1a11.html
http://hi.baidu.com/haijie0707/blog/item/e959058233b4f8dd9123d9a5.html

也许会对你有所帮助。
点赞  2010-1-21 20:00
引用: 引用 3 楼 ialwaysgo 的回复:
而对于您说的第二点,我不太了解了。
首先“按照VMSA规定,每个表项描述1MB空间,16KB可存放4K个表项,覆盖4GB虚拟地址空间。”
哪里规定有必须要4K个表项呢?


没有人规定要有4K个表项,而是32位系统寻址空间是4GB,每个表项寻址1M,那就需要4K个表项,才能完整覆盖4GB寻址空间。
点赞  2010-1-21 20:36
谢谢大侠,以后再多多向你学习

yea
点赞  2010-1-22 01:01
继续研究
现在是知道了MMU结构,但是对其还是不够了解。
呵呵,知道是这样,不知道为什么?
比如如何在嵌入式系统搭建中如何合理的使用MMU映射,如何管理各个任务区权限,

大侠们能再指点指点吗?
结合你的一些例子就更好啦。啊门

点赞  2010-1-22 08:42
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复