没有合适的资源?快使用搜索试试~ 我知道了~
8 第8章 动态存储管理1
需积分: 0 0 下载量 18 浏览量
2022-08-04
16:21:56
上传
评论
收藏 437KB PDF 举报
温馨提示
试读
29页
第88章章 动态存储管理动态存储管理8.1 概述程序执行过程中,(数据)结构中的每一个数据元素都对应一定的存储空间,数据元素的访问都是通过对应的存储单元来进行的
资源详情
资源评论
资源推荐
第
第
8
8
章
章
动态存储管理
动态存储管理
8.1 概述
程序执行过程中,(数据)结构中的每一个数据元素
都对应一定的存储空间,数据元素的访问都是通过对应
的存储单元来进行的。存储空间的分配与管理是由操作
系统或编译程序负责实现的,是一个复杂而又重要的问
题,现代的存储管理往往采用动态存储管理思想。
动态存储管理:如何根据“存储请求”分配内
存空间?如何回收被释放的(或不再使用的)内存
空间?
对于允许进行动态存储分配的程序设计语言,操作
系统在内存中划出一块地址连续的大区域(称为堆) ,由
设计者在程序中利用语言提供的内存动态分配函数(如
C的malloc() ,calloc(),free()函数,C++的new,delete
函数等)来实现对堆的使用。
1 两个基本概念
◆ 占用块:已分配给用户使用的一块地址连续的内
存区域;
◆ 空闲块:未曾分配的地址连续的内存区域;
2 用户请求分配内存,系统的处理方式
当有用户程序进入系统请求分配内存时,系统有两
种处理方式:
⑴ 系统从高地址空闲块中进行分配,直到分配无法
进行时,才回收所有用户不再使用的空闲块,重新
组织一个大的空闲块来再分配;
⑵ 用户程序一旦运行结束,便将它所占内存区释放
成为空闲块,同时,每当新用户请求分配内存时,
系统需要巡视整个内存区中所有空闲块,并从中找
出一个“合适”的空闲块分配之。
对于⑵的情况,系统需建立一张“可利用空间表” 。
程序运行过程中,不断地对堆中的部分区域进行分
配和释放,堆中会出现占用块和空闲块交错的状态,如
图8-1所示。
3 动态存储分配的基本问题
⑴ 当某一时刻用户程序请求分配400
个字节的存储空间,如何分配?
◆ 将块A分配给用户程序?
◆ 从大块C中划出一部分分配给用
户程序?
⑵ 当某一时刻分配B块的用户程序运
行结束,B块要进行回收,如何回收?
◆ B块直接回收并成为一个独立的
空闲块?
◆ B块回收并和前、后的空闲块A、
C合并后形成一个更大的空闲块?
⋮
A
C
⋮
B
12196H
11000H
12004H
12240H
130EFH
图8-1 堆的状态
8.2
8.2
可利用空间表及分配方法
可利用空间表及分配方法
可利用空间表中包含所有可分配的空闲块,当用户
请求分配时,系统从可利用空间表中删除一个结点分配
之;当用户释放其所占内存时,系统即回收并将它插入
到可利用空间表中。因此,可利用空间表亦称做“存储
池”。
剩余28页未读,继续阅读
开眼旅行精选
- 粉丝: 12
- 资源: 327
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0