LIWensheng,SCST,BUPT第7章运行环境知识点:活动记录、控制栈栈式存储分配非局部名字的访问参数传递方式WenshengLiBUPT@20082/71运行环境程序运行时刻的环境,即运行中程序的信息是怎样存储和访问的。执行过程中,程序中数据的存取是通过对应的存储单元来进行的。存储组织与管理–早期的计算机上,存储管理工作是由程序员自己来完成–有了高级语言之后,程序中使用的存储单元都由标识符来表示,它们对应的内存地址由编译程序在编译时或由其生成的目标程序在运行时进行分配。存储的组织及管理是编译程序要完成的一个复杂而又十分重要的工作。WenshengLiBUPT@20083/71运行环境7.1程序运行时的存储组织7.2存储分配策略7.3访问非局部名字7.4参数传递机制小结WenshengLiBUPT@20084/717.1程序运行时的存储组织概念:过程与活动一、程序运行空间的划分二、控制栈与活动记录三、作用域及名字绑定WenshengLiBUPT@20085/71概念:过程与活动过程的定义–一个声明语句–把一个标识符和一个语句联系起来–标识符是过程名,语句是过程体。过程的分类–过程:没有返回值的过程–函数:有返回值的过程–也可以把函数、一个完整的程序看作过程过程引用:过程名出现在一个可执行语句中参数:–形参、实参WenshengLiBUPT@20086/71活动活动–一个过程的每次执行称为它的一次活动–如果一个过程在执行中,则称它的这次活动是活着的过程与活动–过程是一个静态概念,活动是一个动态概念–过程与活动之间可以是1:1、1:m的关系–递归过程,同一时刻可能有若干个活动是活着的–每个活动都有自己独立的存储空间/数据空间PPPP有3个活着的活动P有2个活着的活动P有1个活着的活动WenshengLiBUPT@20087/71活动的生存期程序执行时,过程之间的控制流–是连续的–过程的每一次执行都是从过程体的起点开始,最后控制返回到直接跟随本次调用点的位置。活动的生存期–过程体的执行中,第一步和最后一步之间的一系列步骤的执行时间–过程P的一次活动的生存期,包括执行过程P所调用的过程的时间,以及这些过程所调用的过程的时间–如果a和b是过程的活动,那么它们的生存期要么是不重叠,要么是嵌套的。递归过程:–如果一个过程,它的不同活动的生存期可以嵌套,则这个过程是递归的–直接递归、间接递归abababWenshengLiBUPT@20088/71一、程序运行空间的划分编译程序在编译源程序时,向操作系统申请一块内存区域,以便被编译程序在其中运行代码区/保存目标代码...