SlideShare a Scribd company logo
第 8章

运行时的
存储管理

       1
开设本章的目的
   一个用高级语言编写的程序要投入运
    行,
       一组可运行
               涉及
    的代码,这组代码        程序语言的编译系统
    应与高级语言的程
    序等价;

       一个运行环           变量以及变
    境,对程序中的变   涉及
                    量的存储分配和存
    量做存储分配,提        储管理的问题。
    供各种运行信息。
                                2
§ 8.1

存储组织

         3
运行时内存的划分

   编译程序从操作系统中得到一块存储
    区以使目标程序在其上运行,该存储
    区需容纳
    1. 生成的目标代码空间;
    2. 目标代码运行时的数据空间
    。


                       4
代码空间

   这是经翻译后的目标代码的存储
区域,线性存放着目标指令序列。这是
固定长度的,即在编译时能确定的。




                    5
数据空间
   每个程序都定义一定数量的各
种类型的变量和常量,必须为之分配
相应的存储空间。
 用户定义的各种类型的数据对象;
 保留中间结果和传递参数的临时工作单
元;
 调用过程时所需的连接单元;
 组织输入、输出所需的缓冲区。
                      6
有些数据对    有些数据对象具有
象所占用的空间,在   可变体积和待编译
编译时能确定,其地   性质,无法再编译
址可以编译进目标代   时确定存储空间的
码;          位置。

 静态存储分       动态存储分
 配           配

                       7
数据空间的分配

名字       存储位置
  值
      对数据空间来说,程序实体
的属性 ( 变量类型决定存储长度,作
用域决定了变量在存储区的空间范
围等 ) 和语言的运行特性都决定了数
据空间的分配和管理应采用的方法
和策略。
                     8
代码段

    静态数据区   静态数据段
用以存放编译时能确
定所占用空间的数据   运行栈
。
              ⇓
   堆栈区用于
存放可变数据以及管     ⇑
理过程活动的控制信
息。           堆
                    9
   静态存储分配
   动态存储分配
    1. 栈式动态存储分配
    2. 堆式动态存储分配



                  10
过程活动记录 (AR)

   源程序由一组过程按某种规则组
成。过程的一次执行称作一次活动。一
个过程的一次执行所需要的信息使用一
个连续的存储区来管理,这个区叫做一
个活动记录。



                    11
临时值,如计算表达式时的中间工作单元。
局部变量(数据)
保存运行过程前的状态
存取链(可选)对于非局部量的引用。
控制链(可选)
      指向调用者的活动记录,释放栈。
实参(形式单元)
返回值(对函数)
      (有时可使用寄存器存放返回值)



                      12
§ 8.2

 静态
存储分配

         13
静态存储分配
 对于某些变量,在编译时刻就可以由
  编译程序为它们分配存储区。在运行
  时刻,这些变量和存储区的结合(绑
  定)不变。
 局部名字的值在过程活动停止后仍保
  留下来。
 不能处理的情况:
  在编译时刻不能确定大小的变量。
  要支持递归过程实现。
                     14
  动态建立的数据结构。
动态存储分配
 凡不满足静态分配条件的语言,自然
  归入了动态分配类。
 如果一个程序语言允许递归过程、可
  变数组或允许用户自由申请和释放空
  间,那么就采用动态存储分配管理技
  术。
 有两种动态存储分配方式:

    1. 栈式 (stack) 动态存储分配
                           15

    2. 堆式 (heap) 动态存储分配
§ 8.3

 栈式
存储分配

         16
基于控制栈的原理:  存储空间被组织
 成栈,活动记录的推入和弹出分别对应
 于活动的开始和结束。
 与静态分配不同的是,在每次活动中
 把局部名字和新的存储单元绑定,在活
 动结束时,活动记录从栈中弹出,因而
 局部名字的存储空间也随之消失。


                      17
简单的栈式存储分配

 程序结构特点:没有分程序结构,过程
  定义不嵌套,过程可递归调用,含可变
  数组;
 采用栈式动态分配策略,运行时,每当
  进入一个过程,则为该过程分配一段存
  储区,当一个过程工作完毕返回时,它
  所占用的存储区则可释放。

                      18
main
          全局变量的说明或数
