运行时存储空间的组织和管理.ppt

运行时存储空间的组织和管理.ppt

ID:52160892

大小:543.00 KB

页数:95页

时间:2020-04-01

运行时存储空间的组织和管理.ppt_第1页
运行时存储空间的组织和管理.ppt_第2页
运行时存储空间的组织和管理.ppt_第3页
运行时存储空间的组织和管理.ppt_第4页
运行时存储空间的组织和管理.ppt_第5页
资源描述:

《运行时存储空间的组织和管理.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库

1、运行时存储空间的组织和管理运行时的程序过程的活动过程的一次执行称为过程的一次活动活动记录过程的活动需要可执行代码和存放所需信息的存储空间,后者称为活动记录本章内容影响存储分配策略的语言特征活动记录中各种数据域的安排(局部)各种存储分配策略(全局)静态分配、栈式分配、堆式分配非局部数据访问的实现方法各种参数传递方式及其实现符号表管理影响存储分配策略的语言特征过程能否递归当控制从过程的活动返回时,局部变量的值是否要保留过程能否访问非局部变量过程调用的参数传递方式过程能否作为参数被传递过程能否作为结果值传递存储块能否在程序控制下动

2、态地分配存储块是否必须显式地释放7.1局部存储分配策略7.1.1过程过程定义过程声明:过程名+过程体过程调用执行被调用过程的过程体形式参数过程定义中用于在主调和被调间传递数据的标识符实在参数过程调用时用于在主调和被调间传递数据的变元活动的生存期程序执行期间的连续的步序列(过程执行的第一到最后一步)名字的作用域和绑定名字的作用域一个声明起作用的那部分程序称为该声明的作用域。即使一个名字在程序中只声明一次,该名字在程序运行时也可能表示不同的数据对象(即保存值的存储单元)。符号表可用来寻找对一个名字的出现起作用的声明名字的绑定从名

3、字到值的两步映射。环境把名字映射到左值,而状态把左值映射到右值。赋值改变状态,但不改变环境。如果环境将名字x映射到存储单元s,我们就说x被绑定到s。名字存储单元状态值环境名字的绑定静态概念和动态概念的对应静态概念动态对应过程的定义过程的活动名字的声明名字的绑定声明的作用域绑定的生存期活动记录过程一次执行所需的信息用一块连续的存储区来管理,称为活动记录。一般的活动记录的布局:返回值临时数据实参可选的控制链可选的访问链保存的机器状态局部数据指向调用者的活动记录用来访问存于其它活动记录中的非局部数据局部数据的安排字节是可编址内存的

4、最小单位。变量所需的存储空间可以根据其类型而静态确定。一个过程所声明的局部变量,按这些变量声明时出现的次序,在局部数据域中依次分配空间。局部数据的地址可以用相对于某个位置的地址来表示。数据对象的存储安排还有一个对齐问题。整数必须放在内存中特定的位置,如被2、4、8整除的地址局部数据的安排在SPARC/Solaris工作站上下面两个结构的size分别是24和16,为什么不一样?typedefstruct_a{typedefstruct_b{charc1;charc1;longi;charc2;charc2;longi;doub

5、lef;doublef;}a;}b;局部数据的安排在SPARC/Solaris工作站上下面两个结构的size分别是24和16,为什么不一样?typedefstruct_a{typedefstruct_b{charc1;0charc1;0longi;4charc2;1charc2;8longi;4doublef;16doublef;8}a;}b;局部数据的安排在X86/Linux机器的结果和SPARC/Solaris工作站不一样,是20和16。typedefstruct_a{typedefstruct_b{charc1;0ch

6、arc1;0longi;4charc2;1charc2;8longi;4doublef;12doublef;8}a;}b;程序块本身含有局部变量声明的语句可以嵌套最近嵌套作用域规则并列程序块不会同时活跃并列程序块的变量可以重叠分配程序块main(){/beginofB0/inta=0;intb=0;{/beginofB1/intb=1;{/beginofB2/inta=2;}/endofB2/{/beginofB3/intb=3;}/endofB3/}/endofB1/}/endofB0/声明

7、作用域inta=0;B0B2intb=0;B0B1intb=1;B1B3inta=2;B2intb=3;B3a0b0b1a2,b3重叠分配存储单元7.2全局存储分配策略介绍程序运行时所需的各个活动记录在存储空间的分配策略描述过程的目标代码怎样访问绑定到局部名字的存储单元介绍三种分配策略静态分配策略栈式分配策略堆式分配策略7.2.1运行时内存的划分代码静态数据栈堆7.2.2静态存储分配策略名字在程序被编译时绑定到存储单元,不需要运行时的任何支持。绑定的生存期是程序的整个运行时间。控制再次进入该过程时,局部变量的值和控制上

8、一次离开时的一样。每个活动记录的大小是固定的。过程调用时保存信息的地址在编译时也是已知的。例:某分段式程序运行时刻的内存划分数组区临时工作单元区简单变量区形式单元区寄存器保护区返回地址某程序段指令代码常数区局部数据区程序段1程序段2……程序段n公用数据区静态存储分配策略顺序分配算法(基于调

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。