Linux kernel 直接映射内核虚拟地址

Linux kernel 直接映射内核虚拟地址,linux-kernel,mmu,Linux Kernel,Mmu,我已经读到,如果Linux内核虚拟地址介于0xC0000000和(0xC0000000+896MB)之间。映射直接到物理地址 也就是说,如果RAM为0x8000000。它直接映射到0xC0000000 这是如何在Linux中实现的。有人告诉MMU每次虚拟地址在0xC0000000和(0xC0000000+896MB)之间时减去一个偏移量吗?你不是在问Linux如何进行地址转换,而是问MMU如何进行地址转换 Linux所做的就是在内存中设置一个称为页表的数据结构,并将MMU指向该结构 页面表包含描

我已经读到,如果Linux内核虚拟地址介于0xC0000000和(0xC0000000+896MB)之间。映射直接到物理地址

也就是说,如果RAM为0x8000000。它直接映射到0xC0000000


这是如何在Linux中实现的。有人告诉MMU每次虚拟地址在0xC0000000和(0xC0000000+896MB)之间时减去一个偏移量吗?你不是在问Linux如何进行地址转换,而是问MMU如何进行地址转换

Linux所做的就是在内存中设置一个称为页表的数据结构,并将MMU指向该结构

页面表包含描述如何处理每个虚拟地址空间块的条目(块的大小通常在4KB-1MB范围内,具体取决于您的平台和配置)。您可以将其映射到物理地址,设置权限标志,或在尝试访问时导致页面错误


每次进行内存访问时,MMU都会遍历此表,以确定要执行的操作(并将其缓存在某个位置)。

如果您指的是arm,您可能应该标记
arm
。这是一些特定于拱门的东西。“这是一些特定于拱门的东西”——实际上,它似乎是特定于董事会的。我在ARM上的Linux上工作了几年,从未读过这样的映射。