组的说明;                 Main---->Q---->R
   proc R
   ……                  TOP -----> R 的活动记录

   end R;              SP------>
   proc Q                          Q的活动记录
   ……
                                   主程序全局
   end Q;
                                    数据区
     主程序执行语句
  end main
         SP 指向现行过程活动记录的起
         点                                 19
嵌套过程语言的栈式分配

 (语言)一个过程可以引用包围它的
  任一外层过程所定义的标识符(如变
  量,数组或过程等)。
 (实现)一个过程可以引用它的任一
  外层过程的最新活动记录中的某些数
  据。


                     20
带有嵌套过程的一个 Pascal 程
序


 sort
        readarray
     exchange
    quicksort
        partition
                     21
 关键技术:解决对非局部量的引用
  (存取)。
 设法跟踪每个外层过程的最新活动记
  录 AR 的位置。
 跟踪办法:

  1. 用存取链。
  2. 用 DISPLAY 表。

                     22
存取链

    栈中的活动记录应反映源程序中
过程之间的嵌套关系。
     为每一个活动记录增设一个称
为存取链的指针,如果在源程序中过程
p 直接嵌入在过程 q 中,那么 p 的一个
活动记录中的存取链指向 q 的最近的活
动记录中的存取链。从当前活动记录开
始,沿着这条链,能找到访问的非局部
名字。
     程序运行过程中应维持这条链
                         23
嵌套层次显示表 display

 “ 嵌套层次 ” 是指过程定义的层数。主
  程序的层数为 0 。向外逐层加 1 。
 每进入一个过程后,在建立它的活动
  记录的同时建立一张 display 表。
 当前激活过程的层次为 K ,它的
  Display 表含有 K+1 个单元,自顶向下
  依次存放着现行层,直接外层 … 直至
  最外层的每一过程的最新活动记录的
  地址。                        24
§ 8.4

 堆式
存储分配

         25
堆式存储分配

 堆式分配的适合范围:
  允许动态申请和释放存储空间,申请
   和释放之间不一定遵循 “ 后申请先释放
   ” 的原则。
 堆式分配的基本思想:

  存储区分为两种状态:使用中、空闲
   中;
  只有程序正式要求撤销某数据对象的
   时候 , 才由存储空间回收程序释放该对
                         26

More Related Content

Viewers also liked

Conversition Webinar Integrated Social Media Research 11th April 2012
Conversition Webinar  Integrated Social Media Research   11th April 2012Conversition Webinar  Integrated Social Media Research   11th April 2012
Conversition Webinar Integrated Social Media Research 11th April 2012
jburlington
 
Law presentation ....
Law presentation ....Law presentation ....
Law presentation ....
Arbia Karim
 
奇才のマンガ家・天久聖一さんから学ぶ「毎日を幸せに生きる発想法」をマスターしよう! 【家庭遺産 編】先生:天久 聖一
奇才のマンガ家・天久聖一さんから学ぶ「毎日を幸せに生きる発想法」をマスターしよう! 【家庭遺産 編】先生:天久 聖一奇才のマンガ家・天久聖一さんから学ぶ「毎日を幸せに生きる発想法」をマスターしよう! 【家庭遺産 編】先生:天久 聖一
奇才のマンガ家・天久聖一さんから学ぶ「毎日を幸せに生きる発想法」をマスターしよう! 【家庭遺産 編】先生:天久 聖一
schoowebcampus
 
Rads candy store
Rads candy storeRads candy store
Rads candy storeeperiod
 
Embrace The Evolution
Embrace The EvolutionEmbrace The Evolution
Embrace The Evolution
Christopher Kappes
 
営業職×専門性=高年収 ~未経験からMRになる方法~ 先生:梅澤悠希先生
営業職×専門性=高年収 ~未経験からMRになる方法~ 先生:梅澤悠希先生営業職×専門性=高年収 ~未経験からMRになる方法~ 先生:梅澤悠希先生
営業職×専門性=高年収 ~未経験からMRになる方法~ 先生:梅澤悠希先生
schoowebcampus
 
Parshal verbs
Parshal verbsParshal verbs
Parshal verbs
Lorena Tavera
 
First grade ocean research
First grade ocean researchFirst grade ocean research
First grade ocean research
Mari McCuen
 
Hector SFM 1
Hector SFM 1Hector SFM 1
Hector SFM 1TonyC445
 
