运行时存储空间的组织和管理.ppt
《运行时存储空间的组织和管理.ppt》由会员分享,可在线阅读,更多相关《运行时存储空间的组织和管理.ppt(150页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章第六章 运行时存储空间的组织和管理运行时存储空间的组织和管理 术语术语过程的过程的活动活动过程的一次执行称为过程的一次活动过程的一次执行称为过程的一次活动活动记录活动记录过程的活动需要可执行代码和存放所需信息的存过程的活动需要可执行代码和存放所需信息的存储空间储空间,后者称为活动记录后者称为活动记录本章内容本章内容讨论一个活动记录中的数据布局讨论一个活动记录中的数据布局程序执行过程中,所有活动记录的组织方式程序执行过程中,所有活动记录的组织方式第六章第六章 运行时存储空间的组织和管理运行时存储空间的组织和管理 影响存储分配策略的语言特征影响存储分配策略的语言特征过程能否递归过程能否递归当
2、当控控制制从从过过程程的的活活动动返返回回时时,局局部部变变量量的的值值是是否否要保留要保留过程能否访问非局部变量过程能否访问非局部变量过程调用的参数传递方式过程调用的参数传递方式过程能否作为参数被传递过程能否作为参数被传递过程能否作为结果值传递过程能否作为结果值传递存储块能否在程序控制下动态地分配存储块能否在程序控制下动态地分配存储块是否必须显式地释放存储块是否必须显式地释放6.1 局部存储分配局部存储分配6.1.1过程过程语言概念:语言概念:过程定义、过程定义、过程过程调用、形式参数、实在参调用、形式参数、实在参数、数、活动的活动的生存期生存期6.1 局部存储分配局部存储分配6.1.2名字
3、的作用域和绑定名字的作用域和绑定1、名字的作用域、名字的作用域一个声明起作用的程序部分称为该声明的一个声明起作用的程序部分称为该声明的作作用域用域即使一个名字在程序中只声明一次,该名字即使一个名字在程序中只声明一次,该名字在程序运行时也可能表示不同的数据对象在程序运行时也可能表示不同的数据对象6.1 局部存储分配局部存储分配2、环境和状态、环境和状态环境把名字映射到左值,而状态把左值映射环境把名字映射到左值,而状态把左值映射到右值(即到右值(即名字到值有两步映射名字到值有两步映射)赋值改变状态,但不改变环境赋值改变状态,但不改变环境过程调用改变环境过程调用改变环境如果环境将名字如果环境将名字x
4、映射到存储单元映射到存储单元s,则说则说x被被绑定绑定到到s名字名字存储单元存储单元状态状态值值环境环境6.1 局部存储分配局部存储分配3、静态概念和动态概念的对应、静态概念和动态概念的对应 静静态态概概念念 动动态态对对应应 过程的定义过程的定义 过程的活动过程的活动 6.1 局部存储分配局部存储分配3、静态概念和动态概念的对应、静态概念和动态概念的对应 静静态态概概念念 动动态态对对应应 过程的定义过程的定义 过程的活动过程的活动 名字的声明名字的声明名字的绑定名字的绑定6.1 局部存储分配局部存储分配3、静态概念和动态概念的对应、静态概念和动态概念的对应 静静态态概概念念 动动态态对对应
5、应 过程的定义过程的定义 过程的活动过程的活动 名字的声明名字的声明名字的绑定名字的绑定声明的作用域声明的作用域 绑定的生存期绑定的生存期6.1 局部存储分配局部存储分配6.1.3活动记录活动记录活动记录的常见布局活动记录的常见布局临临时时数数据据参参数数局局部部数数据据机机器器状状态态访访问问链链控控制制链链返返回回值值6.1 局部存储分配局部存储分配6.1.4局部数据的布局局部数据的布局字节是可编址内存的最小单位字节是可编址内存的最小单位变变量量所所需需的的存存储储空空间间可可以以根根据据其其类类型型而而静静态态确定确定一一个个过过程程所所声声明明的的局局部部变变量量,按按这这些些变变量量
6、声声明明时时出出现现的的次次序序,在在局局部部数数据据域域中中依依次次分分配配空间空间局局部部数数据据的的地地址址可可以以用用相相对对于于活活动动记记录录中中某某个位置的地址来表示个位置的地址来表示数据对象的存储布局还有一个对齐问题数据对象的存储布局还有一个对齐问题6.1 局部存储分配局部存储分配例例 在在SPARC/Solaris工工作作站站上上下下面面两两个个结结构构体的体的size分别是分别是24和和16,为什么不一样?,为什么不一样?typedefstruct_atypedefstruct_bcharc1;charc1;longi;charc2;char c2;longi;double
7、f;doublef;a;b;对齐:对齐:char:1,long:4,double:86.1 局部存储分配局部存储分配例例 在在SPARC/Solaris工工作作站站上上下下面面两两个个结结构构体的体的size分别是分别是24和和16,为什么不一样?,为什么不一样?typedefstruct_atypedefstruct_bcharc1;0charc1;0longi;4charc2;1char c2;8longi;4doublef;16doublef;8a;b;对齐:对齐:char:1,long:4,double:86.1 局部存储分配局部存储分配例例 在在X86/Linux机机器器的的结结果果
8、和和SPARC/Solaris工作站不一样,是工作站不一样,是20和和16。typedefstruct_atypedefstruct_bcharc1;0charc1;0longi;4charc2;1char c2;8longi;4doublef;12doublef;8a;b;对齐:对齐:char:1,long:4,double:46.1 局部存储分配局部存储分配 程序块程序块本身含有局部变量声明的语句本身含有局部变量声明的语句可以嵌套可以嵌套最接近的嵌套最接近的嵌套作用域规则作用域规则并列程序块不会同时活跃并列程序块不会同时活跃并列程序块的变量可以重叠分配并列程序块的变量可以重叠分配6.1 局
9、部存储分配局部存储分配main()/例例/beginofB0/inta=0;intb=0;/beginofB1/intb=1;/beginofB2/inta=2;/endofB2/beginofB3/intb=3;/endofB3/endofB1/endofB0/6.1 局部存储分配局部存储分配main()/例例/beginofB0/inta=0;intb=0;/beginofB1/intb=1;/beginofB2/inta=2;/endofB2/beginofB3/intb=3;/endofB3/endofB1/endofB0/声声明明作作用用域域inta=0;B0 B2intb=0;B0
10、 B1intb=1;B1 B3inta=2;B2intb=3;B3a0b0b1a2,b3重叠分配存储单元重叠分配存储单元6.2 全局栈式存储分配全局栈式存储分配本节介绍本节介绍介介绍绍程程序序运运行行时时所所需需的的各各个个活活动动记记录录在在存存储储空间的分配策略空间的分配策略描描述述过过程程的的目目标标代代码码怎怎样样访访问问绑绑定定到到局局部部名名字的存储单元字的存储单元介绍三种分配策略介绍三种分配策略静态分配策略静态分配策略栈式分配策略栈式分配策略堆式分配策略堆式分配策略6.2 全局栈式存储分配全局栈式存储分配 运行时内存的划分运行时内存的划分代代码码静静态态数数据据堆堆栈栈6.2 全
11、局栈式存储分配全局栈式存储分配1、静态分配、静态分配名名字字在在程程序序被被编编译译时时绑绑定定到到存存储储单单元元,不不需需要运行时的任何支持要运行时的任何支持绑定的生存期是程序的整个运行期间绑定的生存期是程序的整个运行期间6.2 全局栈式存储分配全局栈式存储分配2、静态分配给语言带来限制、静态分配给语言带来限制递归过程不被允许递归过程不被允许数数据据对对象象的的长长度度和和它它在在内内存存中中位位置置的的限限制制,必须是在编译时可以知道的必须是在编译时可以知道的数据结构不能动态建立数据结构不能动态建立6.2 全局栈式存储分配全局栈式存储分配例例 C程程序序的的外外部部变变量量、静静态态局局
12、部部变变量量以以及及程程序中出现的常量都可以静态分配序中出现的常量都可以静态分配声明在函数外面声明在函数外面外部变量外部变量-静态分配静态分配静态外部变量静态外部变量-静态分配静态分配声明在函数里面声明在函数里面静态局部变量静态局部变量-也是静态分配也是静态分配自动变量自动变量-不能静态分配不能静态分配6.2 全局栈式存储分配全局栈式存储分配 活动树和运行栈活动树和运行栈1、活动树、活动树用树来描绘控制进入和离开活动的方式用树来描绘控制进入和离开活动的方式mq(1,9)rp(1,9)q(1,3)q(1,0)p(1,3)q(2,3)q(2,1)q(3,3)p(2,3)q(5,9)q(5,5)p(
13、5,9)q(7,9)q(7,7)q(9,9)p(7,9)6.2 全局栈式存储分配全局栈式存储分配活动树的特点活动树的特点每个结点代表某过程的一个活动每个结点代表某过程的一个活动根结点代表主程序的活动根结点代表主程序的活动结结点点a是是结结点点b的的父父结结点点,当当且且仅仅当当控控制制流流从从a的的活动进入活动进入b的活动的活动结结点点a处处于于结结点点b的的左左边边,当当且且仅仅当当a的的生生存存期期先先于于b的生存期的生存期mq(1,9)rp(1,9)q(1,3).q(5,9).6.2 全局栈式存储分配全局栈式存储分配当前活跃着的过程活动可以保存在一个栈中当前活跃着的过程活动可以保存在一个
14、栈中例例控制栈的内容:控制栈的内容:m,q(1,9),q(1,3),q(2,3)mq(1,9)rp(1,9)q(1,3)q(1,0)p(1,3)q(2,3)q(2,1)q(3,3)p(2,3)q(5,9)q(5,5)p(5,9)q(7,9)q(7,7)q(9,9)p(7,9)6.2 全局栈式存储分配全局栈式存储分配2、运运行行栈栈:把把控控制制栈栈中中的的信信息息拓拓广广到到包包括括过过程程活动所需的所有局部信息(即活动记录)活动所需的所有局部信息(即活动记录)6.2 全局栈式存储分配全局栈式存储分配2、运运行行栈栈:把把控控制制栈栈中中的的信信息息拓拓广广到到包包括括过过程程活动所需的所有局
15、部信息(即活动记录)活动所需的所有局部信息(即活动记录)main栈栈main函数调用关系树函数调用关系树6.2 全局栈式存储分配全局栈式存储分配2、运运行行栈栈:把把控控制制栈栈中中的的信信息息拓拓广广到到包包括括过过程程活动所需的所有局部信息(即活动记录)活动所需的所有局部信息(即活动记录)mainr函数调用关系树函数调用关系树mainintir()栈栈6.2 全局栈式存储分配全局栈式存储分配2、运运行行栈栈:把把控控制制栈栈中中的的信信息息拓拓广广到到包包括括过过程程活动所需的所有局部信息(即活动记录)活动所需的所有局部信息(即活动记录)mainq(1,9)r函数调用关系树函数调用关系树m
16、ainintiq(1,9)intm,n栈栈6.2 全局栈式存储分配全局栈式存储分配2、运运行行栈栈:把把控控制制栈栈中中的的信信息息拓拓广广到到包包括括过过程程活动所需的所有局部信息(即活动记录)活动所需的所有局部信息(即活动记录)mainq(1,9)rp(1,9)q(1,3)mainintiq(1,9)intm,nintiq(1,3)intm,n栈栈函数调用关系树函数调用关系树6.2 全局栈式存储分配全局栈式存储分配2、运运行行栈栈:把把控控制制栈栈中中的的信信息息拓拓广广到到包包括括过过程程活动所需的所有局部信息(即活动记录)活动所需的所有局部信息(即活动记录)mainq(1,9)rp(1
17、,9)q(1,3)q(1,0)p(1,3)mainintiq(1,9)intm,nintiq(1,3)intm,nintiq(1,0)intm,n栈栈函数调用关系树函数调用关系树6.2 全局栈式存储分配全局栈式存储分配 调用序列调用序列过过程程调调用用和和过过程程返返回回都都需需要要执执行行一一些些代代码码来来管理活动记录栈,保存或恢复机器状态等管理活动记录栈,保存或恢复机器状态等过程调用序列过程调用序列过过程程调调用用时时执执行行的的分分配配活活动动记记录录,把把信信息息填填入入它它的的域中,使被调用过程可以开始执行的代码域中,使被调用过程可以开始执行的代码过程返回序列过程返回序列被被调调用
18、用过过程程返返回回时时执执行行的的恢恢复复机机器器状状态态,释释放放被被调调用过程活动记录,使调用过程能够继续执行的代码用过程活动记录,使调用过程能够继续执行的代码调调用用序序列列和和返返回回序序列列常常常常都都分分成成两两部部分分,分分处于调用过程和被调用过程中处于调用过程和被调用过程中6.2 全局栈式存储分配全局栈式存储分配即即使使是是同同一一种种语语言言,过过程程调调用用序序列列、返返回回序序列列和和活活动动记记录录中中各各域域的的排排放放次次序序,也也会会因因实实现而异现而异设计这些序列和活动记录设计这些序列和活动记录的一些原则的一些原则以活动记录中间的某个以活动记录中间的某个位置作为
19、基地址位置作为基地址长度能较早确定的域放在长度能较早确定的域放在活动记录的中间活动记录的中间临临时时数数据据参参数数局局部部数数据据机机器器状状态态访访问问链链控控制制链链返返回回值值6.2 全局栈式存储分配全局栈式存储分配即即使使是是同同一一种种语语言言,过过程程调调用用序序列列、返返回回序序列列和和活活动动记记录录中中各各域域的的排排放放次次序序,也也会会因因实实现而异现而异设计这些序列和活动记录设计这些序列和活动记录的一些原则的一些原则一般把临时数据域放在一般把临时数据域放在局部数据域的后面局部数据域的后面把参数域和可能有的返回把参数域和可能有的返回值域放在紧靠调用者活动值域放在紧靠调用
20、者活动记录的地方记录的地方临临时时数数据据参参数数局局部部数数据据机机器器状状态态访访问问链链控控制制链链返返回回值值6.2 全局栈式存储分配全局栈式存储分配即即使使是是同同一一种种语语言言,过过程程调调用用序序列列、返返回回序序列列和和活活动动记记录录中中各各域域的的排排放放次次序序,也也会会因因实实现而异现而异设计这些序列和活动记录设计这些序列和活动记录的一些原则的一些原则用同样的代码来执行各个用同样的代码来执行各个活动的保存和恢复活动的保存和恢复临临时时数数据据参参数数局局部部数数据据机机器器状状态态访访问问链链控控制制链链返返回回值值6.2 全局栈式存储分配全局栈式存储分配1、过程、过
21、程p调用过程调用过程q的调用序列的调用序列返回值和参数返回值和参数top_sp base_sp 临时数据局部数据临时数据局部数据控制链控制链和保存的机器状态和保存的机器状态 6.2 全局栈式存储分配全局栈式存储分配1、过程、过程p调用过程调用过程q的调用序列的调用序列(1)p计算实参,依计算实参,依次放入栈顶,并在次放入栈顶,并在栈顶留出放返回值栈顶留出放返回值的空间。的空间。top_sp的的值在此过程中被改值在此过程中被改变变返回值和参数返回值和参数top_sp base_sp 临时数据局部数据临时数据局部数据控制链控制链和保存的机器状态和保存的机器状态 返回值和参数返回值和参数top_sp
22、 6.2 全局栈式存储分配全局栈式存储分配1、过程、过程p调用过程调用过程q的调用序列的调用序列(2)p把返回地址和把返回地址和当前当前base_sp的值的值存入存入q的活动记录的活动记录中,建立中,建立q的访问的访问链,增加链,增加base_sp的值的值返回值和参数返回值和参数top_sp base_sp 临时数据局部数据临时数据局部数据控制链控制链和保存的机器状态和保存的机器状态 返回值和参数返回值和参数控制链和返回地址控制链和返回地址base_sp top_sp 6.2 全局栈式存储分配全局栈式存储分配1、过程、过程p调用过程调用过程q的调用序列的调用序列(3)q保存寄存器的保存寄存器的
23、值和其它机器状态值和其它机器状态信息信息返回值和参数返回值和参数top_sp base_sp 临时数据局部数据临时数据局部数据控制链控制链和保存的机器状态和保存的机器状态 返回值和参数返回值和参数控制链控制链和保存的机器状态和保存的机器状态6.2 全局栈式存储分配全局栈式存储分配1、过程、过程p调用过程调用过程q的调用序列的调用序列(4)q根据局部数据根据局部数据域和临时数据域的域和临时数据域的大小增加大小增加top_sp的的值,初始化它的局值,初始化它的局部数据,并开始执部数据,并开始执行过程体行过程体临时数据局部数据临时数据局部数据返回值和参数返回值和参数返回值和参数返回值和参数 控制链控
24、制链和保存的机器状态和保存的机器状态top_sp base_sp 临时数据局部数据临时数据局部数据控制链控制链和保存的机器状态和保存的机器状态 6.2 全局栈式存储分配全局栈式存储分配调用者调用者p和被调用者和被调用者q之间的任务划分之间的任务划分被调用者被调用者q的责任的责任调用者调用者p的责任的责任调用者调用者p的的活动记录活动记录被调用者被调用者q的活动记录的活动记录临时数据局部数据临时数据局部数据返回值和参数返回值和参数返回值和参数返回值和参数 控制链控制链和保存的机器状态和保存的机器状态top_sp base_sp 栈栈增增长长方方向向临时数据局部数据临时数据局部数据控制链控制链和保
25、存的机器状态和保存的机器状态 6.2 全局栈式存储分配全局栈式存储分配2、过程、过程p调用过程调用过程q的返回序列的返回序列临时数据局部数据临时数据局部数据返回值和参数返回值和参数返回值和参数返回值和参数 控制链控制链和保存的机器状态和保存的机器状态top_sp base_sp 栈栈增增长长方方向向临时数据局部数据临时数据局部数据控制链控制链和保存的机器状态和保存的机器状态 6.2 全局栈式存储分配全局栈式存储分配2、过程、过程p调用过程调用过程q的返回序列的返回序列临时数据局部数据临时数据局部数据返回值返回值和参数和参数返回值和参数返回值和参数 控制链控制链和保存的机器状态和保存的机器状态t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运行 存储空间 组织 管理
限制150内