Advertisement

Linux内存管理--系列文章貮——内核态内存

阅读量:

承接前文所述内容,在用户态部分完成编写工作的基础上,本章节将着重探讨内核态内存空间的实现与描述。

3.内核态内存管理机制

观察可以发现,无论系统是32位还是64位架构,用户态空间所呈现的内存布局差异并不明显。这主要归因于虚拟内存机制的应用,它使应用程序在运行过程中能够感知到与其他程序的隔离性,从而产生自身独占全部3G内存的错觉。然而,内核态空间则呈现出截然不同的特征,它被所有进程所共享,无论哪个进程的内核态结构都呈现出高度一致的状态。

注意内核态的内存地址也虚拟内存地址,不要以为来这就变成实际的物理地址了。

3.2.1 32位系统

在Linux操作系统中,系统通过/arch/x86/include/asm/page_32_types.h文件中定义的__PAGE_OFFSET变量来确定内核空间的起始位置。对于32位架构而言,该值被设定为0xC000 0000,目前作者并未对其进行修改,因此有兴趣的用户可以尝试调整这一参数以进行相关测试。

1.在这1G空间中,最前边的896MB是直接映射区。

该块内存区域与0至896M的物理地址之间存在直接对应关系。
虚拟内存中从3G到3G+896MB的地址范围,在扣除3G后即对应实际的物理内存地址。这种映射方式具有恒定不变的特点。
用户可通过执行cat /proc/iomem命令进行查看,但需

全部评论 (0)

还没有任何评论哟~