运行时的存储组织及管理课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《运行时的存储组织及管理课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运行 存储 组织 管理 课件
- 资源描述:
-
1、运行时的存储组织及管理运行时的存储组织及管理2022-12-17编译技术编译技术2运行时的存储组织及管理运行时的存储组织及管理概述概述存储组织存储组织运行时的存储分配策略运行时的存储分配策略静态存储分配静态存储分配动态存储分配动态存储分配对非局部名字的访问对非局部名字的访问参数传递参数传递2022-12-17编译技术编译技术3有关源程序中的一些问题有关源程序中的一些问题问题的提出:如何构造运行程序的策略和方法问题的提出:如何构造运行程序的策略和方法过程过程活动树活动树控制栈控制栈说明的作用域说明的作用域名字的绑定名字的绑定2022-12-17编译技术编译技术4名字与存储的绑定名字与存储的绑定名
2、字名字存储单元存储单元值值存储分配存储分配程序运行程序运行环境环境状态状态l-valuer-value静态概念静态概念 动态对应动态对应过程定义过程定义 过程活动过程活动名字说明名字说明 名字的绑定名字的绑定说明的作用域说明的作用域 活动的生存期活动的生存期2022-12-17编译技术编译技术5存储组织存储组织运行时刻内存的划分:假定编译器从操作系统得到运行时刻内存的划分:假定编译器从操作系统得到一块存储区,运行时的存储空间要划分成块一块存储区,运行时的存储空间要划分成块:生成的目标代码生成的目标代码;数据对象数据对象;记录过程活动的控制栈记录过程活动的控制栈对应的数据结构对应的数据结构目标代
3、码目标代码静态数据静态数据栈栈堆堆返回值返回值实在参数实在参数控制链控制链(动态链动态链)访问链访问链(静态链静态链)保存机器状态保存机器状态局部数据局部数据临时变量临时变量2022-12-17编译技术编译技术6运行时刻存储分配策略运行时刻存储分配策略分配策略是:分配策略是:静态分配;静态分配;栈式分配,或称栈式动态分配;栈式分配,或称栈式动态分配;堆式分配,或称堆式动态分配。堆式分配,或称堆式动态分配。采用哪种分配策略是由源语言的语义决定的。采用哪种分配策略是由源语言的语义决定的。2022-12-17编译技术编译技术7堆式存储分配堆式存储分配栈式存储分配策略在下列情况下不能使用:栈式存储分配
4、策略在下列情况下不能使用:活动结束时必须保持局部名字的值活动结束时必须保持局部名字的值被调用者的活动比调用者的活动的生存期长。被调用者的活动比调用者的活动的生存期长。堆式存储器的策略:(堆管理器管理堆空间)堆式存储器的策略:(堆管理器管理堆空间)把连续存储区域分成块,当活动记录或其他对象需要把连续存储区域分成块,当活动记录或其他对象需要时就分配。时就分配。块的释放可以按任意次序进行,所以经过一段时间块的释放可以按任意次序进行,所以经过一段时间后,堆可能包含交错的正在使用的和已经释放的区域后,堆可能包含交错的正在使用的和已经释放的区域2022-12-17编译技术编译技术8堆管理器的效率问题堆管理
5、器的效率问题堆管理的效率问题是数据结构理论中的特殊问题堆管理的效率问题是数据结构理论中的特殊问题对每个感兴趣的活动记录的大小,保存一个相应大小对每个感兴趣的活动记录的大小,保存一个相应大小的空闲块的链表的空闲块的链表可能的话,为大小为可能的话,为大小为s的请求分配一个大小为的请求分配一个大小为s的块,的块,其中其中s是大小等于是大小等于s的最小块。当该块最终被释放后,的最小块。当该块最终被释放后,将其链回原来的空闲块链表将其链回原来的空闲块链表对于大块存储空间,使用堆管理器管理。对于大块存储空间,使用堆管理器管理。其具体管理方法可以参考操作系统中堆内存的管理其具体管理方法可以参考操作系统中堆内
6、存的管理方法。方法。2022-12-17编译技术编译技术9栈式存储分配栈式存储分配基于控制栈的原理:基于控制栈的原理:存储空间被组织成栈,活动记录的推入和弹出分别对存储空间被组织成栈,活动记录的推入和弹出分别对应于活动的开始和结束。应于活动的开始和结束。与静态分配不同的是,在每次活动中把与静态分配不同的是,在每次活动中把和和绑定,在活动结束时,活动记录从栈绑定,在活动结束时,活动记录从栈中弹出,因而局部名字的存储空间也随之消失。中弹出,因而局部名字的存储空间也随之消失。当控制流通过图当控制流通过图6.3的活动树时活动记录被推人或弹的活动树时活动记录被推人或弹出运行时刻的栈中的情况,设寄存器出运
7、行时刻的栈中的情况,设寄存器top标记栈顶。标记栈顶。sSa:arraytoprri:integertoptopq(1,9)q(1,9)i:integertopp(1,9)p(1,9)i:integertoptopq(1,3)q(1,3)i:integertop2022-12-17编译技术编译技术11栈式存储分配栈式存储分配确定活动记录中局部数据的地址:确定活动记录中局部数据的地址:假设假设top-sp标记一个活动记录的开始的位置,标记一个活动记录的开始的位置,dx表示表示x的地址相对于的地址相对于top-sp的偏移量。那么,的偏移量。那么,x在过程的目标在过程的目标代码中的地址可写成代码中的
8、地址可写成dx(top-sp)在运行时刻,当把在运行时刻,当把x的活动记录筑于栈顶时,寄存器的活动记录筑于栈顶时,寄存器top-sp被赋于实际的地址,被赋于实际的地址,top-sp可以是一个寄存可以是一个寄存器。器。2022-12-17编译技术编译技术12调用序列和返回序列调用序列和返回序列通过在目标代码中生成调用序通过在目标代码中生成调用序列和返回序列实现过程的调列和返回序列实现过程的调用。激活一个过程的活动是执用。激活一个过程的活动是执行过程语句的结果。行过程语句的结果。过程语句过程语句p(e1,e2,en)的目的目标代码标代码(调用序列调用序列)完成任务:完成任务:调用者对实在参数求值,
9、调用者对实在参数求值,并把它们传送给被调用过并把它们传送给被调用过程的活动记录的参数域。程的活动记录的参数域。调用者在被调用者的活动调用者在被调用者的活动记录中存放返回地址和老记录中存放返回地址和老top-sp之值。之后调用者之值。之后调用者把把top一一sp之值增加到新的之值增加到新的栈顶的活动记录的位置。栈顶的活动记录的位置。被调用者存放寄存器值和被调用者存放寄存器值和其它状态信息。其它状态信息。被调用者初始化其局部数被调用者初始化其局部数据并开始执行。据并开始执行。参数和返回值参数和返回值链和保存的状态链和保存的状态临时变量和局部数据临时变量和局部数据参数和返回值参数和返回值临时变量和局
展开阅读全文