6.2全局栈式存储分配 ·例C程序的外部变量、静态局部变量以及程 序中出现的常量都可以静态分配 声明在函数外面 i 外部变量 静态分配 -静态外部变量 静态分配 声明在函数里面 -静态局部变量 也是静态分配 自动变量 -一不能静态分配
6.2 全局栈式存储分配 • 例 C程序的外部变量、静态局部变量以及程 序中出现的常量都可以静态分配 • 声明在函数外面 –外部变量 -- 静态分配 –静态外部变量 -- 静态分配 • 声明在函数里面 –静态局部变量 -- 也是静态分配 –自动变量 -- 不能静态分配
6.2全局栈式存储分配 6.2.2活动树和运行栈 1、活动树 ~用树来描绘控制进入和离开活动的方式 m q(1,9 p(1,9 q(1,3) 9(5,9 p(1,3) q(1,0)q2,3) p(5,9)q(5,5) q7,9 p(2,3)q(2,1) q3,3) p(7,9)q(7,7 q(9,9)
6.2 全局栈式存储分配 6.2.2 活动树和运行栈 1、活动树 –用树来描绘控制进入和离开活动的方式 m r q(1,9) p(1,9) q(1,3) p(1,3) q(1,0) q(2,3) p(2,3) q(2,1) q(3,3) q(5,9) p(5,9) q(5,5) q(7,9) p(7,9) q(7,7) q(9,9)
6.2全局栈式存储分配 活动树的特点 每个结点代表某过程的一个活动 根结点代表主程序的活动 结点a是结点b的父结点,当且仅当控制流从a的 活动进入b的活动 结点a处于结点b的左边,当且仅当a的生存期先 于b的生存期 9(1,9) p(1,9) q(1,3) q(5,9)
6.2 全局栈式存储分配 • 活动树的特点 –每个结点代表某过程的一个活动 –根结点代表主程序的活动 –结点a是结点b的父结点,当且仅当控制流从a的 活动进入b的活动 –结点a处于结点b的左边,当且仅当a的生存期先 于b的生存期 m r q(1,9) p(1,9) q(1,3) . . . . q(5,9) . . .
6.2全局栈式存储分配 当前活跃着的过程活动可以保存在一个栈中 - 例控制栈的内容:m,q(1,9),q(1,3),q(2,3) q(1,9 p(1,9) q(1,3) q(5,9 p(1,3)q(1,0)q2,3) p(5,9)q(5,5)q7,9 p(2,3)q(2,1) q3,3) p(7,9)q(7,7) q(9,9
6.2 全局栈式存储分配 • 当前活跃着的过程活动可以保存在一个栈中 – 例 控制栈的内容:m, q (1, 9), q (1, 3), q (2, 3) m r q(1,9) p(1,9) q(1,3) p(1,3) q(1,0) q(2,3) p(2,3) q(2,1) q(3,3) q(5,9) p(5,9) q(5,5) q(7,9) p(7,9) q(7,7) q(9,9)
6.2全局栈式存储分配 2、运行栈:把控制栈中的信息拓广到包括过程 活动所需的所有局部信息(即活动记录》
6.2 全局栈式存储分配 2、运行栈:把控制栈中的信息拓广到包括过程 活动所需的所有局部信息(即活动记录)