第5章运行时存储空间的组织和管理 术语 过程的活动 过程的一次执行称为过程的一次活动 活动记录 过程的活动需要可执行代码和存放所需信息的存 储空间,所需的局部信息的存储空间称为活动记录 本章内容 讨论一个活动记录中的数据布局 程序执行过程中,所有活动记录的组织方式
第5章 运行时存储空间的组织和管理 术语 –过程的活动 过程的一次执行称为过程的一次活动 – 活动记录 过程的活动需要可执行代码和存放所需信息的存 储空间,所需的局部信息的存储空间称为活动记录 本章内容 • 讨论 个活动记录中的数据布局 讨论一个活动记录中的数据布局 • 程序执行过程中,所有活动记录的组织方式
第5章运行时存储空间的组织和管理 影响存储分配策略的主要语言特征 过程能否递归 当控制从过程的活动返回时,局部变量的值是否 要保留 过程能否访问非局部变量 一过程调用的参数传递方式 -过程能否作为参数被传递 一过程能否作为结果值传递 一存储块能否在程序控制下动态地分配 存储块是否必须显式地回收
第5章 运行时存储空间的组织和管理 • 影响存储分配策略的主要语言特征 – 过程能否递归 – 当控制从过程的活动返回时,局部变量的值是否 要保留 – 过程能否访问非局部变量 – 过程调用的参数传递方式 – 过程能否作为参数被传递 – 过程能否作为结果值传递 – 存储块能否在程序控制下动态地分配 –存储块是否必须显式地回收
5.1局部存储分配 5.1.1过程 语言概念: 过程定义、过程调用、形式参数、实在参 数、活动的生存期
5 1. 局部存储分配 5.1.1 过程 语言概念: 过程定义、过程调用、形式参数、实在参 数、活动的生存期
5.1局部存储分配 5.1.2名字的作用域和绑定 1、名字的作用域 ·一个声明起作用的程序部分称为该声明的作 用域 即使一个名字在程序中只声明一次,该名字 在程序运行时也可能表示不同的数据对象
5 1. 局部存储分配 5.1.2 名字的作用域和绑定 1、名字的作用域 • 一个声明起作用的程序部分称为该声明的作 用域 • 即使一个名字在程序中只声明一次,该名字 在程序运行时也可能表示不同的数据对象
5.1局部存储分配 2、环境和状态 环境把名字映射到左值(存储单元),而状态 把左值映射到右值(即名字到值有两步映射) 赋值改变状态,但不改变环境 过程调用改变环境 如果环境将名字x映射到存储单元s,则说x被 绑定到s 环境 状态 名字 存储单元 值
5 1. 局部存储分配 2、环境和状态 • 环境把名字映射到左值 环境把名字映射到左值(存储单元),而状态 把左值映射到右值(即名字到值有两步映射) • 赋值改变状态,但不改变环境 • 过程调用改变 境 过程调用改变环境 • 如果环境将名字 如果环境将名字x映射到存储单元 映射到存储单元s,则说 x 被 绑定到s 环境 状态 名字 存储单元 值
5.1局部存储分配 3、静态概念和动态概念的对应 静态概念 动态对应 过程的定义 过程的活动
5 1. 局部存储分配 3、静态概念和动态概念的对应 静 态 概 念 动 态 对 应 过程的定义 过程的活动
5.1局部存储分配 3、静态概念和动态概念的对应 静态概念 动态对应 过程的定义 过程的活动 名字的声明 名字的绑定
5 1. 局部存储分配 3、静态概念和动态概念的对应 静 态 概 念 动 态 对 应 过程的定义 过程的活动 名字的声明 名字的绑定
5.1局部存储分配 3、静态概念和动态概念的对应 静态概念 动态对应 过程的定义 过程的活动 名字的声明 名字的绑定 声明的作用域 绑定的生存期
5 1. 局部存储分配 3、静态概念和动态概念的对应 静 态 概 念 动 态 对 应 过程的定义 过程的活动 名字的声明 名字的绑定 声明的作用域 绑定的生存期
5.1局部存储分配 5.1.3活动记录 活动记录的常见布局 返回值 数 参 控制链 访问链 保存的机器获态 高部数 临时数据
5 1. 局部存储分配 5.1.3 活动记录 活动记录的常见布局 返 回 值 参 数 控制链 访 问 链 保存的机器状态 局部数据 临时数据
5.1局部存储分配 5.1.4局部数据的布局 字节是可编址内存的最小单位 变量所需的存储空间可以根据其类型而静态 确定 一个过程所声明的局部变量按它们声明时出 现的次序,在活动记录的局部数据域中依次 分配空间 局部数据的地址可以用相对于活动记录的某 个位置的地址来表示 数据的存储布局还有一个对齐问题
5 1. 局部存储分配 5.1.4 局部数据的布局 • 字节是可编址内存的最小单位 • 变量所需的存储空间可以根据其类型而静态 确定 • 一个过程所声明的局部变量按它们声明时出 现的次序,在活动记录的局部数据域中依次 分配空间 • 局部数据的地址可以用相对于活动记录的某 个位置的地址来表示 • 数据的存储布局还有一个对齐问题