School PLUS
School PLUS School PLUS
School PLUS
Mark R.A. Schrinner
 
Union league club presentation may 2014
Union league club presentation may 2014Union league club presentation may 2014
Union league club presentation may 2014
Jeffrey R. Carter
 
Hướng dẫn lắp đặt máy nước nóng năng lượng mặt trời
Hướng dẫn lắp đặt máy nước nóng năng lượng mặt trờiHướng dẫn lắp đặt máy nước nóng năng lượng mặt trời
Hướng dẫn lắp đặt máy nước nóng năng lượng mặt trời
Long Nguyen
 
Iim assignment 1
Iim assignment 1Iim assignment 1
Iim assignment 1
Jaghadeeshwaran R
 
Fotografii istorice
Fotografii istoriceFotografii istorice
Fotografii istorice
Frumoasa Verde
 
Never say never again macondo
Never say never again macondoNever say never again macondo
Never say never again macondo
Pritish Mukherjee
 
2012 SEO For Press Releases
2012 SEO For Press Releases2012 SEO For Press Releases
2012 SEO For Press Releases
IR Smartt Inc.
 

Viewers also liked (18)

Conversition Webinar Integrated Social Media Research 11th April 2012
Conversition Webinar  Integrated Social Media Research   11th April 2012Conversition Webinar  Integrated Social Media Research   11th April 2012
Conversition Webinar Integrated Social Media Research 11th April 2012
 
Law presentation ....
Law presentation ....Law presentation ....
Law presentation ....
 
奇才のマンガ家・天久聖一さんから学ぶ「毎日を幸せに生きる発想法」をマスターしよう! 【家庭遺産 編】先生:天久 聖一
奇才のマンガ家・天久聖一さんから学ぶ「毎日を幸せに生きる発想法」をマスターしよう! 【家庭遺産 編】先生:天久 聖一奇才のマンガ家・天久聖一さんから学ぶ「毎日を幸せに生きる発想法」をマスターしよう! 【家庭遺産 編】先生:天久 聖一
奇才のマンガ家・天久聖一さんから学ぶ「毎日を幸せに生きる発想法」をマスターしよう! 【家庭遺産 編】先生:天久 聖一
 
Polozhenia uom
Polozhenia uomPolozhenia uom
Polozhenia uom
 
Rads candy store
Rads candy storeRads candy store
Rads candy store
 
Embrace The Evolution
Embrace The EvolutionEmbrace The Evolution
Embrace The Evolution
 
営業職×専門性=高年収 ~未経験からMRになる方法~ 先生:梅澤悠希先生
営業職×専門性=高年収 ~未経験からMRになる方法~ 先生:梅澤悠希先生営業職×専門性=高年収 ~未経験からMRになる方法~ 先生:梅澤悠希先生
営業職×専門性=高年収 ~未経験からMRになる方法~ 先生:梅澤悠希先生
 
Parshal verbs
Parshal verbsParshal verbs
Parshal verbs
 
Article02
Article02Article02
Article02
 
First grade ocean research
First grade ocean researchFirst grade ocean research
First grade ocean research
 
Hector SFM 1
Hector SFM 1Hector SFM 1
Hector SFM 1
 
School PLUS
School PLUS School PLUS
School PLUS
 
Union league club presentation may 2014
Union league club presentation may 2014Union league club presentation may 2014
Union league club presentation may 2014
 
Hướng dẫn lắp đặt máy nước nóng năng lượng mặt trời
Hướng dẫn lắp đặt máy nước nóng năng lượng mặt trờiHướng dẫn lắp đặt máy nước nóng năng lượng mặt trời
Hướng dẫn lắp đặt máy nước nóng năng lượng mặt trời
 
Iim assignment 1
Iim assignment 1Iim assignment 1
Iim assignment 1
 
Fotografii istorice
Fotografii istoriceFotografii istorice
Fotografii istorice
 
Never say never again macondo
Never say never again macondoNever say never again macondo
Never say never again macondo
 
2012 SEO For Press Releases
2012 SEO For Press Releases2012 SEO For Press Releases
2012 SEO For Press Releases
 

Similar to 第8章 运行时的存储管理

Altibase管理培训 管理篇
Altibase管理培训 管理篇Altibase管理培训 管理篇
Altibase管理培训 管理篇小新 制造
 
