文章目录
前言
最近复习写慕课版的操作系统习题,有几个知识点习题记录下,有不足之处望指正。
一、题目
某系统采用动态分区分配方式管理内存,内存空间为640KB,低端40KB用来存放OS。系统为用户作业分配空间时,从低地址区开始。针对下列的请求序列,画图表示使用首次适应算法进行内存分配和回收后内存的最终映像,作业请求序列如下:
作业1申请200KB、作业2申请70KB、
作业3申请150KB、作业2释放70KB、
作业4申请80KB、 作业3释放150KB、
作业5申请100KB、作业6申请60KB、
作业7申请50KB、 作业6释放60KB。
二、解答
1.内存的分配实际使用情况
使用首次适应算法进行上述内存的分配实际使用情况如图所示:

2.回收后的实际情况

三、知识点记录
1.连续分配存储管理方式
(1)单一连续分配
适用于早期的单道程序,一次只能运行一个程序。
(2)固定分区分配
适用于多个相同程序的多道程序,把用户区划分为若干个大小一样的区域。
分区使用表:
包括了分区的起始地址、大小、状态。
(3)动态分区分配
需要一个数据结构来描述内存情况,如空闲区和已分配区,为分配提供依据。以下是数据结构的两种表现形式:
① 可变式分区数据结构
- 空闲分区表:
空闲分区表为每个尚未分配的分区设置一个表项,包括分区的序号、大小、始址和状态。
- 空闲分区链:
为了实现对空闲分区的分配和链接,在每个分区的起始部分,设置一些用于控制分区分配的信息(如分区的大小和状态位),以及用于链接其它分区的前向指针;在分区尾部,则设置了一个后向指针,为了检索方便也设置了控制分区分配的信息。然后,通过前、后向指针将所有的分区链接成一个双向链表。
② 动态分区分配算法(Partitioning Placement Algorithm)(基于顺序搜索)
- 首次适应算法:
从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的空闲区。
- 循环首次适应算法:
该算法是首次适应算法的变种。在分配内存空间时,不再每次从表头(链首)开始查找,而是从上次找到的空闲区的下一个空闲区开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得比较均匀。
- 最佳适应算法:
它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按大小从小到大进行排序,自表头开始查找到第一个满足要求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。
- 最坏适应算法:
从所有未分配的分区中挑选最大的且大于和等于作业大小的分区分给要求的作业;空闲分区按大小由大到小排序。该算法使小的空闲区减少,但造成大的空闲区不够大。
本文记录了操作系统动态分区分配的习题解答,包括首次适应、循环首次适应、最佳适应和最坏适应算法。通过对不同内存分配场景的分析,展示了动态分区分配过程及其在内存管理中的应用。
1万+

被折叠的 条评论
为什么被折叠?



