运行时存储空间组织.ppt

运行时存储空间组织.ppt

ID:49968714

大小:875.50 KB

页数:35页

时间:2020-03-05

运行时存储空间组织.ppt_第1页
运行时存储空间组织.ppt_第2页
运行时存储空间组织.ppt_第3页
运行时存储空间组织.ppt_第4页
运行时存储空间组织.ppt_第5页
资源描述:

《运行时存储空间组织.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1第九章运行时的存储空间组织关于源程序的一些问题我们编写的源程序实际上是静态的程序文本;它们的目的是要在计算机上正确的运行;在运行过程中,这些静态程序文本必须与程序运行时的活动状态联系在一起,才能实现程序的目的;程序运行时,源程序文本中的标识符对应运行时的不同数据对象;数据对象的空间分配和释放需要管理策略,这些策略由运行的支撑程序包运行管理。这就是编译程序要完成的运行环境和存贮管理。关于源程序的一些问题源程序可以由不同的过程组成;在执行过程中,过程的每次执行称为过程的一个活动。如果这个过程设计为递

2、归调用过程,那么,则会在某一个时刻可能有它的几个活动都活跃着;过程的每一次调用,都会引起一个活动,这个活动就会调用编译软件的存贮管理的软件包给活动的数据对象分配相应的数据空间;关于源程序的一些问题过程过程定义是一个声明,它的最简单形式是把一个标识符和一个语句联系起来;标识符是过程名;语句是过程体;过程调用表现为过程名出现在执行语句中;如果过程调用出现在表达式中,则这个过程就是函数,这个调用就是函数调用;函数是特殊的过程,它是具有一个返回值的过程;其实一个完整的程序就是一个过程;过程参数形式参数:过

3、程定义中表明的标识符;实在参数:过程调用中表明的标识符;在过程调用中,实在参数要取代形式参数;这需要编译程序的运行环境存贮空间管理;关于源程序的一些问题活动树每次过程的调用都会产生一个活动;过程的调用可能会嵌套或者递归,这时可能会有多个活动同时活跃,活动树产生了!控制流程序执行时过程的调用是按照一定的步骤和顺序实施的,这就是所谓的控制流;控制流是连续的。程序的执行由一些连续的步骤组成的,在任何一步,控制都处于程序中的某点;过程的每次执行都从过程体的起点开始,最后控制返回到直接跟随本次调用点的位置;

4、过程间控制流的特点为活动树产生和应用提供了条件;关于源程序的一些问题活动的生存期:是过程执行的第一步和最后一步之间的步序列,包括消耗在执行被这个过程所调用的其他过程所用的时间,以及再由那些被调用过程又调用别的过程所用的时间,以此类推。不同过程的活动生存期可能重叠,这时就出现了所谓的递归和嵌套等。关于源程序的一些问题递归如果一个过程的前一个活动结束前,它的一个新的活动又开始,则这样的过程是递归的;递归过程不必直接调用自己,过程p可以调用另一个过程q,然后q通过一系列过程调用之后再调用了p,这也是递归

5、调用;活动树描述控制进入和离开活动的方式可以用一棵树的方式,这就是活动树;活动树的每一个结点代表了过程的一个活动;根结点代表主程序的活动;结点a是结点b的父结点,当且仅当控制流从a的活动进入b;a结点处于b结点的左边,当且仅当a的生存期先于b的生存期;结点和活动是一一对应的,所以控制结点就是控制活动。读入整数并排序的Pascal程序Programsort(input,output);vara:array[0..10]ofinteger;Procedurereadarray;Vari:integer

6、;BeginFori:=1to9doread(a[i])End;Functionpartition(y,z:integer):integer;vari,j,x,v:integer;Begin……End;见书P240Procedurequicksort(m,n:integer);Vari:integer;BeginIf(n>m)thenbegini:=partition(m,n);Quicksort(m,i-1);Quicksort(i+1,n);end;End;Begina[0]:=-9999;a

7、[10]:=9999;readarray;quicksort(1,9)End.关于源程序的一些问题srq(1,9)q(5,9)p(1,9)q(1,3)q(2,3)P(1,3)q(1,0)q(3,3)P(2,3)q(2,1)q(7,9)p(5,9)q(5,5)q(9,9)q(7,7)p(7,9)活动树1010.0概述在代码生成前,编译程序必须进行目标程序运行环境的设计和数据空间的分配。编译程序需要一定的存贮空间以使目标程序在其上运行,该存贮空间需容纳生成的目标代码和目标代码运行时的数据空间。数据空间

8、包括:用户定义的各种类型的数据对象(变量和常量)所需的存贮空间;作为保留中间结果和传递参数的临时工作单元;调用过程时所需的连接单元;组织输入/输出所需的缓冲区。编译过程中,有些数据对象所占用的空间可以确定,有些数据对象具有可变体积和待编译性质,无法在编译时确定存贮空间的位置。作为运行时存贮分配的一个原则是尽可能对数据对象进行静态分配。1210.0概述存贮空间常常划分为:目标代码区、静态数据区、栈区、堆区。目标代码区用以存放目标代码,是固定长度,编译时能够确定。静态数据区用以存放编译

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。