1.进程各段在内存中的分布
在谈虚拟内存管理之前,我想先介绍一下进程在执行时各内存段(这里不做具体介绍,读者可自行了解)在X86体系下的分布情况:
内核映射到程序虚拟内存,但程序无法访问 |
---|
argv,environ |
栈 |
未分配的内存 |
堆 |
未初始化的数据(bss) |
初始化的数据 |
文本(程序代码) |
上图为我们形象的展示了进程各段在内存中的详细分布情况
2.虚拟内存管理
(1)概述
在前面的关于进程在内存中的布局,我们应明确的知道,这一布局都是存在与虚拟内存的,关于虚拟内存我们必须明确它不是真正的物理内存,而是实现对物理内存的一种管理机制,这种管理机制使得我们可以更加良好的利用内存
(2)产生的先决条件
虚拟内存管理技术利用了大多数程序基本特征(见下图),以求高效的使用CPU和RAM资源
程序访问局部性 | 具体表现 |
---|---|
空间局部性 | 是指程序趋向于访问在最近访问过的内存地址附近的内存 |
时间局部性 | 是指程序趋向于在不久的将来再次访问最近刚访问过的内存地址 |