我试图了解运行操作系统时物理地址是如何分配的。
我的问题是,当内核分配一些内存(假设使用 kmalloc)时,谁决定应该为该虚拟内存范围映射什么物理内存地址范围?
我知道内核将创建页表来将映射从虚拟转换为物理,并且 MMU 将使用它。但在此之前,应该有人分配/指派一些要映射的物理页面。这是由内核本身完成的还是 MMU 会让内核知道可以使用的特定物理地址范围?
如果内核本身分配物理地址,那么它如何跟踪哪些物理地址已被使用以及哪些是空闲的(待使用)?
linux memory virtual-memory
linux ×1
memory ×1
virtual-memory ×1