内存管理方法
可以简单分为:
- 连续分配管理机制:给程序分配一个连续的内存空间
例如:块式管理
- 非连续分配管理机制:给程序分配离散的内存空间
例如:段页式管理
【1】块式管理
块式管理是很久以前的内存管理方式(古老)
块式管理将内存分类一个个连续的内存块,每个块中只能包含一个进程
这样就导致极大的内存空间浪费,程序用不完一个块的情况
碎片: 块中未被使用的内存空间
【2】页式管理
页式管理将内存分为大小相等且固定的一页一页的离散空间
大小:页 < 块
页式管理:提高了内存利用率,减少碎片
页式管理通过页表对应逻辑地址和物理地址
说白了就是在块的基础上划分的更小了且不连续
【3】段式管理
页式管理虽然提高了内存利用率,但是每一页的内容依然混杂,没有具体的意义
段式管理在页式管理的基础上:
- 将内存划分成更小的段(划分力度更大)
- 每一段由于针对具体的程序,故有了具体的意义
例如:主程序段、子程序段、数据段、栈段……
段式管理通过段表对应逻辑地址和物理地址
其实,从名称上就能看出内存管理机制的发展:
-
块:太大了,浪费很多内存空间(碎片)
-
页:相对块划分更小,提高了内存利用率,减少了碎片,但是每一页没有具体的意义
-
段:相对页划分更小,利用率更高,且每一段都有具体的意义
【4】段页式管理
段页式管理:结合了段式和页式管理的优点,先将内存分成若干段,然后将每一段再分成若干页
- 段与段之间是离散的
- 段的内部是一页页的,也是离散的
(好比写文章,主标题下的内容再划分成副标题模块……)