运行环境相关知识讲解专家课件

上传人:ahu****ng1 文档编号:279218345 上传时间:2022-04-19 格式:PPTX 页数:72 大小:652.47KB
返回 下载 相关 举报
运行环境相关知识讲解专家课件_第1页
第1页 / 共72页
运行环境相关知识讲解专家课件_第2页
第2页 / 共72页
运行环境相关知识讲解专家课件_第3页
第3页 / 共72页
运行环境相关知识讲解专家课件_第4页
第4页 / 共72页
运行环境相关知识讲解专家课件_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《运行环境相关知识讲解专家课件》由会员分享,可在线阅读,更多相关《运行环境相关知识讲解专家课件(72页珍藏版)》请在金锄头文库上搜索。

1、LI Wensheng, SCST, BUPT 第第7章章 运行环境运行环境知识点:活动记录、控制栈知识点:活动记录、控制栈 栈式存储分配栈式存储分配 参数传递方式参数传递方式1Wensheng Li BUPT 2008运行环境运行环境n程序运行时刻的环境,即运行中程序的信息是怎样程序运行时刻的环境,即运行中程序的信息是怎样存储和访问的。存储和访问的。n执行过程中,程序中数据的存取是通过对应的存储执行过程中,程序中数据的存取是通过对应的存储单元来进行的。单元来进行的。n存储组织与管理存储组织与管理早期的计算机上,存储管理工作是由程序员自己来完成早期的计算机上,存储管理工作是由程序员自己来完成有

2、了高级语言之后,程序中使用的存储单元都由有了高级语言之后,程序中使用的存储单元都由标识符标识符来来表示,它们对应的内存地址由编译程序在编译时或由其生表示,它们对应的内存地址由编译程序在编译时或由其生成的目标程序在运行时进行分配。成的目标程序在运行时进行分配。n存储的组织及管理是编译程序要完成的一个复杂而存储的组织及管理是编译程序要完成的一个复杂而又十分重要的工作。又十分重要的工作。2Wensheng Li BUPT 2008运行环境运行环境7.1 7.1 程序运行时的存储组织程序运行时的存储组织7.2 7.2 存储分配策略存储分配策略7.3 7.3 访问非局部名字访问非局部名字7.4 7.4

3、参数传递机制参数传递机制 小小 结结3Wensheng Li BUPT 20087.1 7.1 程序运行时的存储组织程序运行时的存储组织概念:过程与活动概念:过程与活动一、程序运行空间的划分一、程序运行空间的划分二、控制栈与活动记录二、控制栈与活动记录三、作用域及名字绑定三、作用域及名字绑定4Wensheng Li BUPT 2008概念:过程与活动概念:过程与活动n过程的定义过程的定义一个声明语句一个声明语句把一个标识符和一个语句联系起来把一个标识符和一个语句联系起来标识符是过程名,语句是过程体。标识符是过程名,语句是过程体。n过程的分类过程的分类过程:没有返回值的过程过程:没有返回值的过程

4、函数:有返回值的过程函数:有返回值的过程也可以把函数、一个完整的程序看作过程也可以把函数、一个完整的程序看作过程n过程引用:过程名出现在一个可执行语句中过程引用:过程名出现在一个可执行语句中n参数:参数:形参、实参形参、实参5Wensheng Li BUPT 2008活动活动n活动活动一个过程的每次执行称为它的一次活动一个过程的每次执行称为它的一次活动如果一个过程在执行中,则称它的这次活动是如果一个过程在执行中,则称它的这次活动是活着的活着的n过程与活动过程与活动过程是一个静态概念,活动是一个动态概念过程是一个静态概念,活动是一个动态概念过程与活动之间可以是过程与活动之间可以是1:1、1:m的

5、关系的关系递归过程,同一时刻可能有若干个活动是活着的递归过程,同一时刻可能有若干个活动是活着的每个活动都有自己独立的存储空间每个活动都有自己独立的存储空间/ /数据空间数据空间PPPP有有3个活着的活动个活着的活动P有有2个活着的活动个活着的活动P有有1个活着的活动个活着的活动6Wensheng Li BUPT 2008活动的生存期活动的生存期n程序执行时程序执行时, ,过程之间的控制流过程之间的控制流是连续的是连续的过程的每一次执行都是从过程体的起点开始,最后控制返回到直接跟过程的每一次执行都是从过程体的起点开始,最后控制返回到直接跟随本次调用点的位置。随本次调用点的位置。n活动的生存期活动

