Posted on 2007-04-15 11:15
Shuffy 阅读(155)
评论(0) 编辑 收藏 引用
本文源自http://www.cppblog.com/milkyway/services/trackbacks/21915.aspx
硬件上必须具有MMU(Memory Manage Unit)其功能有三:1。把虚拟地址变换成物理地址;2。控制存储器空间的访问权限;3。设置缓冲。 有了这个硬件单元的板卡才能够跑windows CE。uc/os和uclinux没有引入虚拟地址也就用不着MMU了。
软件上引入了页表虚拟存储管理技术。虚实地址的变换过程实际上就是OS查询页表的过程。页表中存放的是虚拟地址对应的物理地址、访问权限、缓冲特性等。例如wince下的OEMAddressTable中的虚实映射关系。此外,为了加速查询,还引入了TLB用以存放常用的页表。
实现地址映射的思路是:1。分析逻辑地址,包括页号和页内偏移地址;2。查找页表,即物理页面;3。合成实际物理地址,物理地址=物理页面*2的N次方+偏移地址。
嵌入式系统采用两级页表的方式进行虚实地址变换,这与所用的处理器有关。比如ARM平台下,有1MB,64KB,4KB,1KB四种页面大小; X86下则是4KB和4MB。