匚L1 ink tag68R1ink tag Up link 9.2分区式分配 图2控制信息区 二、可变式分区(动态分区 1.思想:又称动态存储管理,只有当作业调入内存时,才按作业大小 建立分区,当作业执行完后又释放此空间。采用链结构来构造分区 目录。下面从空间的分配和回收来进行讨论。 2.空间分配:由于多作业调入内存运行,有些作业运行结束后释放所 占空间,内存区呈现占用块与空闲块交叉存在的状态,如图1所丞 在每块开始与结束的几个字节中存放有关本块状态的信息,称为控 制信息区,并把所有的空闲块链成一个双向链表,如图2所示。其 中,L1ink和 Rlink为链表左右指针,tag=0表示空闲块,tag=1表示 占用块,size是本块的大小, Uplink为本块的起始地址 占用块空闲块 图1 计算机软件技术基础 存储管理
计算机软件技术基础 存储管理 9.2 分区式分配方式 二、可变式分区(动态分区) 1. 思想:又称动态存储管理,只有当作业调入内存时,才按作业大小 建立分区,当作业执行完后又释放此空间。采用链结构来构造分区 目录。下面从空间的分配和回收来进行讨论。 2. 空间分配:由于多作业调入内存运行,有些作业运行结束后释放所 占空间,内存区呈现占用块与空闲块交叉存在的状态,如图1所示。 在每块开始与结束的几个字节中存放有关本块状态的信息,称为控 制信息区,并把所有的空闲块链成一个双向链表,如图2所示。其 中,Llink和 Rlink为链表左右指针,tag=0表示空闲块,tag=1表示 占用块,size是本块的大小,Uplink为本块的起始地址。 P1 P3 P4 P6 P8 L link tag size R link tag Up link 图 2 控制信息区 图 1 占用块 空闲块
二、可变式分区 空间分配例题 设某系统用户区大小为500字节,地址为1~5000,初始状态 如下图a所示,依次分配给5个作业P1~P,作业占用区大小分 别为1000,300,60,90,700。P为余下的空闲块,各占用 块和空闲块情况如下页图b和c所示 匚PP2P」P4P5」P0 1000 300 600 900 700 1500 图a 计算机软件技术基础 存储管理
计算机软件技术基础 存储管理 空间分配例题 ▪ 设某系统用户区大小为5000字节,地址为1 ~ 5000,初始状态 如下图a所示,依次分配给5个作业P1 ~ P5, 作业占用区大小分 别为1000,300,600,900,700。 P0 为余下的空闲块,各占用 块和空闲块情况如下页图b和c所示。 P1 P2 P3 P4 P5 P0 1000 300 600 900 700 1500 图 a 二、可变式分区
占用块、空闹块表示图 1001 1301 11000 1300 1600 90 2801 1700 1900 图b一占用块 5 av 3501 01500 图c—空闲块 0
占用块、空闲块表示图 1 1000 P1 1 1 1 300 P2 1 1 600 P3 1 1 700 P5 1 1 900 P4 1 1001 1301 2801 1901 0 1500 P0 0 图b—占用块 图c—空闲块 av 3501
二、可变式分区 3.空间回收:当作业执行完毕后,系统将空间收回,插入到空闲块链 表中,但插入时还要判断左右相邻块是否空闲,若是则合并成一个 较大的空间,它可通过每一块中头尾的控制信息区的tag标志来判断 设当前回收块起始地址为p,大小为n,则应判断它左邻居p-1和右邻居 p+n的tag是否为0,若不为0则将当前回收块插入到空闲块链表中 若出现有tag为0的相邻块,则应修改原空闲块的大小,将本回收块 和相邻块合并。如下图。 左邻居 右邻居 P-1 P P+n 计算机软件技术基础 存储管理
计算机软件技术基础 存储管理 二、可变式分区 3. 空间回收:当作业执行完毕后,系统将空间收回,插入到空闲块链 表中,但插入时还要判断左右相邻块是否空闲,若是则合并成一个 较大的空间,它可通过每一块中头尾的控制信息区的tag标志来判断。 设当前回收块起始地址为p,大小为n,则应判断它左邻居p-1和右邻居 p+n的tag是否为0,若不为0则将当前回收块插入到空闲块链表中。 若出现有tag为0的相邻块,则应修改原空闲块的大小,将本回收块 和相邻块合并。如下图。 左邻居 右邻居 P-1 P P+n n
可变式分区 令空间回收例题 在空间分配例题中,当作业P完成后,应回收P4分区到空 闲块链表中,见图a;当P5作业完成后,回收使由于其左 右邻居均为空闲块,因此应进行合并,见图b所示。 计算机软件技术基础 存储管理
计算机软件技术基础 存储管理 二、可变式分区 ❖ 空间回收例题 • 在空间分配例题中,当作业P4完成后,应回收P4分区到空 闲块链表中,见图a;当P5作业完成后,回收使由于其左 右邻居均为空闲块,因此应进行合并,见图b所示