最近,我正在开发ARM Linux内核,我需要将HighMem区域分成两部分。因此,我在内核中添加了一个新区域,比方说"NewMem“。因此,我的系统中有三个区域,它们是普通的、NewMem的和HighMem的。NewMem区域的大小为512 of (共131072页)。我的建议是,我想以我自己的方式管理NewMem区域中的所有页面帧,目前我使用一个双链接列表来分配/取消分配页面。请注意,NewMem区域的好友系统仍然存在,但我不使用它。来达到这个目的。我修改了页面分配例程,以确保内核不能从我的区域分配任何页面框架。
我关心的是,我是否可以使用该区域中的所有页面框架,因为建议每个区域都
我使用Peano-Hilbert数据排序(c++ 4.9,Linux64x)来合并动态分配的内存。为了进行控制,我试图在内存中可视化实际的数据分布。为此,我将指向数据的指针转换为整数,如下所示
unsigned long int address = *(unsigned long int*)(&pointer);
然后把它们绘制成二维地图。它在大多数情况下都能正常工作,但有时我得到的值超过了现有内存,例如140170747903888,这相当于127TB的移位,而我只有16 GB的内存。搞什么鬼?
链接1:
上面的链接给了我一个答案,但我仍然有一些疑问。请按此处所提问题的方式回答,以免我感到困惑……
1.Virtual memory is also called as Demand Paging whenever a page fault occurs
the operating system swaps the required page from the virtual memory. the virtual memory
here mean the harddisk or secondary storage. So how much space can be alloca