6、的生存期过程体的执行中,第一步和最后一步之间的一系列步骤的执行时间过程体的执行中,第一步和最后一步之间的一系列步骤的执行时间过程过程P的一次活动的生存期,包括执行过程的一次活动的生存期,包括执行过程P所调用的过程的时间,所调用的过程的时间,以及这些过程所调用的过程的时间以及这些过程所调用的过程的时间如果如果a和和b是过程的活动,那么它们的生存期要么是不重叠,要么是是过程的活动,那么它们的生存期要么是不重叠,要么是嵌套的。嵌套的。n递归过程:递归过程:如果一个过程,它的不同活动的生存期可以嵌套,则这个过程是递归如果一个过程,它的不同活动的生存期可以嵌套,则这个过程是递归的的直接递归、间接递归直接

7、递归、间接递归ababab7Wensheng Li BUPT 2008一、程序运行空间的划分一、程序运行空间的划分n编译程序在编译源程序时,向操作系统申请一块编译程序在编译源程序时,向操作系统申请一块内存区域,以便被编译程序在其中运行内存区域,以便被编译程序在其中运行代码区代码区/ 保存目标代码保存目标代码 静态数据区静态数据区 控制栈控制栈 堆堆 编译时可以确定代码段的长度,编译时可以确定代码段的长度,可以放在一个静态确定的区域内可以放在一个静态确定的区域内编译时可确定大小的数据对象,放在静态确编译时可确定大小的数据对象,放在静态确定的区域内,目标地址可以编入目标代码中定的区域内,目标地址可

8、以编入目标代码中用于管理过程的活动、用于管理过程的活动、保存断点的现场信息,用于返回时的恢复保存断点的现场信息,用于返回时的恢复程序控制下进行的动态存储分配,程序控制下进行的动态存储分配,分配在堆中,如分配在堆中,如Pascal中中new函数函数?8Wensheng Li BUPT 2008二、控制栈与活动记录二、控制栈与活动记录n控制栈:用于保存控制信息的栈。控制栈:用于保存控制信息的栈。程序执行过程中使用控制栈来保存活动的生存踪迹及活动程序执行过程中使用控制栈来保存活动的生存踪迹及活动的运行环境。的运行环境。 n活动记录:一个连续的存储块活动记录:一个连续的存储块记录过程在一次执行中所需要

