《操作系统教学资料》LHB第四章 存储器管理2.pptVIP

《操作系统教学资料》LHB第四章 存储器管理2.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
逻辑地址与物理地址示意图 4.2 程序的装入和链接 从源程序到程序的执行过程 4.2 程序的装入和链接 一. 程序的链接 把一个程序相关的一组目标模块以及它们所需要的库函数模块链接形成一个整体(即装入模块)的过程。 对相对地址的修改; 变换外部调用符号。 1.静态链接 装入之前由链接程序将所有的目标模块和程序需要的库函数模块链接形成一个整体,以后不再拆开。 缺点: 不便于软件版本的修改和更新; 不便于实现目标模块的共享; 4.2 程序的装入和链接 二、程序的装入 把链接好的装入模块装入内存。 4.3 连续分配方式 指分配给每个进程一段连续的内存空间,具体分配方式有: 单一连续分配 固定分区分配 动态分区分配 可重定位分区分配 对换 4.3 连续分配方式 一. 单一连续分配 三、动态分区分配方式 1. 概念 预先不进行分区的划分; 分配时,从空闲区中划出一个刚好能满足要求的分区给进程; 分区的个数和分区的大小随着内存的分配和回收动态地变化。 三. 动态分区分配方式 2. 数据结构 空闲分区表 空闲分区链 三. 动态分区分配方式 三. 动态分区分配方式 4. 分配内存过程 在回收内存时可能出现下述四种情况:(1)释放区与插入点前一分区F1相邻接,此时应(A);(2)释放区与插入点后一分区F2相邻接,此时应(B);(3)释放区不与F1和F2相邻接,此时应(C)。 A,B,C: (1)为回收区建立一分区表项,填上分区的大小和始址; (2)以F1分区的表项作为新表项且不做任何改变; (3)以F1分区的表项为新表项,但修改新表项的大小; (4)以F2分区的表项作为新表项,同时修改新表项的大小和始址。 答案:A(3) B(4) C(1) 4.3 连续分配方式 四. 可重定位分区分配 引入 随着系统接收的作业的增加,内存中连续的大块分区不复存在,产生了大量的“碎片”。 新的作业无法装入到每个“碎片”小分区上运行,但所有碎片的空间总和可能大于需求。 通过“拼接”或“紧凑” 来实现程序的浮动(动态重定位)。 四. 可重定位分区分配 四. 可重定位分区分配 可重定位分区分配算法 动态分区分配+紧凑技术(需要动态重定位技术的支持) 优点: 消除了“碎片”,提高了内存利用率,同时提高了系统效率。 缺点: 需要动态重定位“硬件”机构支持,增加了系统成本,并轻度降低了程序执行速度,“紧凑”处理增加了系统开销。 第4分区 第3分区 第2分区 第1分区 状态 起始 地址 分区 大小 区号 OS 进程C(20K) 进程A(6K) 内部碎片 二. 固定分区分配 3.数据结构:分区使用表 0:已分配 1:未分配 1 8K 20K 未使用 2 32K 28K 未使用 3 64K 60K 未使用 4 132K 124K 未使用 进程B(25K) 20K 28K 60K 124K 256K-1 0K 已使用 已使用 已使用 进程A申请6K空间 进程B申请25K空间 进程C申请20K 进程B释放25K空间 4. 内存分配与回收 二. 固定分区分配 优点:易于实现,开销小。 缺点:内部碎片(内零头)造成浪费; 并发执行的程序道数受分区总数的限制。 4. 固定分区分配的特点 4.3 连续分配方式 OS 进程A 内存 空 闲 分 区 进程 A申请8K 进程 B申请16K 进程 C申请64K 进程 A释放8K 进程 D申请24K 进程B 进程C 进程D 8K 16K 64K 24K OS OS 进程A OS 进程A 进程B OS 进程A 进程B 进程C OS 进程B 进程C OS 进程B 进程C 进程D A申请8K B申请16K C申请64K A释放8K D申请24K 分配过程中内存变化情况 OS 进程B 进程C 进程D 序号 始址 大小 状态 0:表项无效 1:表项有效 空闲分区表 0 20K 28K 108K 44K 132K 256K-1 1 132K 124K 有效 2 20K 8K 有效 3 无效 …… …… …… …… 空闲双向链表结构 …… 链首指针 链尾指针 前向指针 后向指针 分区大小 分区始址 空闲链表可以是单向链表,也可以是双向链表。 三. 动态分区分配 3. 分区分配算法 (1)首次适应算法 空闲区以地址递增的次序拉链。

文档评论(0)

***** + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档