9运行时存储空间组织.pptx
《9运行时存储空间组织.pptx》由会员分享,可在线阅读,更多相关《9运行时存储空间组织.pptx(35页珍藏版)》请在咨信网上搜索。
1、1第九章 运行时的存储空间组织关于源程序的一些问题v我们编写的源程序实际上是静态的程序文本;v它们的目的是要在计算机上正确的运行;v在运行过程中,这些静态程序文本必须与程序运行时的活动状态联系在一起,才能实现程序的目的;v程序运行时,源程序文本中的标识符对应运行时的不同数据对象;v数据对象的空间分配和释放需要管理策略,这些策略由运行的支撑程序包运行管理。v这就是编译程序要完成的运行环境和存贮管理。关于源程序的一些问题v源程序可以由不同的过程组成;v在执行过程中,过程过程的每次执行称为过程的一个活动活动。v如果这个过程设计为递归调用过程,那么,则会在某一个时刻可能有它的几个活动都活跃着;v过程的
2、每一次调用,都会引起一个活动,这个活动就会调用编译软件的存贮管理的软件包给活动的数据对象分配相应的数据空间;关于源程序的一些问题v过程过程过程定义过程定义是一个声明,它的最简单形式是把一个标识符和一个语句联系起来;标识符是过程名;语句是过程体;过程调用过程调用表现为过程名出现在执行语句中;如果过程调用出现在表达式表达式中,则这个过程就是函数,这个调用就是函数调用函数调用;v函数函数是特殊的过程,它是具有一个返回值的过程;v其实一个完整的程序程序就是一个过程;v过程参数形式参数形式参数:过程定义中表明的标识符;实在参数实在参数:过程调用中表明的标识符;在过程调用中,实在参数要取代形式参数;v这需
3、要编译程序的运行环境存贮空间管理;这需要编译程序的运行环境存贮空间管理;关于源程序的一些问题v活动树活动树每次过程的调用都会产生一个活动;过程的调用可能会嵌套或者递归,这时可能会有多个活动同时活跃,活动树产生了!v控制流控制流程序执行时过程的调用是按照一定的步骤和顺序实施的,这就是所谓的控制流;控制流是连续的。程序的执行由一些连续的步骤组成的,在任何一步,控制都处于程序中的某点;过程的每次执行都从过程体的起点开始,最后控制返回到直接跟随本次调用点的位置;v过程间控制流的特点为活动树产生和应用提供了条件;关于源程序的一些问题v活动的生存期:活动的生存期:是过程执行的第一步和最后一步之间的步序列,
4、包括消耗在执行被这个过程所调用的其他过程所用的时间,以及再由那些被调用过程又调用别的过程所用的时间,以此类推。v不同过程的活动生存期可能重叠,这时就出现了所谓的递归和嵌套等。关于源程序的一些问题v递归递归如果一个过程的前一个活动结束前,它的一个新的活动又开始,则这样的过程是递归的;递归过程不必直接调用自己,过程p可以调用另一个过程q,然后q通过一系列过程调用之后再调用了p,这也是递归调用;v活动树活动树描述控制进入和离开活动的方式可以用一棵树的方式,这就是活动树;活动树的每一个结点代表了过程的一个活动;根结点代表主程序的活动;结点a是结点b的父结点,当且仅当控制流从a的活动进入b;a结点处于b
5、结点的左边,当且仅当a的生存期先于b的生存期;结点和活动是一一对应的,所以控制结点就是控制活动。读入整数并排序的Pascal程序vProgram sort(input,output);Program sort(input,output);var a:array0.10 of var a:array0.10 of integer;integer;Procedure readarray;Procedure readarray;vVar i:integer;Var i:integer;vBeginBeginFor i:=1 to 9 do For i:=1 to 9 do read(ai)read(
6、ai)vEnd;End;Function Function partition(y,z:integer):intpartition(y,z:integer):integer;eger;vvar i,j,x,v:integer;var i,j,x,v:integer;vBeginBeginvEnd;End;见书P240Procedure quicksort(m,n:integer);Var i:integer;Begin If(nm)then begin i:=partition(m,n);Quicksort(m,i-1);Quicksort(i+1,n);end;End;Begin a0:=-
7、9999;a10:=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概述v在代码生成前,编译程序必须进行目标程序运行环境的设计和数据空间的分配。v编译程序需要一定的存贮空间以使目标程序在其上运行,该存贮空间需容纳生成的目标代码和目标代码运行时的数据空间。v数据空间包括数据空间包括:用户定义的各种类型的数据对象(变量和常量)所需的存贮空间;作
8、为保留中间结果和传递参数的临时工作单元;调用过程时所需的连接单元;组织输入/输出所需的缓冲区。v编译过程中,有些数据对象所占用的空间可可以确定以确定,有些数据对象具有可变体积和待编译性质,无法在编译时确定无法在编译时确定存贮空间的位置。v作为运行时存贮分配的一个原则是尽可能对数据对象进行静态分配。1210.0概述存贮空间常常划分为:目标代码区、静态数据区、栈区、堆区。目标代码区用以存放目标代码,是固定长度,编译时能够确定。静态数据区用以存放编译时能确定所占用空间的数据。堆栈区用于可变数据以及管理过程活动的控制信息。存贮组织要解决的问题是把静态的源程序与该程序的目标程序运行时的动态活动联系起来,
9、即要搞清楚运行中的程序信息是如何进行存贮和访问的。codeStatic datastack(可变区域)heap所谓数据空间分分配配,本质上看,是将程序中的每个名字与一个存贮位置关联起来,该存贮位置用以容纳名字的值。源语言的结构特点、源语言的数据类型、源语言中决定名字作用域的规则等因素影响存贮空间的管理和组织的复杂程度,决定数据空间分配的基本策略。名字(标识符)存贮位置值环境状态1410.1 10.1 数据空间的三种不同使用方法和管理方法数据空间的三种不同使用方法和管理方法数据空间的使用和管理方法从大类分为两种:静态和动态静态和动态。而动态又分为:栈式和堆式两栈式和堆式两种种。静态存贮分配策略静
10、态存贮分配策略:如果在编译时能确定目标程序运行中所需的全部数据空间的大小,编译时安排好目标程序运行时的全部数据空间,确定每个数据对象的存贮位置。动态存贮分配策略动态存贮分配策略:目标程序在运行时所需要的数据空间,在编译时无法知道,它所需要的数据空间的大小要待程序运行是动态地确定。有两种存贮分配方式:栈式栈式和堆式堆式。栈式存贮栈式存贮:1、将整个程序的数据空间设计为一个栈;2、每当调用一个过程时,它所需的数据空间就分配在栈顶,每当过程工作结束时就释放这部分空间;3、过程所需数据空间包括两部分:一部分是本次调用中的数据对象;另一部分是用以管理过程活动的记录信息;4、当控制从调用返回时,便根据栈中
11、记录的信息恢复机器状态,使该过程的活动继续进行。堆式存贮堆式存贮:1、自由地申请数据空间和退还数据空间;2、数据空间的利用不服从“先申请后释放,后申请先释放”的原则;3、这种存贮方式空间的利用率可能受到限制。容易产生碎片。1610.2 10.2 栈式存贮分配的实现栈式存贮分配的实现栈式存贮分配的基本策略是调用一个过程时在栈顶分配所需数据空间,返回时,在栈顶释放数据空间。过程的活动记录过程的活动记录是一段连续的存贮区,用以存放过程的一次执行所需要的信息。信息包括:1.1.临时工作单元临时工作单元:计算表达式过程中需要存放中间结果用的临时值单元;2.2.局部变量局部变量:一个过程的局部变量;3.3
12、.保存机器状态保存机器状态:容纳该过程执行前关于机器状态的信息,如程序计数器、寄存器的值等;4.4.存取链存取链:用以存取非局部变量,这些变量存放于其他过程活动记录中。(所谓链,实际上是链接,包所谓链,实际上是链接,包含指针含指针);5.5.控制链控制链:指向调用该过程的那个过程的活动记录;6.6.实参实参:形式单元。由调用过程向该被调用过程提供实参的值;7.7.返回地址返回地址:保存该被调用过程返回后的地址。临时工作单元局部变量机器状态信息存取链控制链实参返回地址1710.2.1 简单的栈式存贮分配的实现简单的特征是:没有分程序结构,过程定义不嵌套,允许过程递归调用。存贮空间的分配策略存贮空
13、间的分配策略:运行时,每当进入一个过程时,则为该过程分配一段存贮空间,当一个过程工作完毕后返回时,它所占用的存贮区则释放。程序在运行时,存贮空间(栈)中在某一个时刻可能会包含不同过程的几个活动记录;可能会包含某个过程的几个活动记录(递归调用)。同一个存贮位置,不同的运行时刻分配给不同的数据对象。在栈的最顶端数据区有两个指针:SP总是指向现行过程活动记录的起点;TOP总是指向占用的栈顶单元。Program main;全局变量或数组的说明;proc R;end(R);proc Qend(Q)主程序执行语句end.(main)1810.2.1 简单的栈式存贮分配的实现R的活动记录Q的活动记录主程序全
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运行 存储空间 组织
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。