内存交错和内存分裂到Linux内核中发生的等级?

时间:2013-10-25 05:06:27

标签: memory memory-management linux-kernel kernel sysfs

我正在研究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内核中发生。有谁能指出我正确的方向?

2 个答案:

答案 0 :(得分:0)

我不太确定,因为我没有看到任何实际使用的问题,它确实是一种学术研究......而你想要实现的是通过完全禁用内存交错来实现的。我猜你禁用交错后,你会在sysfs中看到正确的“图片”。

换句话说 - 不需要编码,只需更改配置。

答案 1 :(得分:0)

查看BIOS中的内存交错设置。这是一个post,描述了如何在几个平台上执行此操作。