前面说到了采用分段技术来进行虚拟地址(地址空间)到物理内存的转换。
分段有什么问题?
肯定得有不足,才需要提出新的技术来改进。那么我们刚才的分段机制,不是挺好的嘛?有什么问题呢?
比如说,我们现在存放一些内容,需要占用 160K 的空间,但是我们来看空间的地址空间,分别是150K和50K,每个段都不足以满足 160 K 的要求,但是两个加起来,的的确确可以满足要求。
只使用 分段机制,会造成内存碎片,浪费空间。
如何解决呢?
针对上面的问题,我们可以想到有下面的一些方法:
- 移动已经使用的内存,把空闲的内存放在一起。这样就可以有200K的空闲内存了。
- 把160K的内容分成多个块,比如分成4个40K,然后就可以放进去了。
- 把不需要的进程内容放到磁盘,然后就有了更大的空闲内存。
这些方法,都可以解决上面的问题。但方法1、3需要很多额外的动作,方法一移动内容是很慢的,而且移动过程中,CPU不能做其他事。方法三,会影响其他进程的使用。相对来说,方法二相比其他方法,较为优秀。
分页
上