9、的信息记录过程在一次执行中所需要的信息n通常,活动记录分配在控制栈中(像通常,活动记录分配在控制栈中(像PascalPascal、C C)当一个过程被调用时,被调用过程的一次新的活动被激活,当一个过程被调用时,被调用过程的一次新的活动被激活,在栈顶为该活动创建一个新的活动记录来保存其环境信息;在栈顶为该活动创建一个新的活动记录来保存其环境信息;当活动结束,控制从被调用过程返回时,释放该活动记录,当活动结束,控制从被调用过程返回时,释放该活动记录,使调用过程的活动记录成为栈顶活动记录,即恢复调用过使调用过程的活动记录成为栈顶活动记录,即恢复调用过程的执行环境。程的执行环境。 9Wensheng

10、Li BUPT 2008活动记录的内容活动记录的内容返回值返回值实参区域实参区域控制链控制链访问链访问链机器状态域机器状态域局部数据区局部数据区临时数据区临时数据区存放中间计算结果存放中间计算结果在本次活动中,为过程中定义的局部变量在本次活动中,为过程中定义的局部变量分配的存储空间分配的存储空间保存断点的现场信息,寄存器、保存断点的现场信息,寄存器、PSWPSW等等指向直接外围过程的最近一次活动的活动指向直接外围过程的最近一次活动的活动记录的指针,用于对非局部名字的访问记录的指针,用于对非局部名字的访问指向调用过程的活动记录的指针,指向调用过程的活动记录的指针,用于本活动结束时的恢复用于本活动

11、结束时的恢复调用过程提供给本活动的实参值调用过程提供给本活动的实参值本活动返回给调用过程的值本活动返回给调用过程的值根据确定每个域所需空间大小的时间早晚安排其位置。根据确定每个域所需空间大小的时间早晚安排其位置。(1) 早:中间早:中间 晚:两头晚:两头 (2) 用于通信:前面用于通信:前面 自己用的:后面自己用的:后面10Wensheng Li BUPT 2008活动记录中内容的安排原则活动记录中内容的安排原则n大小能够较早确定的区域放在活动记录的中间,大小能够较早确定的区域放在活动记录的中间,大小较晚才能确定、并且变化较多的区域放在活大小较晚才能确定、并且变化较多的区域放在活动记录的两头。

12、动记录的两头。控制链、访问链、机器状态域,是编译器设计的一部分,控制链、访问链、机器状态域,是编译器设计的一部分,编译器构造时就可以确定它们的大小,所以把这些区域编译器构造时就可以确定它们的大小,所以把这些区域放在活动记录的中间。放在活动记录的中间。参数域放在前面,便于调用过程进行参数传递,同时,参数域放在前面,便于调用过程进行参数传递,同时,被调用过程也可很方便地进行访问。被调用过程也可很方便地进行访问。返回值域放在最前面,便于调用过程可以根据自己的栈返回值域放在最前面,便于调用过程可以根据自己的栈指针访问该区域,取回返回值。指针访问该区域,取回返回值。局部数据局部数据/ /临时数据安排在最

13、后,其大小变化不会影响临时数据安排在最后,其大小变化不会影响到活动记录中其他数据的存取。并且调用过程也无权访到活动记录中其他数据的存取。并且调用过程也无权访问被调用过程中的局部数据。问被调用过程中的局部数据。11Wensheng Li BUPT 2008局部数据的安排局部数据的安排n常识:常识:程序运行时使用连续的存储空间程序运行时使用连续的存储空间内存可编址的最小单位是字节内存可编址的最小单位是字节一个机器字由若干个字节组成一个机器字由若干个字节组成一个名字所需存储空间的大小由其类型决定一个名字所需存储空间的大小由其类型决定需多个字节表示的数据对象,存放在连续字节的存储块中,需多个字节表示的

14、数据对象,存放在连续字节的存储块中,第一个字节的地址作为它的地址第一个字节的地址作为它的地址n局部数据的安排局部数据的安排局部数据区是在编译过程中检查声明语句时安排的局部数据区是在编译过程中检查声明语句时安排的长度可变的数据对象,放在该区域之外长度可变的数据对象,放在该区域之外n数据对象的存储安排受目标机器编址限制的影响数据对象的存储安排受目标机器编址限制的影响12Wensheng Li BUPT 2008编址限制的影响编址限制的影响n整数加法指令可能要求整数整数加法指令可能要求整数的地址能够被的地址能够被4 4整除整除n要求地址对齐要求地址对齐如:如:x:integer; y:char; z

15、:integer; n为求分配上的全局统一,而多余出来的无用空间为求分配上的全局统一,而多余出来的无用空间叫做填塞(叫做填塞(padding)如果如果char占一个字节,占一个字节,integer占占2个字节个字节, ,x、y、z共需要共需要5个字节。个字节。如果要求从双字节地址分配,如果要求从双字节地址分配,则需要为这三个变量分配则需要为这三个变量分配6个字节,个字节,13Wensheng Li BUPT 2008三、作用域及名字绑定三、作用域及名字绑定n声明是一个把信息与名字联系起来的语法结构声明是一个把信息与名字联系起来的语法结构显式声明(如显式声明(如PASCAL中的声明:中的声明:v

16、ar i:integer)隐含声明(如隐含声明(如FORTRAN程序)程序)n在一个程序的不同部分可能有对同一个名字的相互在一个程序的不同部分可能有对同一个名字的相互独立的声明独立的声明n一个声明起作用的程序部分称为该声明的作用域一个声明起作用的程序部分称为该声明的作用域n语言的作用域规则决定了当这样的名字在程序正文语言的作用域规则决定了当这样的名字在程序正文中出现时应该使用哪一个声明中出现时应该使用哪一个声明nPascal中的名字遵循中的名字遵循“最近嵌套原则最近嵌套原则”n编译过程中,名字的作用域信息记录在符号表中编译过程中,名字的作用域信息记录在符号表中14Wensheng Li BUPT 2008名字的绑定名字的绑定n把名字对应到存储单元的过程把名字对应到存储单元的过程n名字与存储单元的对应关系:名字与存储单元的对应关系:1:11:mn当当environment把一个存储单元把一个存储单元S与一个名字与一个名字X联系起来时,称联系起来时,称X受限于受限于S。nS的大小取决于的大小取决于X的类型的类型一个活动中的名字与其存储单元之间一个活动中的名字与其存储单元之间一个递归过程中的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 经济/贸易/财会 > 经济学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号