- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 动态存储管理 */33 第八章 动态存储管理 8.1 概述 8.2 可利用空间表及分配方法 8.3 边界标识法 8.4 伙伴系统 8.5 无用单元收集 8.6 存储紧缩 */33 8.1 概述(1) 程序中的变量如何存储管理? 早期,由程序员自己完成:在执行程序之前,先需将用机器语言或汇编语言编写的程序输送到内存的某个固定区域上,并预先给变量和数据分配好对应的内存地址(绝对或相对地址) 有了高级语言后,程序员不需直接和内存地址打交道:变量对应的内存地址都是由编译程序在编译或执行时进行分配 操作系统 单用户操作系统:内存空间被划分为系统区(供系统程序使用)和用户区(供单一的用户程序所使用) 多道程序设计:多个用户程序共享一个内存区域,每个用户程序使用的内存就由操作系统来进行分配。 存储管理是操作系统和编译程序的一个复杂且重要的问题! */33 8.1 概述(2) 动态存储管理的基本问题 系统如何用用户提出的“请求”分配内存? 如何回收那些用户不再使用而“释放”的内存,以备新的“请求”产生时重新进行分配? 用户提出的“请求”: 可能是进入系统的一个作业 也可能是程序执行过程中的一个动态变量 系统每次分配给用户都是一个地址连续的内存区。称已分 配给用户使用的地址连续的内存区为“占用块”,称未曾分 配的地址连续的内存区为“可利用空间块”或“空闲块”。 */33 8.1 概述(3) U1 U2 U3 U4 U5 U6 U7 U8 系统运行初期 U1 U3 U4 U6 U8 系统运行若干时间之后 占用块 空闲块 动态存储管理系统刚开工时 */33 8.1 概述(4) 当有新的用户进入系统请求分配内存,系统将如何做呢? 策略一:从高地址的空闲块中进行分配,当分配无法进行时,系统回收所有用户不再使用的空闲块,并重新组织内存,将所有空闲的内存区连接在一起成为一个大的空闲块。 策略二:从所有空闲块中找出一个“合适”的空闲块分配之。系统需要建立一张记录所有空闲块的“可利用空间表”,它可以是“目录表”,也可以是“链表”。 U1 U3 U4 U6 U8 */33 8.1 概述(5) U6 0 10000 25000 31000 39000 59000 99999 (a) 内存状态 起始地址 内存块大小 使用情况 10,000 15,000 空闲 31,000 8,000 空闲 59,000 41,000 空闲 (b) 目录表 0 15,000 av (c) 链表 0 8,000 0 41,000 ^ */33 8.2 可利用空间表及分配方法 讨论利用可利用空间表进行动态 存储分配的方法. 目录表简单,将在操作系统课程中介绍 这里仅就链表的情况进行讨论 */33 8.2 可利用空间表及分配方法(1) 可利用空间表的表示——链表 一个空闲块?一个结点 用户请求分配时,系统从表中删除一个结点分配之 用户释放所占内存时,系统即回收并将它插入到表中 根据系统运行的不同情况,可利用空间表有不同的结构形式 系统运行期间所有用户请求分配的存储量大小相同 由于表中结点大小相同,则分配时无需查找 可以用链栈实现 ——操作系统中的固定分区管理 */33 8.2 可利用空间表及分配方法(2) 系统运行期间用户请求分配的存储量有若干种大小的规格 建立若干个可利用空间表,同一链表中的结点大小相同 每个结点的第一个字设有 链域(link):指向同一链表中下一结点的指针 标志域(tag):0-空闲块、1-占用块 结点类型域(type):区分大小不同的结点 tag type link value 0 0 av2 0 0 0 0 ^ 0 1 av4 0 1 0 1 ^ 0 2 av8 0 2 0 2 ^ */33 8.2 可利用空间表及分配方法(3) 系统运行期间用户请求分配的存储量有若干种大小的规格 分配 从结点大小和请求分配的量相同的链表中查找结点并分配之 若没有,则从结点较大的链表中查找结点,将其中一部分分配给用户,剩余的插入到相应大小的链表中 若各链表都没有合适的结点,则要执行“存储紧缩”将小块合并 回收 将释放的空闲块插入到相应大小的链表的表头 */33 8.2 可利用空间表及分配方法(4) 系统运行期间分配给用户的内存块的大小不固定 开始时,整个内存空间是一个空闲块 随着分配和回收的进行,可利用空间表中的结点大小和个数也随之而变 结点的结构 链域(link):指向同一链表中下一结点的指针 标志域(tag):0-空闲块、1-占用块 大小域(size):指示该空闲块的存储量 space:地址连续的内存空间 ——操作系统中的可变分区管理 tag size link space */
您可能关注的文档
- !!有效沟通技巧(修改版).doc
- !第1章 微波测量仪器和系统(下).ppt
- #1、#2机开式水泵检修文件包.doc
- (4.14.3)消防安全知识培训.ppt
- (10.8-04)DB35-T1445-2014福建省地质勘查单位安全生产标准化规范 (地矿局核稿).pdf
- (12.24.2)珍惜生命 预防触电1.ppt
- (17一13)张礼煅)校本教研的意义与实施(校本新讲座一之13).ppt
- (22-27第3节)(谌业锋讲稿--)凉山州高2016届一诊考试情况分析暨后期复习建议.ppt
- (2014.11.1)语文课堂教学的文化思考 刘建琼.ppt
- (2014秋)高三广东专版必修三Modules 3-4综合能力测试题.doc
文档评论(0)