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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.5嵌套过程语言的栈式实现 2、嵌套层次显示表(display)和活动记录 A、嵌套层次显示表:每进入一个过程后,在建立它的活动区的同时建立该表 B、表的内容:假定现进行的过程的层数为i,则其display 含有i+1个单元。该表本身是一个小栈,自顶向 下每个单元依次存放现行层,直接外层……,直 到最外层(0层主程序层)等每一层过程的最新 活动记录的基地址。 举例:令过程R的外层为Q,Q的外层为P,则R运行时display表为 2 R的现行活动记录地址(SP的现行值) 1 Q的最新活动记录的地址 0 P的活动记里的地址 9.5嵌套过程语言的栈式实现 C、“非局部量”地址的确定: 绝对地址= display[静态层数]+相对地址 D、活动记录结构: TOP a 3 2 1 SP 0 临时单元 内情向量 简单变量 display 形参单元 参数个数 全局Display 返回地址 老SP(动态链) p1 调用 P2 的两种不同嵌套: P1 P2 P0 P2 P1 k-1 k k-1 k k p1 调用 P2 的两种不同嵌套: P1 P2 k-1 k … Display K项 … … … P1 P2 P1的display k项 p2的sp top sp top sp p1 调用 P2 的两种不同嵌套: P0 P2 P1 k-1 k k … Display K+1项 … … … P1 P2 P1的display 前k项 p2的sp top sp top sp 0 0 返回地址 1 0(display) 2 a 3 x 4 0 5 返回地址 6 2(全局display) 7 0(形参个数) 8 0 9 5 10 C 11 i 12 sp top top sp display F、静态链方法与显示表方法的比较: 通过向示表访问非局部量要比沿着静态链访问非局部量的速度快。 原因:——因为通过显示表的一个域,可以确定任意 外层活动记录的指针,再沿着这个指针便可 以找到处于外层活动记录的非局部量。 9.5嵌套过程语言的栈式实现 二、参数传递的实现 1、par T T——为数组 (1)或者传递数组T的首地址 (2)或者传递数组T的内情向量地址 2、Par T T——为过程 假设:过程P把过程T作为实在参数传递过程Q,随 后,Q又通过引用相应的形式参数调用T。 3、Par T ——为标号 ?在进入T之后,为了建立T自己的display ,T必须知道它直接外层的display。 又P的display或者正好就是这个外层的display, 或者包含了这个外层display 而由于T的层数是已知的 ?只要知道P的display,T就可以用它来建立自己的display,即假定T的层数为1,则T的display乃是由P的display的前1个单元的内容和SP的现行值所组成。 ?为了使得过程T工作时能够知道过程P的display,必须在P把T作为使 参传递给Q的时候把P自身的display地址也传过去 即:过程P中的par T 的作用可刻画为建立如下所示的两个相继临时单元: 第一个临时单元B1:过程T的入口地址 第二个临时单元B2:过程T的display地址。; 然后执行(i+1)[TOP]:=addr(B1)?把第一临时单元B1的地址传给Q 假定过程Q现在执行到调用语句call Z,m Z——形式参数,形式单元Z中已含有上述B1的地址 ?故B1的内容将用来作为转子指令的目的地址 (即转进过程T) B2的内容将作为“全局display地址” (第三项连接数据)传送给T 9.6堆式动态存储分配 1、堆式动态存储分配使用的情况 (1)允许用户自由地申请数据空间和退还空间 (2)不仅有过程而且有进程的程序结构 即空间的使用未必服从“先请后还,后请先还”的原则 例如:pascal语言中的标准过程new-dispose 2、该种分配方法必须考虑的几个主要问题 (1)当运行程序要求一块体积为N的空间时,我的应该分 配那一块给它? (2)如果运行程序要求一块体积为N的空间,但所有空闲 块的总和也不够N,那该怎么办? 9.6堆式动态存储分配 一、堆式动态存储分配的实现 1、定长块管理 (1)实现方法: (2)优点: 2、变长块管理 (1)实现方法 (2)实现的分配策略 首次满足法 最优满足法 最差满足法 (3)3种分配策略的比较 适用情况 时间比较 占用 占用 占用 空闲 空闲 空闲 占用 空闲 占用 空闲 空闲 空闲 available availabl

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档