操作系统3.1.4 连续分配管理方式

连续分配:意味着为用户进程分配的必须是一个连续的内存空间

 

 

一、单一连续分配

在单一连续分配方式中,内存被分为系统区用户区,系统区通常位于内存的地址部分,用于存放系统相关数据;用户区用于存放用户进程相关数据。

内存中只能有一道用户程序,用户程序独占整个用户区空间。

优点:实现简单,无外部碎片

缺点:只能用于单用户,单任务的操作系统;有内部碎片;存储器利用率极其低

内存碎片:指分配给某进程的内存区域中,如果有些部分没有用上,就是“内部碎片”

 

 

二、固定分区分配

20世纪60年代出现了支持多道程序的系统,为了能在内存中装入多道程序,并且这些程序之间不会互相干扰,于是将整个用户空间划分为若干个固定大小的分区,在每个分区只装入一道作业,这样就形成看最早、最简单的一种可运行多道程序的内存管理方式。

固定分区分配分为:分区大小相等和分区大小不等两种

分区大小相等:缺乏灵活性,但适合用于一台计算机控制多个相同对象的场合

分区带下不等:增加了灵活性,可以满足不同大小的进程需求,根据常在系统中运行的作业大小情况进行划分(比如:划分多个小分区、适量中等分区、少量大分区)

分区说明表:

优点:实现简单,无外部碎片

缺点:当用户程序太大时,可能所有的分区都不能满足需求,此时不得不采用覆盖技术来解决,但这又会降低性能;

会产生内部碎片,内存利用率低

 

 

三、动态分区分配

动态分区分配又称可变分区分配。它不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态建立分区,并使分区的大小正好适合进程的需要,因此系统分区的大小和数目是可变的。

三个问题:

1、系统要用什么样的数据结构来记录内存的使用情况?

系统使用空闲分区表空闲分区链的数据结构来记录内存的使用情况。

空闲分区表:每个空闲分区对应一个表项。表项中包含分区号、分区大小、分区起始地址等信息

空闲分区链:每个分区的起始部分和末尾部分分别设置前向指针和后向指针。起始部分处还可记录分区大小等信息

2、当很多个空闲分区都能满足需求时,应该选择哪个分区进行分配?

当很多个进程都能满足需求时,系统会根据动态分区分配算法来选择分区进行分配

3、如何进行分区的分配与回收操作?

分区进行分配时,如果被分配的分区空间大于进程使用空间,就修改空闲分区表中分区的大小,将越来的大小减去被使用的大小。如果被分配的分区空间等于进程使用空间,就从表中删除这个表项。

分区进行回收时,如果回收的分区,相邻的前后有相邻的空闲分区,就将它们进行合并,相应的修改分区表中的大小和起始地址。如果前后没有空闲分区,就需要在分区表中添加一个新的表项,填写相关信息。

 

  • 外部碎片:内存中存在某些空闲区间由于太小而难以利用
  • 内部碎片:分配给某进程的内存区域中,如果有些部分没有用上的区域
  • 可以用紧凑技术来解决外部碎片问题

两个思考:

1、回忆交换技术,什么是换入/换出?什么是中级调度(内存调度)?

2、思考动态分区分配应使用哪种装入方式?“紧凑”之后需要做什么处理?

 

红框内,常考选择题。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烟敛寒林o

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值