Linux内存管理

来源:互联网 发布:虚拟现实java培训 编辑:程序博客网 时间:2024/05/21 06:36

CPU的页式内存管理单元,负责把一个线性地址,最终翻译为一个物理地址

从管理和效率的角度出发,线性地址被分为以固定长度为单位的组,称为页(page)

tatol_page[2^20]的大数组,共有2的20个次方个页。这个大数组我们称之为页目录

目录中的每一个目录项,就是一个地址——对应的页的地址。(虚拟内存地址)



另一类“页”,我们称之为物理页,或者是页框、页桢的。

是分页单元把所有的物理内存也划分为固定长度的管理单位,它的长度一般与内存页是一一对应的。(物理内存管理)


这里注意到,这个total_page数组有2^20个成员,每个成员是一个地址(32位机,一个地址也就是4字节),那么要单单要表示这么一个数组,就要占去4MB的内存空间。为了节省空间,引入了一个二级管理模式的机器来组织分页单元


1、分页单元中,页目录是唯一的,它的地址放在CPU的cr3寄存器中,是进行地址转换的开始点。万里长征就从此长始了。

2、每一个活动的进程,因为都有其独立的对应的虚似内存(页目录也是唯一的),那么它也对应了一个独立的页目录地址。

运行一个进程,需要将它的页目录地址放到cr3寄存器中,将别个的保存下来。