第7章运行时的存储组织和分配.ppt

上传人:99****p 文档编号:1441138 上传时间:2019-02-27 格式:PPT 页数:46 大小:390.50KB
下载 相关 举报
第7章运行时的存储组织和分配.ppt_第1页
第1页 / 共46页
第7章运行时的存储组织和分配.ppt_第2页
第2页 / 共46页
第7章运行时的存储组织和分配.ppt_第3页
第3页 / 共46页
第7章运行时的存储组织和分配.ppt_第4页
第4页 / 共46页
第7章运行时的存储组织和分配.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

1、第 7章 目标程序 运行时的存储组织存储组织运行时的分配策略从逻辑上看,在代码生成前,编译程序必须进行目标程序运行环境的设计和数据空间的分配。一般来讲,假如编译程序从操作系统中得到一块存储区以使目标程序在其上运行,该存储区需容纳生成的目标代码和目标代码运行时的数据空间。概述数据空间应包括:用户定义的各种类型的数据对象(变量和常数)所需的存储空间,作为保留中间结果和传递参数的临时工作单元,调用过程时所需的连接单元,以及组织输入 输出所需的缓冲区。目标代码所占用空间的大小,在编译时能确定,有些数据对象所占用的空间也能在编译时确定,其地址可以编译进目标代码中。但有些数据对象具有可变体积和待编译性质,

2、而无法在编译时确定存储空间的位置。因此运行时的存储区常常划分成:目标区、静态数据区、栈区和堆区。1.存储组织目标代码区 code静态数据区Stackheap 如图就是一种典型划分,代码( code)区用以存放目标代码,这是固定长度的,即编译时能确定的。静态数据区( static data)用以存放编译时能确定所占用空间的数据,堆栈区(stack and heap)用于可变数据以及管理过程活动的控制信息。编译程序分配目标程序运行时的数据空间的基本依据是程序语言设计时对程序运行中存储空间的使用和管理办法的规定。 所谓数据空间的分配,本质上看,是将程序中的每个名字与一个存储位置关联起来,该存储位置用

3、以容纳名字的值。我们知道,即便有些名字在程序中只声明了一次,但该名字可能对应运行时不同的运行空间位置以容纳每次执行时的值。因此,源语言的结构特点、源语言数据类型、源语言中决定名字作用域的规则等因素影响存储空间的管理和组织的复杂程序,决定数据空间分配的基本策略。2.数据空间的使用和管理方法分成三种:静态存储分配栈式动态存储分配堆式动态存储分配存储分配方案策略静态存储分配动态存储分配 栈式、堆式术语静态:如果一个名字的性质通过说明语句或隐或显规则而定义,则称这种性质是 “ 静态 ” 确定的。动态:如果名字的性质只有在程序运行时才能知道,则称这种性质为 “ 动态 ” 确定的。可变(动态)数组:若一个数组所需的存储空间的大小在编译时就已知道,则称它为确定数组,否则称为可变(动态)数组。如果在编译时能确定目标程序运行中所需的全部数据空间的大小,编译时安排好目标程序运行时的全部数据空间,确定每个数据对象的存储位置,那么则称这种分配策略为静态存储分配。如像 FORTRAN这样的语言, 其程序是段结构的,即由主程序段和若干子程序段组成。各程序段中定义的名字一般是彼此独立的(除公共块和等价语句说明的名字以外),也即各段的数据对象名的作用域在各段中,同一个名字在不同的程序段表示不同的存储单元,不会在不同段间互相引用、赋值。

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 教育教学资料库 > 课件讲义

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。