Java并发核心编程
Java并发核心编程Java并发核心编程
Java并发核心编程
wavefly
 
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
mysqlops
 
1, OCP - architecture intro
1, OCP - architecture intro1, OCP - architecture intro
1, OCP - architecture intro
ted-xu
 
Erlang游戏开发
Erlang游戏开发Erlang游戏开发
Erlang游戏开发
litaocheng
 
Cassandra运维之道(office2003)
Cassandra运维之道(office2003)Cassandra运维之道(office2003)
Cassandra运维之道(office2003)haiyuan ning
 
Akka分片集群的实现
Akka分片集群的实现Akka分片集群的实现
Akka分片集群的实现
Caoyuan Deng
 
Altibase管理培训 优化篇 v1.1
Altibase管理培训 优化篇 v1.1Altibase管理培训 优化篇 v1.1
Altibase管理培训 优化篇 v1.1小新 制造
 
4 hibernate对象管理和缓存结构
4 hibernate对象管理和缓存结构4 hibernate对象管理和缓存结构
4 hibernate对象管理和缓存结构Zelin Wang
 
Times Ten Training
Times Ten TrainingTimes Ten Training
Times Ten TrainingLi Chen
 
Java华为面试题
Java华为面试题Java华为面试题
Java华为面试题yiditushe
 
Baidu Cloud Foundry
Baidu Cloud FoundryBaidu Cloud Foundry
Baidu Cloud Foundry
James Watters
 
第9章 t sql程序设计
第9章 t sql程序设计第9章 t sql程序设计
第9章 t sql程序设计hanmo1988
 
基于Lucene的站内搜索
基于Lucene的站内搜索基于Lucene的站内搜索
基于Lucene的站内搜索fulin tang
 
基于Lucene的站内搜索
基于Lucene的站内搜索基于Lucene的站内搜索
基于Lucene的站内搜索fulin tang
 
Large-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLarge-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The Hood
Lei (Harry) Zhang
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networking
ted-xu
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
孙立
 
4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & apited-xu
 

Similar to 第8章 运行时的存储管理 (20)

Altibase管理培训 管理篇
Altibase管理培训 管理篇Altibase管理培训 管理篇
Altibase管理培训 管理篇
 
Java并发核心编程
Java并发核心编程Java并发核心编程
Java并发核心编程
 
Aswan&hump
Aswan&humpAswan&hump
Aswan&hump
 
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
 
1, OCP - architecture intro
1, OCP - architecture intro1, OCP - architecture intro
1, OCP - architecture intro
 
Erlang游戏开发
Erlang游戏开发Erlang游戏开发
Erlang游戏开发
 
Cassandra运维之道(office2003)
Cassandra运维之道(office2003)Cassandra运维之道(office2003)
Cassandra运维之道(office2003)
 
Akka分片集群的实现
Akka分片集群的实现Akka分片集群的实现
Akka分片集群的实现
 
Altibase管理培训 优化篇 v1.1
Altibase管理培训 优化篇 v1.1Altibase管理培训 优化篇 v1.1
Altibase管理培训 优化篇 v1.1
 
4 hibernate对象管理和缓存结构
4 hibernate对象管理和缓存结构4 hibernate对象管理和缓存结构
4 hibernate对象管理和缓存结构
 
Times Ten Training
Times Ten TrainingTimes Ten Training
Times Ten Training
 
Java华为面试题
Java华为面试题Java华为面试题
Java华为面试题
 
Baidu Cloud Foundry
Baidu Cloud FoundryBaidu Cloud Foundry
Baidu Cloud Foundry
 
第9章 t sql程序设计
第9章 t sql程序设计第9章 t sql程序设计
第9章 t sql程序设计
 
基于Lucene的站内搜索
基于Lucene的站内搜索基于Lucene的站内搜索
基于Lucene的站内搜索
 
基于Lucene的站内搜索
基于Lucene的站内搜索基于Lucene的站内搜索
基于Lucene的站内搜索
 
Large-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLarge-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The Hood
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networking
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
 
4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & api
 

More from tjpucompiler

第6章 自底向上的lr分析法
第6章 自底向上的lr分析法第6章 自底向上的lr分析法
第6章 自底向上的lr分析法
tjpucompiler
 
