连续分配存储的四种管理方式

时间:2024-04-03 14:51:02

连续分配存储的四种管理方式

连续分配方式指为一个用户程序分配给一个连续的内存空间

单一连续分配

原理:将内存分为用户区和系统区,每次运行时,都将整个用户区分配给当前执行的一道作业

固定分区分配

原理:将用户区分为若干个区域(两种方法:大小相等/分区大小不等),每个分区只执行一道作业,当该分区的作业执行完毕后则可从外存的后备队列种继续调入该分区
实现:为了便于内存的分配,系统会将分区按照大小进行排队,并且建立一张分区使用表,表中包括了各个分区的起始地址、大小、以及分配与否的状态
容易产生内碎片

动态分区分配

原理:根据进程的实际需要,动态的为之分配内存空间,作业装入内存时,把可用内存分出一个连续区域给作业,且分区的大小正好适合作业大小的需要,分区的大小和个数依装入作业的需要而定
实现
  1. 分区分配中的数据结构
    设置了两个表,一个为空闲分区表,另一个为空闲分区表
    因为数组的存储是顺序的,所以当表很长时,需要使用的连续内存空间就会很大,所以使用空闲链结构(两个指针域分别指向前一个后后一个,两个数据域分别存储分区大小和开始地址)
  2. 分区分配算法
    常用的分区分配算法
    a.首次适应算法FF
    连续分配存储的四种管理方式
    b.循环首次适应算法
    连续分配存储的四种管理方式
    c.最佳适应算法
    连续分配存储的四种管理方式
  3. 分区分配及回收操作
    在进行分区分配的时候,系统会有两个表分别记录着已经分配和未分配的分区的编号、大小、开始地址、分区大小、分配情况等信息,在分配的时候采用某一种分配方法,将内存分配出去。
    回收时要根据具体情况,来进行资源的回收,如果释放的内存区域能够和前面或者后面一个程序结合起来,则将内存区域合并成一个新得更大的内存区域,如果没有可以合并的单独建立表项进行记录即可。
    动态分区分配容易产生内碎片

可重定位分区分配

可重定位的分区分配方式是在动态装入的基础上进行的,当程序采用了动态分区分配方式装入后,在程序执行的期间,在对每条指令访问时进行的地址变换。
其实动态分区分配方式与可重定位方式类似,只不过可重定位方式 增加了紧凑功能。