我正在研究Linux内核中sysfs虚拟文件系统的课程作业。作为设置sysfs虚拟文件系统的一部分,Linux内核将物理内存组织到块中,并进一步分为此directoy sys / devices / system / memory中的部分。在该目录中,内存块将表示为memory0,meomory1,memory2等。
在挖掘Linux内核之后,我发现内存被拆分为128MB块,然后进一步分成内存部分,并在C文件中找到代码:Memory.c。在上面的C文件中,方法memory_dev_init()具有整个内存块拆分和划分为部分的逻辑(或者我所理解的:)。根据我的教授的说法,Linux中的内存被分为三个等级,并且等级包含交叉存储器地址,如下所示:
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] ...
作为我作业的一部分,我想将等级格式更改为此,以便我可以获得连续的内存块:
rank0: [0-512KB] [512KB-1024KB] [1024KB-1536KB]...
rank1: [1536KB-2048KB] [2048KB-2560KB] [2560KB-3072KB]...
rank2: [3072KB-3584KB] [3584KB-4096KB] [4096KB-4608KB]...
rank3: [4608KB-5120KB] ...
所以我只是想知道这个内存交错究竟发生在哪里,现有的排名正在当前的Linux内核中发生。有谁能指出我正确的方向?
答案 0 :(得分:0)
我不太确定,因为我没有看到任何实际使用的问题,它确实是一种学术研究......而你想要实现的是通过完全禁用内存交错来实现的。我猜你禁用交错后,你会在sysfs中看到正确的“图片”。
换句话说 - 不需要编码,只需更改配置。
答案 1 :(得分:0)
查看BIOS中的内存交错设置。这是一个post,描述了如何在几个平台上执行此操作。