第11章 目标代码生成
第11章 目标代码生成第11章 目标代码生成
第11章 目标代码生成
tjpucompiler
 
第10章 代码优化
第10章 代码优化第10章 代码优化
第10章 代码优化
tjpucompiler
 
第9章 符号表
第9章 符号表第9章 符号表
第9章 符号表
tjpucompiler
 
第7章 语法制导翻译和中间代码生成
第7章 语法制导翻译和中间代码生成第7章 语法制导翻译和中间代码生成
第7章 语法制导翻译和中间代码生成
tjpucompiler
 
第6章 自底向上的lr分析法
第6章 自底向上的lr分析法第6章 自底向上的lr分析法
第6章 自底向上的lr分析法
tjpucompiler
 
第5章 自底向上的语法分析
第5章 自底向上的语法分析第5章 自底向上的语法分析
第5章 自底向上的语法分析
tjpucompiler
 
第2章 文法和语言
第2章 文法和语言第2章 文法和语言
第2章 文法和语言
tjpucompiler
 
第3章 词法分析
第3章 词法分析第3章 词法分析
第3章 词法分析tjpucompiler
 
第4章 自顶向下的语法分析
第4章 自顶向下的语法分析第4章 自顶向下的语法分析
第4章 自顶向下的语法分析
tjpucompiler
 
第1章 概论
第1章 概论第1章 概论
第1章 概论
tjpucompiler
 

More from tjpucompiler (11)

第6章 自底向上的lr分析法
第6章 自底向上的lr分析法第6章 自底向上的lr分析法
第6章 自底向上的lr分析法
 
第11章 目标代码生成
第11章 目标代码生成第11章 目标代码生成
第11章 目标代码生成
 
第10章 代码优化
第10章 代码优化第10章 代码优化
第10章 代码优化
 
第9章 符号表
第9章 符号表第9章 符号表
第9章 符号表
 
第7章 语法制导翻译和中间代码生成
第7章 语法制导翻译和中间代码生成第7章 语法制导翻译和中间代码生成
第7章 语法制导翻译和中间代码生成
 
第6章 自底向上的lr分析法
第6章 自底向上的lr分析法第6章 自底向上的lr分析法
第6章 自底向上的lr分析法
 
第5章 自底向上的语法分析
第5章 自底向上的语法分析第5章 自底向上的语法分析
第5章 自底向上的语法分析
 
第2章 文法和语言
第2章 文法和语言第2章 文法和语言
第2章 文法和语言
 
第3章 词法分析
第3章 词法分析第3章 词法分析
第3章 词法分析
 
第4章 自顶向下的语法分析
第4章 自顶向下的语法分析第4章 自顶向下的语法分析
第4章 自顶向下的语法分析
 
第1章 概论
第1章 概论第1章 概论
第1章 概论
 

Recently uploaded

一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
h0wovd5
 
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
h0wovd5
 
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
h0wovd5
 
鏘鏘的帶賽人生:從自卑到強運的50年成長屁事然後聊一聊傻瓜型學習歷程分析.pptx
鏘鏘的帶賽人生:從自卑到強運的50年成長屁事然後聊一聊傻瓜型學習歷程分析.pptx鏘鏘的帶賽人生:從自卑到強運的50年成長屁事然後聊一聊傻瓜型學習歷程分析.pptx
鏘鏘的帶賽人生:從自卑到強運的50年成長屁事然後聊一聊傻瓜型學習歷程分析.pptx
Koong Lin
 
VS2022入門................................
VS2022入門................................VS2022入門................................
VS2022入門................................
Rico Chen
 
国外学历认证办理,留信网认证办理.国外大学成绩单修改,留学gpa不足上国外名牌大学,黑客改gpa成绩!【微信tytyqqww】
国外学历认证办理,留信网认证办理.国外大学成绩单修改,留学gpa不足上国外名牌大学,黑客改gpa成绩!【微信tytyqqww】国外学历认证办理,留信网认证办理.国外大学成绩单修改,留学gpa不足上国外名牌大学,黑客改gpa成绩!【微信tytyqqww】
国外学历认证办理,留信网认证办理.国外大学成绩单修改,留学gpa不足上国外名牌大学,黑客改gpa成绩!【微信tytyqqww】
微信 tytyqqww业务接单
 
一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
h0wovd5
 
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
ictglzse
 
