操作系统——内存连续分配方式
内存连续分配的意思就是进程在申请内存资源的时候,系统给他分配的内存资源地址是连续的不间断的。
单一连续分配
在该种方式下,内存分为系统区和用户区,系统区为操作系统专属,通常位于低地址区域;用户区为用户使用,位于高地址区。这种方式无需内存保护,因为内存中只有一道程序在运行。
优点:简单,无外部碎片
缺点:只能适用于单用户,单进程的系统中,有内部碎片(分配了但是没有利用到的),存储器利用率极低
固定分区分配
将用户内存空间分为若干个固定大小的区域,每个区域只装入一个作业。当有空闲分区的时候,从外存中选取一道作业调入,如此循环。
分区有等大小和非等大小两种模式:
- 分区大小相等:缺乏灵活性
- 分区不等大小:多个较小分区,适量的中等分区,少量的大分区
由分区说明表来表示分区的情况:
分区号 | 大小/KB | 起址/KB | 状态 |
---|---|---|---|
1 | 12 | 20 | 已分配 |
2 | 32 | 32 | 已分配 |
3 | 64 | 64 | 已分配 |
4 | 128 | 128 | 未分配 |
这种方式有两个问题:
- 程序太大可能无法装入任何一个分区中
- 主存利用效率低,产生内部碎片(分区内存没有充分利用)
动态分区分配
这种分配方式不预先分配内存分区,而是在进程装入内存时,根据进程的大小动态的建立分区。
动态分区在开始的时候是很好的,随着时间的推移,当内存中装入的进程多了之后,就会出现外部碎片,出现很多的小的内存块,很难得到利用。