【发布时间】:2011-10-11 07:18:41
【问题描述】:
我在支持 64 位(即 x86-64)的架构上以传统模式运行 32 位系统。当创建一个新进程时,内核必须决定在物理内存中的哪个位置分配实例化时所需的所有页面(假设一个线程,这可能包括多个内存区域,例如堆栈、堆等) .
我假设内核保留了某种正在使用的物理 RAM 帧的动态列表,以及已被使用内存的系统的设备占用的所有物理内存区域的静态列表-映射 IO。这是正确的吗?
此外,我还读到 32 位 Windows 系统的物理内存限制为 4GB(可能是由于最小地址总线假设),因此,即使系统可能安装了超过 4 GB 的物理内存,a 32 位内核只会分配 4GB 范围内的地址。
在网上很难找到有关针对特定情况的低级操作系统实现的具体信息。任何人都可以验证这些陈述并可能将我推荐给我可以获得更多信息的来源吗?
感谢您的考虑。
【问题讨论】:
-
一次只问一个问题。
-
@Hans:这两个子问题都与内核虚拟内存管理/分配的底层问题有关