黑客改分,黑客改成绩,黑客修改成绩,黑客改学历,黑客服务黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修改成绩.【微oojjiijj信】
黑客改分,黑客改成绩,黑客修改成绩,黑客改学历,黑客服务黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修改成绩.【微oojjiijj信】黑客改分,黑客改成绩,黑客修改成绩,黑客改学历,黑客服务黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修改成绩.【微oojjiijj信】
黑客改分,黑客改成绩,黑客修改成绩,黑客改学历,黑客服务黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修改成绩.【微oojjiijj信】
微信 tytyqqww业务接单
 
大学成绩修改,找黑客改分,修改成绩单,挂科修改,GPA成绩提高黑客常用的邮件入侵方式如何破解Instagram帐户和密码【微oojjiijj信】
大学成绩修改,找黑客改分,修改成绩单,挂科修改,GPA成绩提高黑客常用的邮件入侵方式如何破解Instagram帐户和密码【微oojjiijj信】大学成绩修改,找黑客改分,修改成绩单,挂科修改,GPA成绩提高黑客常用的邮件入侵方式如何破解Instagram帐户和密码【微oojjiijj信】
大学成绩修改,找黑客改分,修改成绩单,挂科修改,GPA成绩提高黑客常用的邮件入侵方式如何破解Instagram帐户和密码【微oojjiijj信】
微信 tytyqqww业务接单
 
大学成绩修改,找黑客改分修改成绩单,挂科修改GPA成绩提高代考GMAT【微oojjiijj信】
大学成绩修改,找黑客改分修改成绩单,挂科修改GPA成绩提高代考GMAT【微oojjiijj信】大学成绩修改,找黑客改分修改成绩单,挂科修改GPA成绩提高代考GMAT【微oojjiijj信】
大学成绩修改,找黑客改分修改成绩单,挂科修改GPA成绩提高代考GMAT【微oojjiijj信】
微信 tytyqqww业务接单
 
哇塞!黑客大佬居然能入侵网站改成绩,简直是神仙操作啊!太牛了!🤩💪🔥【微oojjiijj信】
哇塞!黑客大佬居然能入侵网站改成绩,简直是神仙操作啊!太牛了!🤩💪🔥【微oojjiijj信】哇塞!黑客大佬居然能入侵网站改成绩,简直是神仙操作啊!太牛了!🤩💪🔥【微oojjiijj信】
哇塞!黑客大佬居然能入侵网站改成绩,简直是神仙操作啊!太牛了!🤩💪🔥【微oojjiijj信】
微信 tytyqqww业务接单
 

Recently uploaded (12)

一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
一比一原版(UQ毕业证书)昆士兰大学毕业证成绩单
 
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
一比一原版(Griffith毕业证书)格里菲斯大学毕业证成绩单
 
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
一比一原版(JCU毕业证书)詹姆斯库克大学毕业证成绩单
 
鏘鏘的帶賽人生:從自卑到強運的50年成長屁事然後聊一聊傻瓜型學習歷程分析.pptx
鏘鏘的帶賽人生:從自卑到強運的50年成長屁事然後聊一聊傻瓜型學習歷程分析.pptx鏘鏘的帶賽人生:從自卑到強運的50年成長屁事然後聊一聊傻瓜型學習歷程分析.pptx
鏘鏘的帶賽人生:從自卑到強運的50年成長屁事然後聊一聊傻瓜型學習歷程分析.pptx
 
VS2022入門................................
VS2022入門................................VS2022入門................................
VS2022入門................................
 
国外学历认证办理,留信网认证办理.国外大学成绩单修改,留学gpa不足上国外名牌大学,黑客改gpa成绩!【微信tytyqqww】
国外学历认证办理,留信网认证办理.国外大学成绩单修改,留学gpa不足上国外名牌大学,黑客改gpa成绩!【微信tytyqqww】国外学历认证办理,留信网认证办理.国外大学成绩单修改,留学gpa不足上国外名牌大学,黑客改gpa成绩!【微信tytyqqww】
国外学历认证办理,留信网认证办理.国外大学成绩单修改,留学gpa不足上国外名牌大学,黑客改gpa成绩!【微信tytyqqww】
 
一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
一比一原版(Adelaide毕业证)阿德莱德大学毕业证成绩单
 
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
一比一原版(Ryerson毕业证书)瑞尔森大学毕业证成绩单如何办理
 
