第6章 运行时存储空间组织.ppt

上传人:99****p 文档编号:1440960 上传时间:2019-02-27 格式:PPT 页数:75 大小:629.50KB
下载 相关 举报
第6章  运行时存储空间组织.ppt_第1页
第1页 / 共75页
第6章  运行时存储空间组织.ppt_第2页
第2页 / 共75页
第6章  运行时存储空间组织.ppt_第3页
第3页 / 共75页
第6章  运行时存储空间组织.ppt_第4页
第4页 / 共75页
第6章  运行时存储空间组织.ppt_第5页
第5页 / 共75页
点击查看更多>>
资源描述

1、第 6章 运行时存储空间组织 第 6章 运行时存储空间组织 6.1 静态存储分配 6.2 简单的栈式存储分配 *6.3 嵌套过程语言的栈式实现 6.4 堆式动态存储分配 *6.5 参数传递补遗 第 6章 运行时存储空间组织 序 在考虑代码生成以前,我们需要把静态的源程序正文和实现该程序的运行时必须发生的活动联系起来。程序执行时, 源程序正文中的名字可以表示目标机器中不同的数据对象 。本章 考察名字和数据对象之间的关系 。存储空间分配 把 源程序中的名字(常量, 变 量) 映射到 目 标机存 储 空 间 。 怎样把 源程序中的名字 分配到 目 标 机存 储 空 间是编译程序需解决的一个复杂而重要

2、的问题。利用本章的讨论的技术,可以 实现分配和释放数据对象的 运行时支撑程序包 (一组子程序 ) ,这些子程序和目标代码一起装配。第 6章 运行时存储空间组织 补充:目标程序运行时的活动1 过程的活动我们可把过程式语言的源程序看作是由一组过程按某种规则组成。本节讨论一个过程的 静态源程序 和它的 目标程序 在运行时的活动之间的关系。一些相关概念:过程 :一个说明,把标识符和一段语句联系起来。过程名 :标识符 ; 过程体 :一段语句 ; 过程调用 :执行过程体形参 :过程定义中出现的具有特殊意义的标识符。 实参 :过程调用中传递给被调用过程替代过程体中的形参的表达式。活动 : 过程的一次执行称作

3、一次 活动。活动的生存期 ,指的是从执行活动的构成体第一步操作到最后一步操作之间的操作序列。名字的作用域 :名字在程序里起作用的范围。第 6章 运行时存储空间组织 program sort( input, output); var a : array 0.10 of integer; procedure readarray; var i : integer; begin end; function partition ( y , z : integer ) :integer; var i, j , x, v: integer; begin end; procedure quicksort( m

4、, n : integer); var i : integer; begin end; begin end.递归过程活动 :快速排序算法第 6章 运行时存储空间组织 执行开始enter readarray leave readarray enter quicksort( 1, 9) enter partition( 1, 9) leave partition( l, 9) enter quicksort( 1, 3) . leave quicksort( 1, 3) enter quicksort( 5, 9) . leave quicksort( 5, 9) leave quicksort(

5、 1, 9) 执行结束递归过程的活动特点 :过程没有退出当前活动前,又开始其新的活动。在每个过程体的开始和结束处分别插入两条打印语句:enter,和 leave跟踪过程的活动,结果:第 6章 运行时存储空间组织 sr q(1,9)p(1,9) q(1,3)p(1,3) q(1,0) q(2,3)p(2,3) q(2,0) q(3,3)q(5,9)p(5,9) q(5,5) q(7,9)p(7,9) q(7,7)活 动树 描绘 :一个 结 点代表 过程 的一个活 动 , 且每一个活 动只有一个 结 点表示,当控制 进 入某一个活 动时 ,可以直接说 ,控制在 这 个 结 点上。 (qquicks

6、ort)在某一时刻 (当控制在 q(2,1)时 ), 递归 过程 q的几个活动同时活跃。因此必须保存每个活动的执行信息 (局部变量值,返回地址等)。这时 同一过程 q的局部名称在每个活动中被映射到不同的存储单元中 ,不能为过程q的局部变量分配固定地址的存储单元。第 6章 运行时存储空间组织 活动记录把过程的一个活动所需要的信息组织成一块连续的存储单元,称为 活动记录 。一个活动所需要的信息的每个数据项有相同的生存期,因此,组织成一个活动记录是很自然的。活动记录的一般内容:临时 单元局部 变量机器状 态实 参静态 链动态 链返回 值动态 链 :指向 调 用 过 程活 动 的活动记录 。静态 链

7、:指向本活 动 要 访问 的非局部数据所在的活 动记录。保存机器状 态 : 调 用 过 程活 动 在 调 用点的机器状 态 ,包括计 数器,各种寄存器的 值 。局部 变量 : 过 程中定 义 的局部量。临时变 量 : 编译产 生。第 6章 运行时存储空间组织 运行时刻存储器的划分程序运行,首先从操作系统获得一块存储空间然后,划分运行时刻的存储空间以用来存放 :1. 生成的目标代码 ; 2. 数据对象 ; 3. 用于保存过程活动踪迹的一个控制栈。运行时存储器的划分第 6章 运行时存储空间组织 一般情况下,运行时存储空间划分:1.目 标 代 码2.静 态 数据3.栈4.堆1.目 标 代 码 :编译

8、 后知道目 标 代 码 的大小。2. 静 态 数据 :pascal主程序中的数据 , c全局数据 , FORTRAN数据3. 栈 :Pascal,c活 动记录4. 堆 : Pascal,c第 6章 运行时存储空间组织 6.1 静态存储分配 静态存储空间分配:在编译时就确定一个程序在运行时所需的存储空间大小,安排好目标程序运行时的全部数据空间,并确定每个数据项的单元地址,这种存储空间分配方法叫做静态分配。 使用静态存储空间分配的高级语言 FORTRAN特点 : 不允许过程有递归性 每个变量的存储空间大小都是常量 (即不允许含可变体积的数据,如可变数组 ) 所有数据名的性质是完全确定的 (没指针类型,不允许动态分配内存 )。确保整个程序所需数据空间的总量在编译时是完全确定的,从而每个数据名的地址就可静态地进行分配。

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

当前位置:首页 > 教育教学资料库 > 课件讲义

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。