1. 内存管理的原因
- 重定位: 程序会换出换入内存,要知道程序在哪个区域,处理器和操作系统要能将程序代码中的内存访问转换到实际的物理内存地址。
- 保护:进程外的程序不能未经授权访问本进程的空间。用户进程不能访问操作系统的部分。(但这好像是处理器硬件管的事情,将内存访问限定在一定范围内,没懂。)
- 共享: 合作同步进程可能要共享同一片内存。
- 逻辑组织: 内存外存都是以线性的物理形式,而程序被构造成模块,需要分段技术来组织各个程序。
- 物理组织: 在内存和外存之间传输数据,需要由操作系统来管理。
2. 内存分区
- 这一章先不考虑到虚拟内存的技术,先看一些无虚存下的内存分区方式。
- 固定分区:将内存分为固定大小的区域,每个区域放置一个程序。会与很多内部碎片;
- 动态分区: 装入程序时,直接分配一块一样大小的区域,但是在多次装载、取出之后,会产生很多外部碎片。在碎片过多时可以利用压缩技术解决,但是压缩技术非常耗时。
- 伙伴系统(buddy system): 结合固定和动态分区,给出一个折中的方式。大概起个名字就是二分法,如果分成一半能装下,则一直分到最小的能装下的大小。然后当释放时,如果有两个能凑成一个,