欢迎来到天天文库
浏览记录
ID:39724361
大小:440.00 KB
页数:38页
时间:2019-07-10
《运行时存储空间的组织》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第九章运行时存储空间的组织本章内容讨论一个活动记录中的数据安排程序执行过程中,所有活动记录的组织方式存储器的组织与存储分配的策略名字存储单元状态值环境9.1目标程序运行时的活动9.1.1过程的活动活动过程的一次执行称为过程的一次活动。活动记录过程的活动需要可执行代码和存放所需信息的存储空间,后者称为活动记录(ActivationRecord)活动的生存期过程P一个活动的生存期,指的是从执行该过程体第一步操作到最后一步操作之间的操作序,包括执行P时调用其它过程花费的时间。9.1目标程序运行时的活动9.1.2参数传递传地址(传引用)(callbyreference)把实
2、在参数的地址传递给相应的形式参数。传值(callbyvalue)把实在参数的值计算出来并存放在一个被调用段可以拿得到的地方。被调用段开始工作时,首先把这些值抄进自己的形式单元中,然后就好像使用局部名一样使用这些形式单元。9.1目标程序运行时的活动传名(callbyname):也称为“换名”过程调用的作用相当于把被调用段的过程体抄到调用出现的位置,把其中任一出现的形式参数都替换成相应的实在参数(文字替换)。9.2运行时存储器的划分9.2.1运行时存储器的划分编译程序为了使它编译后得到的目标程序能够运行,要分配逻辑存储空间。程序运行时操作系统为进程分配物理存储,并完成逻
3、辑-物理空间的映射。对逻辑空间应该进行划分,其中包括生成的目标代码、数据对象和跟踪过程活动的控制栈(运行时成为进程的code,data和stack区)。目标代码的大小在编译时可以确定,所以编译程序可以把它放在一个静态确定的区域。运行时存储器的划分:地址空间共多大?目标代码静态数据栈堆9.2.2活动记录(ActivationRecord)为了管理过程在一次执行中所需要的信息,使用一个连续的存储块,这样的一个连续存储块称为活动记录。活动记录一般包含如下内容:临时单元内情向量局部变量形式单元静态链动态链返回地址9.2.3存储分配策略1静态分配静态分配策略在编译时对所有数据
4、对象分配固定的存储单元,且在运行时始终保持不变。2动态分配栈式动态分配策略在运行时把存储器作为一个栈进行管理,运行时,每当调用一个过程,它所需要的存储空间就动态地分配于栈顶,一旦退出,它所占空间就予以释放。堆式动态分配策略在运行时把存储器组织成堆结构,以便用户关于存储空间的申请与归还(回收),凡申请者从堆中分给一块,凡释放者退回给堆。9.2运行时存储器的划分影响存储分配策略的语言特征过程能否递归9.2运行时存储器的划分影响存储分配策略的语言特征过程能否递归当控制从过程的活动返回时,局部变量的值是否要保留9.2运行时存储器的划分影响存储分配策略的语言特征过程能否递归当
5、控制从过程的活动返回时,局部变量的值是否要保留过程能否访问非局部变量9.2运行时存储器的划分影响存储分配策略的语言特征过程能否递归当控制从过程的活动返回时,局部变量的值是否要保留过程能否访问非局部变量过程调用的参数传递方式9.2运行时存储器的划分影响存储分配策略的语言特征过程能否递归当控制从过程的活动返回时,局部变量的值是否要保留过程能否访问非局部变量过程调用的参数传递方式过程能否作为参数被传递9.2运行时存储器的划分影响存储分配策略的语言特征过程能否递归当控制从过程的活动返回时,局部变量的值是否要保留过程能否访问非局部变量过程调用的参数传递方式过程能否作为参数被传
6、递过程能否作为结果值传递9.2运行时存储器的划分影响存储分配策略的语言特征过程能否递归当控制从过程的活动返回时,局部变量的值是否要保留过程能否访问非局部变量过程调用的参数传递方式过程能否作为参数被传递过程能否作为结果值传递存储块能否在程序控制下动态地分配9.3静态存储分配静态分配名字在程序被编译时绑定到存储单元,不需要运行时的任何支持。9.3静态存储分配静态分配名字在程序被编译时绑定到存储单元,不需要运行时的任何支持。绑定的生存期是程序的整个运行时间。9.3静态存储分配静态分配名字在程序被编译时绑定到存储单元,不需要运行时的任何支持。绑定的生存期是程序的整个运行时间
7、。控制再次进入该过程时,局部变量的值和控制上一次离开时的一样。9.3静态存储分配静态分配名字在程序被编译时绑定到存储单元,不需要运行时的任何支持。绑定的生存期是程序的整个运行时间。控制再次进入该过程时,局部变量的值和控制上一次离开时的一样。每个活动记录的大小是固定的。9.3静态存储分配静态分配名字在程序被编译时绑定到存储单元,不需要运行时的任何支持。绑定的生存期是程序的整个运行时间。控制再次进入该过程时,局部变量的值和控制上一次离开时的一样。每个活动记录的大小是固定的。过程调用时保存信息的地址在编译时也是已知的。9.3静态存储分配静态分配给语言带来限制递归过程不
此文档下载收益归作者所有