我已经读过,如果Linux内核虚拟地址介于0xC0000000和(0xC0000000 + 896MB)之间。映射直接指向物理地址。
即如果RAM为0x80000000。哪个直接映射到0xC0000000。
如何在Linux中实现这一目标。有人告诉MMU每次虚拟地址在0xC0000000和(0xC0000000 + 896MB)之间时减去一个偏移量
答案 0 :(得分:0)
你不是在问Linux如何解决翻译,而是MMU如何解决这个问题。
所有Linux都在内存中设置一个称为页表的数据结构,并将MMU指向此。
页表包含描述如何处理每个虚拟地址空间块的条目(块的大小通常在4KB-1MB范围内,具体取决于您的平台和配置)。您可以将其映射到物理地址,设置权限标记或在尝试访问时导致页面错误。
每次进行内存访问时,MMU都会遍历此表,以确定要执行的操作(并在某处保留缓存)。