1.概念
内存管理模式
段式:内存分为了多段,每段都是连续的内存,不同的段对应不用的用途。每个段的大小都不是统一的,会导致内存碎片和内存交换效率低的问题。
页式:内存划分为多个内存页进行管理,如在 Linux 系统中,每一页的大小为 4KB。由于分了页后,就不会产生细小的内存碎片。但是仍然也存在内存碎片问题。
段页式:段式和页式结合。
地址类型划分
逻辑地址:程序所使用的地址,通常是没被段式内存管理映射的地址,称为逻辑地址
线性地址:通过段式内存管理映射的地址,称为线性地址,也叫虚拟地址
虚拟地址:通过段式内存管理映射的地址,称为线性地址,也叫虚拟地址
物理地址:物理内存地址
说明:
Inetel处理器中,逻辑地址是「段式内存管理」转换前的地址,线性地址则是「页式内存管理」转换前的地址。
段式内存管理映射而成的地址不再是“物理地址”了,Intel 就称之为“线性地址”(也称虚拟地址)。于是,段式内存管理先将逻辑地址映射成线性地址,然后再由页式内存管理将线性地址映射成物理地址。
linux内存主要是页式内存管理,同时也有涉及段式机制。当前Linux内核所采取的办法是使段式映射的过程实际上不起什么作用。
Intel最早处理器80286是纯段式管理,80386段式和页式均存在。
2.页式管理
x86架构32位cpu
二级页表选址方式,一个内存页4KB大小,一级页目录表1024项,二级页表1024项,一个页表项4字节。一级页目录表项全部分配,二级页表在需要的时候创建