黑客改分,黑客改成绩,黑客修改成绩,黑客改学历,黑客服务黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修改成绩.【微oojjiijj信】
黑客改分,黑客改成绩,黑客修改成绩,黑客改学历,黑客服务黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修改成绩.【微oojjiijj信】黑客改分,黑客改成绩,黑客修改成绩,黑客改学历,黑客服务黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修改成绩.【微oojjiijj信】
黑客改分,黑客改成绩,黑客修改成绩,黑客改学历,黑客服务黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修改成绩.【微oojjiijj信】
 
大学成绩修改,找黑客改分,修改成绩单,挂科修改,GPA成绩提高黑客常用的邮件入侵方式如何破解Instagram帐户和密码【微oojjiijj信】
大学成绩修改,找黑客改分,修改成绩单,挂科修改,GPA成绩提高黑客常用的邮件入侵方式如何破解Instagram帐户和密码【微oojjiijj信】大学成绩修改,找黑客改分,修改成绩单,挂科修改,GPA成绩提高黑客常用的邮件入侵方式如何破解Instagram帐户和密码【微oojjiijj信】
大学成绩修改,找黑客改分,修改成绩单,挂科修改,GPA成绩提高黑客常用的邮件入侵方式如何破解Instagram帐户和密码【微oojjiijj信】
 
大学成绩修改,找黑客改分修改成绩单,挂科修改GPA成绩提高代考GMAT【微oojjiijj信】
大学成绩修改,找黑客改分修改成绩单,挂科修改GPA成绩提高代考GMAT【微oojjiijj信】大学成绩修改,找黑客改分修改成绩单,挂科修改GPA成绩提高代考GMAT【微oojjiijj信】
大学成绩修改,找黑客改分修改成绩单,挂科修改GPA成绩提高代考GMAT【微oojjiijj信】
 
哇塞!黑客大佬居然能入侵网站改成绩,简直是神仙操作啊!太牛了!🤩💪🔥【微oojjiijj信】
哇塞!黑客大佬居然能入侵网站改成绩,简直是神仙操作啊!太牛了!🤩💪🔥【微oojjiijj信】哇塞!黑客大佬居然能入侵网站改成绩,简直是神仙操作啊!太牛了!🤩💪🔥【微oojjiijj信】
哇塞!黑客大佬居然能入侵网站改成绩,简直是神仙操作啊!太牛了!🤩💪🔥【微oojjiijj信】
 

