我正在研究如何在Linux内核中启用分页,但我不明白内核如何能够寻址从8MB到1GB的虚拟内存。我的意思是,在启动阶段,内核有一个非常小的页面表编码到映像中。这个页面表(由swapper_pg_dir指定)允许您只编写页面表的前两个条目。每个条目指向一个4MB的页面。因此,内核总共只能处理8MB的虚拟内存。然后,内核必须安装页面表的第二级,以驱动其所有1GB的虚拟内存。为了解决这个问题,它必须依赖于一些允许检索缓冲区的内存分配器,以便将第二级页面表的条目放在哪里:这是引导分配器。
因此,我的问题是:内核地址如何从8MB到1GB的虚拟内存?
发布于 2018-03-29 17:57:29
我不知道问题到底是什么--它使用了分页单元--也许可以在这里看到:https://stackoverflow.com/questions/18431261/how-does-x86-paging-work
896 8MB以下的页面目录仍然存储在swapper_pg_dir中,它只是在最初的8MB初始化之后重新初始化。事情在896 and和4096 and以上变得更加复杂,在4096 and以上变得更加复杂。
https://unix.stackexchange.com/questions/434340
复制相似问题