我发现物理内存被分成如下等级(内存交错):
rank0: [0-512KB] [2048KB-2560KB] [4096KB-4608KB] ...
rank1: [512KB-1024KB] [2560KB-3072KB] [4608KB-5120KB] ...
rank2: [1024KB-1536KB] [3072KB-3584KB] [5120KB-...
rank3: [1536KB-2048KB] [3584KB-4096KB] ...
Linux 内核正在获取这些交错的内存。所以,linux内核看到的物理内存是不连续的。如果我对此有误,请纠正我。
我一直在为我的课程工作查看 linux 内核源代码。
在创建 sysfs (/sys/devices/system/memory) 时,linux 内核会创建这些可用物理内存的一定大小(我的系统上为 128 MB)的部分(memory0、memory1、...)。使用这些目录中的状态文件,我可以使部分离线/在线。(内存热插拔)
因此,这些部分所代表的物理内存是分散的。因此,如果我使任何部分脱机,这将使分散的内存指向不可用。
我想让这些部分引用连续的内存。像这样的东西:
memory0 : 0-128 MB
memory1 : 128-256 MB
....
因此,当我使某些部分脱机时,与该部分相关的连续物理内存将变得不可用。那么,我可以让 linux 内核将物理内存视为连续的而不是交错的吗?
如果我对此有任何错误,请纠正我。
谢谢你。