第8章 运行时的存储管理

  • 2. 开设本章的目的  一个用高级语言编写的程序要投入运 行, 一组可运行 涉及 的代码,这组代码 程序语言的编译系统 应与高级语言的程 序等价; 一个运行环 变量以及变 境,对程序中的变 涉及 量的存储分配和存 量做存储分配,提 储管理的问题。 供各种运行信息。 2
  • 4. 运行时内存的划分  编译程序从操作系统中得到一块存储 区以使目标程序在其上运行,该存储 区需容纳 1. 生成的目标代码空间; 2. 目标代码运行时的数据空间 。 4
  • 5. 代码空间 这是经翻译后的目标代码的存储 区域,线性存放着目标指令序列。这是 固定长度的,即在编译时能确定的。 5
  • 6. 数据空间 每个程序都定义一定数量的各 种类型的变量和常量,必须为之分配 相应的存储空间。  用户定义的各种类型的数据对象;  保留中间结果和传递参数的临时工作单 元;  调用过程时所需的连接单元;  组织输入、输出所需的缓冲区。 6
  • 7. 有些数据对 有些数据对象具有 象所占用的空间,在 可变体积和待编译 编译时能确定,其地 性质,无法再编译 址可以编译进目标代 时确定存储空间的 码; 位置。 静态存储分 动态存储分 配 配 7
  • 8. 数据空间的分配 名字 存储位置 值 对数据空间来说,程序实体 的属性 ( 变量类型决定存储长度,作 用域决定了变量在存储区的空间范 围等 ) 和语言的运行特性都决定了数 据空间的分配和管理应采用的方法 和策略。 8
  • 9. 代码段 静态数据区 静态数据段 用以存放编译时能确 定所占用空间的数据 运行栈 。 ⇓ 堆栈区用于 存放可变数据以及管 ⇑ 理过程活动的控制信 息。 堆 9
  • 10. 静态存储分配  动态存储分配 1. 栈式动态存储分配 2. 堆式动态存储分配 10
  • 11. 过程活动记录 (AR) 源程序由一组过程按某种规则组 成。过程的一次执行称作一次活动。一 个过程的一次执行所需要的信息使用一 个连续的存储区来管理,这个区叫做一 个活动记录。 11
  • 12. 临时值,如计算表达式时的中间工作单元。 局部变量(数据) 保存运行过程前的状态 存取链(可选)对于非局部量的引用。 控制链(可选) 指向调用者的活动记录,释放栈。 实参(形式单元) 返回值(对函数) (有时可使用寄存器存放返回值) 12
  • 14. 静态存储分配  对于某些变量,在编译时刻就可以由 编译程序为它们分配存储区。在运行 时刻,这些变量和存储区的结合(绑 定)不变。  局部名字的值在过程活动停止后仍保 留下来。  不能处理的情况: 在编译时刻不能确定大小的变量。 要支持递归过程实现。 14 动态建立的数据结构。
  • 15. 动态存储分配  凡不满足静态分配条件的语言,自然 归入了动态分配类。  如果一个程序语言允许递归过程、可 变数组或允许用户自由申请和释放空 间,那么就采用动态存储分配管理技 术。  有两种动态存储分配方式: 1. 栈式 (stack) 动态存储分配 15 2. 堆式 (heap) 动态存储分配
  • 17. 基于控制栈的原理:  存储空间被组织 成栈,活动记录的推入和弹出分别对应 于活动的开始和结束。  与静态分配不同的是,在每次活动中 把局部名字和新的存储单元绑定,在活 动结束时,活动记录从栈中弹出,因而 局部名字的存储空间也随之消失。 17
  • 18. 简单的栈式存储分配  程序结构特点:没有分程序结构,过程 定义不嵌套,过程可递归调用,含可变 数组;  采用栈式动态分配策略,运行时,每当 进入一个过程,则为该过程分配一段存 储区,当一个过程工作完毕返回时,它 所占用的存储区则可释放。 18
  • 19. main 全局变量的说明或数 组的说明; Main---->Q---->R proc R …… TOP -----> R 的活动记录 end R; SP------> proc Q Q的活动记录 …… 主程序全局 end Q; 数据区 主程序执行语句 end main SP 指向现行过程活动记录的起 点 19
  • 20. 嵌套过程语言的栈式分配  (语言)一个过程可以引用包围它的 任一外层过程所定义的标识符(如变 量,数组或过程等)。  (实现)一个过程可以引用它的任一 外层过程的最新活动记录中的某些数 据。 20
  • 21. 带有嵌套过程的一个 Pascal 程 序 sort readarray exchange quicksort partition 21
  • 22.  关键技术:解决对非局部量的引用 (存取)。  设法跟踪每个外层过程的最新活动记 录 AR 的位置。  跟踪办法: 1. 用存取链。 2. 用 DISPLAY 表。 22
  • 23. 存取链 栈中的活动记录应反映源程序中 过程之间的嵌套关系。 为每一个活动记录增设一个称 为存取链的指针,如果在源程序中过程 p 直接嵌入在过程 q 中,那么 p 的一个 活动记录中的存取链指向 q 的最近的活 动记录中的存取链。从当前活动记录开 始,沿着这条链,能找到访问的非局部 名字。 程序运行过程中应维持这条链 23
  • 24. 嵌套层次显示表 display  “ 嵌套层次 ” 是指过程定义的层数。主 程序的层数为 0 。向外逐层加 1 。  每进入一个过程后,在建立它的活动 记录的同时建立一张 display 表。  当前激活过程的层次为 K ,它的 Display 表含有 K+1 个单元,自顶向下 依次存放着现行层,直接外层 … 直至 最外层的每一过程的最新活动记录的 地址。 24
  • 26. 堆式存储分配  堆式分配的适合范围: 允许动态申请和释放存储空间,申请 和释放之间不一定遵循 “ 后申请先释放 ” 的原则。  堆式分配的基本思想: 存储区分为两种状态:使用中、空闲 中; 只有程序正式要求撤销某数据对象的 时候 , 才由存储空间回收程序释放该对 26