OS学习笔记——存储管理方式

分配方式分为:连续分配 和 离散分配

1.连续分配方式

         单一连续分配:内存被分为用户区和系统区。适用于单用户单任务操作系统。

         分区式分配方式:(1)固定分区 分成若干区域

                                            内存分配与回收:通常将内存分区根据其大小进行排队,并为之建立一张分区说明表。表中包含各分区的区号、大小、起始地址及状态等信息、

                                     (2)动态分区  作业处理过程中,根据程序的大小,动态地对内存进行规划。

动态分区分配算法,常用的有 最先适应算法、循环首次适应算法、最佳适应算法、和最坏适应算法。

最先适应算法:进行内存分配时,从空闲分区表首开始顺序查找,一旦找到大于或等于所要求内存长度的分区,则结束查找。缺点就是低地址部分不断被划分,致使低地址端留下很多难以利用的碎片,而二次查找又从低地址端开始,增加了查找可用空闲分区的开销。


循环首次适应算法:在为作业分配内存空间时,不再每次都从空闲分区表首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直到找到第一个能满足其大小要求的空闲分区。


最佳适应算法:要求空闲分区按容量大小递增的次序排列。当用户作业申请一个空闲区时,存储管理程序从空闲分区表首开始顺序查找。找到了就停止。特点是尽可能为作业选择大小一致的空闲分区,往往容易留下许多难以利用的小空闲分区。


最坏适应算法:按大小递减的顺序组成空闲分区表。


(3)可重定位分区 如果内存找不到满足作业要求大小的空闲分区,而且总空闲分区容量大于作业要求,则进行拼接。



2.离散分配方式

         (1)分页存储管理:用户程序的地址空间被划分成若干个固定大小的区域,称为“页”,相应地,内存空间也以“页”大小为单位被划分为若干个物理块。这样就可以将用户程序的任一页放入内存的任一块中,实现离散分配。

            (2)分段存储管理方式:把用户程序的地址空间按照内容或过程关系分成若干个大小不等的段。进行存储分配时,以段为单位,这些段在内存中可以不相邻接,从而实现离散分配。


3.动态分区分配与回收

         在内存分配中,系统利用某种分配算法,为作业从空闲分区表中找到所需大小的分区。设作业请求的分区大小是u.size,表中每个空闲分区的大小可表示为m.size。若m.size-u.size<size(size就是预先设定的不可以再分割的剩余分区大小),表明剩余分区太小不可分割,将整个分区分配给作业,余下的仍然留在空闲分区中,然后将分配区的首地址返回给调用者。

         当进程运行结束释放内存时,系统要回收已经使用完毕的空闲区,并将其插入空闲分区表。四种情况:回收区上下都是空闲分区、回收区上相邻区是空闲、下相邻区是空闲、回收区上下都不是空闲。

猜你喜欢

转载自blog.csdn.net/Serenity0614/article/details/79082967