1、1北京林业大学信息学院 *第 7章 运行时的存储组织与分配1. 要求明确静态存储分配和动态存储分配的含义2. 明确 活动记录的含义及组成3. 掌握 C/C+和 JAVA的存储分配策略4. 掌握 PL/0的存储分配策略教学目标2北京林业大学信息学院 *S.PO.P语义分析、生成中间代码生成目标程序代码优化语法分析程序词法分析程序错误处理符号表管理编译程序在编译阶段要为源程序中出现的变量、常量等组织好在 运行阶段的存储空间将这种组织形式通过生成的 目标代码 体现出来为运行阶段实现存储 奠定基础3北京林业大学信息学院 * 7.1 存储组织概述 7.2 静态存储分配 7.3 栈式动态存储分配 7.4
2、堆式动态存储分配 7.5 PL/0编译程序目标代码解释执行时的存储分配 教学内容4北京林业大学信息学院 *7.1 存储组织概述运行时存储空间的划分代码空间数据空间目标代码空间静态数据空间栈自由空间堆5北京林业大学信息学院 *过程的活动和活动记录 一个过程的 活动: 该过程的一次执行。即每次执行一个过程体,就产生该过程的一个活动。 活动记录 :为了管理过程在一次执行中所需要的信息,使用一段连续的存储区 6北京林业大学信息学院 *活动记录的结构 7北京林业大学信息学院 *7.2 静态存储分配 在 编译阶段 由 编译程序 实现对存储空间的管理,为源程序中的变量分配存储单元。 (如看电影)条件在 编译
3、时能够确定 变量在运行时的数据空间大小运行时不改变8北京林业大学信息学院 *FORTRAN程序的静态分配 9北京林业大学信息学院 *动态存储分配在目标程序 运行阶段 由 目标程序 实现对存储空间的组织与管理,为源程序中的变量分配存储单元特点 在目标程序 运行时进行分配 编译时为运行阶段 设计好存储组织形式 ,即为每个数据项安排好它在数据区中的 相对位置C语言引用 sizeof进行计算时,是在编译阶段完成的,还是在运行阶段完成的?(如开大会)10北京林业大学信息学院 *7.3 栈式动态存储分配 变量生存期具有嵌套特性,即 后进先出 的特性(如递归)进入时: 在栈顶为其分配一个数据区退出时 :撤消过程数据区