一、静态分区与动态分区
(1)静态分区
- 静态分区在系统运行之前就将内存空间划分为若干个区域。
- 当进程需要内存空间时,系统按照某种分配原则为其分配一个或者多个满足要求的区域。通常,分配给进程内存区域可能比进程实际所欲要的区域长。
(2)动态分区
- 动态分区在系统运行过程中划分内存空间。
- 通常,系统可以按照进程所需要存储空间大小为其分配恰好满足要求的一个或者多个区域。
二、等长分区与异长分区
(1)等长分区
- 等长分区是指将存储空间划分为若干个长度相同的区域。
- 当进程需要存储空间时,系统为其分配一个或者多个区域。
(2)异长分区
- 异长分区是指将存储空间划分为若干个长度不同的区域。
- 当进程需要存储空间时,系统为其分配一个或者多个区域。
在实际系统中,静态分区与等长分区通常结合在一起,构成 静态等长分区 的分配形式;
动态分区与异长分区通常结合在一起,构成 动态异长分区 的分配形式。
并不是只有这两种分配形式,还有其他的组合。
例子:
- 每一个黑色框框代表一个分区;
- 红色:进程实际需要占用的空间;
- 绿色:内存空闲空间,未被占用;
- 黄色:系统分配给进程的空间,但是进程并没有使用的空间,即内部碎片;
- 上图都是在150K的空间(暂时不考虑OS占用的空间)中为两个进程分配空间。一个 需要50K,另一个需要40K的空间。
- 在静态等长分区里面,由于系统将30K划分为一个分区,而30<40<50<60,所以直接给两个进程分配60K的存储空间,虽然有些浪费,但是减少了外部碎片的产生。
- 在动态异长分区里面,系统就直接分配40K和50K的空间给两个作业,没有占着地方不干事的现象(内部碎片)。但这样分区很容易产生外部碎片。
三、总结
分区时刻
- 静态分区:系统初始化的时候直接分配,即提前划分;
- 动态分区:在进程申请内存空间的时候划分;
分区大小
- 等长分区:每个分区的大小为2i的倍数,且相等;
- 异长分区:根据程序、程序单位、对象大小来划分;
通常用法
- 静态 + 等长 (页式、段页式)
- 动态 + 异长 (段氏、界地址)
资料参考
- 《计算机操作系统教程》(第四版 编著:左万利 王英)