内存管理笔记九、段页式内存管理
引言:在前面几篇笔记中,我们介绍到内存管理的多种方式,包括单道编程下固定加载地址,多道编程下固定分区、非固定分区、分页式内存管理,这些是内存管理模式不断演进的过程,本篇笔记将介绍现今广泛使用的段页式内存管理模式。至此,内存管理模式的演进基本就结束了,后面关于内存管理的笔记,将重在实践实现,包括虚拟内存性能调整、slab分配机制、buddy算法等学习。
一、分页式内存管理存在的问题
我们在第七篇笔记,介绍了分页式内存管理,并分析了其存在的一些缺点及应对策略,包括多级页表克服页表过大、TLB缓存机制提高翻译速度、页面置换算法降低可能的缺页中断。那分页系统还存在什么其他缺陷吗?
1.1、共享困难
虽然理论上可以按页进行共享,似乎单位很小,但实际上这是很难实现的,原因是一个页面的内容既可能包含代码又可能包含数据,即很难使一个页面只包含需要共享的内容或不需共享的内容。
只要一个页面内有一行地址是不能共享的,这个页面就不能共享,这样想自由的共享任何内容就变得很困难。
1.2、程序大小受虚拟地址空间限定
另外一个缺点也是分页系统无法忍受的,即一个进程只能占用一个虚拟地址空间。在这种限制下,一个程序的大小至多只能和虚拟空间一样大,其所有的内容都必须从这个共同的虚拟空间分配。