第5章 运行时存储空间的组织和管理
整理符号表_变量符号说明
符号表整理表姓名:职业工种:申请级别:受理机构:填报日期:变量符号说明福州大学2015 年硕士研究生入学考试专业课课程(考试)大纲1.考试科目名称: 《数据结构与程序设计》2.招生学院:数学与计算机科学(软件)学院说明:1、考试基本内容:一般包括基础理论、实际知识、综合分析和论证等几个方面的内容。
有些课程还应有基本运算和实验方法等方面的内容。
字数一般在300字左右。
2、难易程度:根据大学本科的教学大纲和本学科、专业的基本要求,一般应使大学本科毕业生中优秀学生在规定的三个小时内答完全部考题,略有一些时间进行检查和思考。
排序从易到难。
目录第1章编译器概述第2章词法分析2.1 词法记号及属性2.1.1 词法记号、模式、词法单元2.1.2 词法记号的属性2.1.3 词法错误2.2 词法记号的描述与识别2.2.1 串和语言2.2.2 正规式2.2.3 正规定义2.2.4 状态转换图2.3 有限自动机2.3.1 不确定的有限自动机2.3.2 确定的有限自动机2.3.3 NFA到DFA的变换2.3.4 DFA的化简2.4 从正规式到有限自动机2.5 词法分析器的生成器第3章语法分析3.1 上下文无关文法3.1.1上下文无关文法的定义3.1.2 推导3.1.3 分析树3.1.4 二义性3.2 语言和文法3.2.1 正规式和上下文无关文法的比较3.2.2分离词法分析器的理由3.2.3 验证文法产生的语言3.2.4 适当的表达式文法3.2.5 消除二义性3.2.6 消除左递归3.2.7 提左因子3.2.8 非上下文无关的语言结构3.2.9 形式语言鸟瞰3.3 自上而下分析3.3.1 自上而下分析的一般方法3.3.2 LL(1)文法3.3.3 递归下降的预测分析3.3.4 非递归的预测分析3.3.5 构造预测分析表3.3.6 预测分析的错误恢复3.4 自下而上分析3.4.1 归约3.4.2 句柄3.4.3 用栈实现移进-归约分析3.4.4 移进-归约分析的冲突3.5 LR分析器3.5.1 LR分析算法3.5.2 LR文法和LR分析方法的特点3.5.3 构造SLR分析表3.5.4 构造规范的LR分析表3.5.5 构造LALR分析表3.5.6 非LR的上下文无关结构3.6 二义文法的应用3.6.1 使用文法以外的信息来解决分析动作的冲突3.6.2特殊情况产生式引起的二义性3.6.3 LR分析的错误恢复3.7 分析器的生成器3.7.1 分析器的生成器Yacc3.7.2 用Yacc处理二义文法3.7.3 Yacc的错误恢复第4章语法制导的翻译4.1 语法制导的定义4.1.1 语法制导定义的形式4.1.2 综合属性4.1.3 继承属性4.1.4 属性依赖图4.1.5 属性计算次序4.2 S属性定义的自下而上计算4.2.1 语法树4.2.2 构造语法树的语法制导定义4.2.3 S属性的自下而上计算4.3 L属性定义的自上而下计算4.3.1 L属性定义4.3.2 翻译方案4.3.3 预测翻译器的设计4.3.4 用综合属性代替继承属性4.4 L属性的自下而上计算4.4.1 删除翻译方案中嵌入的动作4.4.2 分析栈上的继承属性4.4.3 模拟继承属性的计算4.5 递归计算4.5.1 自左向右遍历4.5.2 其他遍历方法4.5.3 多次遍历第5章类型检查5.1 类型在程序设计语言中的作用5.1.1 引言5.1.2 执行错误和安全语言5.1.3 类型化语言的优点5.2 描述类型系统的语言5.2.1 定型断言5.2.2 定型规则5.2.3 类型检查和类型推断5.3 简单类型检查器的说明5.3.1 一个简单的语言5.3.2 类型系统5.3.3 类型检查5.3.4 类型转换*5.4 多态函数5.4.1 为什么要使用多态函数5.4.2 类型变量5.4.3 一个含多态函数的语言5.4.4 代换、实例和合一5.4.5 多态函数的类型检查5.5 类型表达式的等价5.5.1 类型表达式的结构等价5.5.2 类型表达式的名字等价5.5.3 记录类型5.5.4 类型表示中的环5.6 函数和算符的重载5.6.1 子表达式的可能类型集合5.6.2 缩小可能类型的集合第6章运行时存储空间的组织和管理6.1 局部存储分配策略6.1.1 过程6.1.2 名字的作用域和绑定6.1.3 活动记录6.1.4 局部数据的安排6.1.5 程序块6.2 全局存储分配策略6.2.1 运行时内存的划分6.2.2 静态分配6.2.3 栈式分配6.2.4 堆式分配6.3 非局部名字的访问6.3.1 无过程嵌套的静态作用域6.3.2 有过程嵌套的静态作用域6.3.3 动态作用域6.4 参数传递6.4.1值调用6.4.2 引用调用6.4.3 复写-恢复调用6.4.4 换名调用第7章中间代码生成7.1 中间语言7.1.1 后缀表示7.1.2 图形表示7.1.3 三地址代码7.2 声明语句7.2.1 过程中的声明7.2.2 作用域信息的保存7.2.3 记录的域名7.3 赋值语句7.3.1 符号表中的名字7.3.2 临时名字的重新使用7.3.3 数组元素的地址计算7.3.4 数组元素地址计算的翻译方案7.3.5 类型转换7.4 布尔表达式和控制流语句7.4.1 布尔表达式的翻译7.4.2 控制流语句的翻译7.4.3 布尔表达式的控制流翻译7.4.4 开关语句的翻译7.4.5 过程调用的翻译第8章代码生成8.1 代码生成器设计中的问题8.1.1 目标程序8.1.2 指令选择8.1.3 寄存器分配8.1.4 计算次序选择8.2 目标机器8.2.1 目标机器的指令系统8.2.2 指令的代价8.3 基本块和流图8.3.1 基本块8.3.2 基本块的变换8.3.3 流图8.3.4 下次引用信息8.4 一个简单的代码生成器8.4.1 寄存器描述和地址描述8.4.2 代码生成算法8.4.3 寄存器选择函数8.4.4 为变址和指针语句产生代码8.4.5 条件语句*第9章代码优化9.1 优化的主要种类9.1.1 代码改进变换的标准9.1.2 公共子表达式删除9.1.3 复写传播9.1.4 死代码删除9.1.5 代码外提9.1.6 强度削弱和归纳变量删除9.1.7 优化编译器的组织9.2 流图中的循环9.2.1 必经结点9.2.2 自然循环9.2.3 前置结点9.2.4 可归约流图9.3 全局数据流分析介绍9.3.1 点和路径9.3.2 到达-定值9.3.3 可用表达式9.3.4 活跃变量分析9.4 代码改进变换9.4.1公共子表达式删除9.4.2复写传播9.4.3 寻找循环不变计算9.4.4 代码外提9.4.5 归纳变量删除第10章编译系统和运行系统10.1 C语言的编译系统10.1.1 预处理器10.1.2 汇编器10.1.3 连接器10.1.4 目标文件的格式10.1.5 符号解析10.1.6 静态库10.1.7 可执行目标文件及装入10.1.8 动态连接10.1.9 处理目标文件的一些工具10.2 Java语言的运行系统10.2.1 Java虚拟机语言简介10.2.2 Java虚拟机10.2.3即时编译器*10.3 无用单元收集10.3.1 标记和清扫10.3.2 引用计数10.3.3 拷贝收集10.3.4 分代收集10.3.5 渐增式收集10.3.6 编译器与收集器之间的相互影响*第11章面向对象语言的编译11.1 面向对象语言的概念11.1.1 对象和对象类11.1.2 继承11.1.3 信息封装11.2 方法的编译11.3 继承的编译方案11.3.1 单一继承的编译方案11.3.2 重复继承的编译方案*第12章函数式语言的编译12.1 函数式程序设计语言简介12.1.1 语言构造12.1.2 参数传递机制12.1.3 变量的自由出现和约束出现12.2 函数式语言的编译简介12.2.1 几个受启发的例子12.2.2 编译函数12.2.3 环境与约束12.3 抽象机的系统结构12.3.1 抽象机的栈12.3.2 抽象机的堆12.3.3 名字的寻址12.3.4 约束的建立12.4 指令集和编译12.4.1 表达式12.4.2 变量的引用性出现12.4.3 函数定义12.4.4 函数应用12.4.5 构造和计算闭包12.4.6 letrec表达式和局部变量整理丨尼克本文档信息来自于网络,如您发现内容不准确或不完善,欢迎您联系我修正;如您发现内容涉嫌侵权,请与我们联系,我们将按照相关法律规定及时处理。
编译原理第九章 运行时存储空间组织
– 堆区(new, malloc)
9.5 嵌套过程语言的栈式实现
• Pascal 的过程嵌套 嵌套层次:主程序0层 ······ 采用层数计数器,每逢Proc Begin加1,遇 Proc End则减1。
• 直接外层 • 编译器需要将过程的层数记录到符号表中
2)返回函数结果:累加器、寄存器
··· a:= 3 ··· P(a); Write(a); ···
传地址 8,8 8
举例
Procedure P(x) Begin
x:=x+5; writeln(x,a); End;
传结果 8,3 8
传值 8,3 3
举例
begin
Procedure P(x,y,z) …P(a+b,a,a)
初等类型数据采用确定“字长”,数组按列存放,边界对齐。
这样,可将过程活动单元(局部数据区)直接安排在 过程目标码之后,以便运行时访问。
9.3 Fortran静态存储分配(2)
数据区
返回地址 调用程序返回地址(调用恢复地址)
寄存器保护区 保存调用程序的寄存器运行环境
形式单元 形参
简单变量 数组 临时变量
P ->S ->Q =》R ->R
Program P; var a,x…
Top
R
procedure Q(b)
SP
var i…
R
procedure R(u,v)
动
var c,d…
态
begin… R… end {R} 链
Q
begin … R… end{Q} procedure S
计算机操作系统每章习题及答案
计算机操作系统每章习题及答案《操作系统》复习题第一章操作系统引论一、单项选择题1、操作系统是一种( B )。
A.应用软件B. 系统软件C.通用软件D. 工具软件2、操作系统是一组( C )。
A.文件管理程序B.中断处理程序C.资源管理程序D.设备管理程序3、现代操作系统的基本特征是( C )、资源共享和操作的异步性。
A.多道程序设计B. 中断处理C.程序的并发执行D. 实现分时与实时处理4、( D )不是操作系统关心的主要问题。
A. 管理计算机裸机B. 设计、提供用户程序与计算机硬件系统的界面C. 管理计算机系统资源D. 高级程序设计语言的编译器5、引入多道程序的目的在于( A )。
A. 充分利用CPU,减少CPU等待时间B. 提高实时响应速度C. 有利于代码共享,减少主、辅存信息交换量D. 充分利用存储器6、( A )没有多道程序设计的特点。
A. DOSB. UNIXC. WindowsD.OS/27、下列操作系统中,为分时系统的是( C )。
A. CP/MB. MS-DOSC. UNIXD. Windows NT8、在分时系统中,时间片一定,( B ),响应时间越长。
A.内存越多B.用户数越多C.后备队列越短D.用户数越少9、批处理系统的主要缺点是( B )。
A.CPU的利用率不高B.失去了交互性C.不具备并行性D.以上都不是10、在下列性质中,( D )不是分时系统的特征。
A. 交互性B. 同时性C. 及时性D. 独占性11、实时操作系统追求的目标是( C )。
A.高吞吐率B.充分利用内存C. 快速响应D. 减少系统开销12、CPU状态分为系统态和用户态,从用户态转换到系统态的唯一途径是( C )。
A. 运行进程修改程序状态字B. 中断屏蔽C. 系统调用D. 进程调度程序13、系统调用的目的是(A )。
A.请求系统服务B.终止系统服务C.申请系统资源D.释放系统资源14、系统调用是由操作系统提供的内部调用,它(B )。
操作系统第5章
黄志华制作 版权所有
第5章 存储管理 §5.4 页式管理
2 静态分页(地址转换) 内存的速度与CPU的速度是数量级的差距,如果真是这样处 理, CPU的速度毫无意义。这个问题要如何解决? 第一 在CPU和内存之间设置高速缓存,常称为Cache。 程序运行过程中总是把常用的部分先从内存装入到Cache 中,使得程序运行过程中绝大多数时候仅直接访问 Cache,只在Cache中没有所需内容时才从内存中调入到 Cache。 第二 设置专门的硬件保存请求表、页表等数据结构,并由 专门的硬件进行地址转换,使得地址转换能够快速完成。 因此,实现某个内存管理方法必须有硬件的支持。
第5章 存储管理 §5.1 存储管理的功能
1 虚拟存储器 物理内存是实际存在的存储器,虚拟存储器以物理内存为基础, 由操作系统支持,进程所拥有,其大小与物理内存的大小没有直接联 系。 2 地址变换 由于编译链接时无法确定程序会被装入到内存的什么位置上运 行,编译链接形成的可执行程序中所有的地址都是虚拟存储器中的相 对地址或称逻辑地址,不是实际的物理地址。进程运行时,必须由操 作系统转换为物理地址。
帧号 2 3 8
黄志华制作 版权所有
第5章 存储管理 §5.4 页式管理
2 静态分页(地址转换) 804857f: call 8048568 上面是一条指令的例子。为了执行这条指令需要做两次地址转 换,而每次地址转换需要以下步骤: 第一步:由逻辑地址求出页号和页内地址。(如果从内存取逻 辑地址,那么需要访问一次内存) 第二步:查找请求表找到该进程对应的页表。(如果请求表保 存在内存中,又需要访问一次内存) 第三步:查找页表得到对应的帧号。(如果页表保存在内存 中,又要访问一次内存) 第四步:计算物理地址 物理地址=页内地址+帧号*帧长(如果指令或数据仍然在内存 中,还得再次访问内存)
操作系统复习总结
第一章操作系统概述1.操作系统主要特征是什么?操作系统是控制和管理计算机的软、硬件资源,合理地组织计算机的工作流程,以方便用户使用的程序集合。
2.“操作系统是控制硬件的软件”这一说法确切吗?为什么?不正确,因为操作系统不仅仅是控制硬件,同时它还控制计算机的软件。
第二章进程与线程1.操作系统中为什么要引入进程的概念?为了实现并发进程之间的合作和协调,以及保证系统的安全,操作系统在进程管理方面要做哪些工作?①为了从变化角度动态地分析研究可以并发执行的程序,真实的反应系统的独立性、并发性、动态性和相互制约,操作系统中不得不引入进程的概念。
②为了防止操作系统及其关键的数据结构受到用户程序破坏,将处理机分为核心态和用户态。
对进程进行创建、撤销以及在某些进程状态之间的转换控制。
2.假设系统就绪队列中有10个进程,这10个进程轮换执行,每隔300ms轮换一次,CPU在进程切换时所花费的时间是10ms,试问系统化在进程切换上的开销占系统整个时间的比例是多少?就绪队列中有10个进程,这10个进程轮换执行,每隔进程的运行时间是300ms,切换另一个进程所花费的总时间是10ms,隐刺系统化在进程切换上的时间开销占系统整个时间的比例是:10//(300+10)=3.2%.3.试述线程的特点及其与进程之间的关系。
答:线程是进程内的一个相对独立的运行单元,是操作系统调度和分派的单位。
线程只拥有一点必不可少的资源(一组寄存器和栈),但可以和铜属于一个进程的其他线程共享进程拥有的资源。
关系:1>线程是进程的一部分,是进程内的一个实体;一个进程可以有多个线程,但至少必须有一个线程。
一个线程只能在一个进程的地址空间内活动;2>进程资源的拥有者,同一个进程的多个线程共享该进程占有的所有资源;3>处理机分配给进程,线程是系统的调度单位。
1.这种策略一方面照顾了短进程,一个进程如果在100ms运行完毕它将退出系统,更主要的是照顾了I/O量大的进程,进程因I/O进入阻塞队列,当I/O完成后它就进入了高优先级就绪队列,在高优先级就绪队列等待的进程总是优于低优先级就绪队列的进程。
Chapter-7-2000
(h)当最外层模块执行完,运行栈恢复到系
18
7.3.2 建造display区的规则
从i层模块进入(调用)j层模块,则: (1)若j=i+1 j i j i 内模块 or call 复制i层的display,然后增加一个指向i层模块记录基地址的指针
但是并不是所有数据空间大小都能在编译过程中确定
3
北京航空航天大学计算机科学与工程系
动态存储分配 在目标程序运行阶段 目标程序实现对存 运行阶段由目标程序 运行阶段 目标程序 储空间的 组织与管理,和为源程序中的 变量 分配存储的方法 特点
• 在目标程序运行时进行分配。 • 编译时要生成进行动态分配的目标指令。
北京航空航天大学计算机科学与工程系
16
数组F TEST1 AR4 J prev abp Ret addr(2) abp(1) AR2 AR1
F的模块 Prev abp
局部数据区
AR3
参数区 abp Display区
Ret addr(3) abp(3) abp(1) AR3 AR2 AR1
参数区
Display区
北京航空航天大学计算机科学与工程系
15
例:下面给出源程序的目标程序运行时,运行栈(数据区栈) 的跟踪情况
NAME AR1 Y X abp 局部数据区
AR2
X IND prev abp Ret addr(1) abp(1) AR1
局部数据区
参数区 Display区
abp
(a)进入模块1
(b)M1被调用
北京航空航天大学计算机科学与工程系
11
7.3.1 活动记录
一个典型的活动记录可以分为三部分:
局部数据区 参数区 display区 (1)局部数据区:
计算机四级网络工程师-操作系统原理-第5章内存管理
计算机四级网络工程师-操作系统原理-第5章内存管理计算机四级网络工程师-操作系统原理-第5章内存管理单选题可变分区管理方案,看内存分配表各类适应算法下次适应算法最优适应算法最坏适应算法首次适应算法,系统中剩余的最大空闲分区静态重定位中,从哪个单元获取操作数各类置换算法各类置换算法看内存分配情况表——实战最近最少使用页面置换算法(LRU)先进先出页面置换算法(FIFO)最近最不常用页面置换算法(LFU)最近未使用页面置换算法(NRU)涉及计算【真题讲解】页式管理存储第66题快表命中率花费us计算简单页式存储管理问最大有多少个页面问最大有多少字节问页表长度(页表项个数)写保护中断各个置换算法的缺页率(建议放弃这一题分,比较容易搞混,需要理解各个置换算法并画图表)LRU页面置换算法OPT最佳页面置换算法八进制的计算(先八进制转换成二进制再计算)虚拟页式存储管理(求偏移量题目)题目直接给二进制,直接进行数位数偏移题目直接给16进制,转换为二进制后进行数位数偏移虚拟页式的有效位、修改位、访问位、保护位、禁止位单页存放整数变量个数和循环代码计算缺页次数一般情况通解:两个循环次数相乘,除单页个数答案有整数×整数形式使用快表和不使用快表相比较,求平均访问时间降低x%需要直接记忆单选多选题需要直接记忆多选单选题可变分区管理方案,看内存分配表下次适应算法最优适应算法最坏适应算法首次适应算法,系统中剩余的最大空闲分区这种题目一定要学习画图,画出变化趋势和具体数值静态重定位中,从哪个单元获取操作数第28题:在操作系统的存储系统中,程序装入时采用静态重定位方法。
已知:第18号单元外有一条加法指令,该指令要求处第066号单外取得操作数1234。
假设存储管理为程学分配的内存区域是众第800号开始,则加法指令将从哪一个单元获取操作数:答案——866置换算法策略先进先出页面置换算法(FIFO)将驻留在内存中时间最长的一页调出最先装入内存的一页调出最近最少使用页面置换算法(LRU)最长时间未被使用过的页面距离现在最长时间没有被访问的页面最近最不常用页面置换算法(LFU)一段时间单页面被使用的次数多少选择一段确定的周期T内,使用次数最少最近未使用页面置换算法(NRU)在最近的一个【时钟滴答】中尽量置换一个没有被访问的和没有被修改过的页面理想页面置换算法(OPT)以后不再需要的、或者在最长时间以后才会用到的页面第二次机会页面置换算法检查进入内存时间最久页面的R位,如果是0,则置换该页;如果是1,就将R位清0,并把该页面放到链表的尾端,修改其进入时间【重点就是会放到链表尾端,画图表时注意】各类置换算法各类置换算法看内存分配情况表——实战最近最少使用页面置换算法(LRU)先进先出页面置换算法(FIFO)最近最不常用页面置换算法(LFU)最近未使用页面置换算法(NRU)涉及计算【真题讲解】页式管理存储第60题:在分区管理方法中,假设程序A自60K处开始存放,到124K为止。
操作系统第5章存储管理3虚拟存储
举例:某进程依次访问如下地址:
0100,0432,0101,0612,0102,0103, 0104,0101,0611,0102,0103,0104, 0101,0610,0102,0103,0104,0101, 0609,0102,0105。若页面大小为100, 上述访问串可简化为: 1,4,1,6,1,6,1,6,1,6,1
4 0 3
2 3 4 2 0 4
是 是 是 是 否 是 是 是 是 是 是 否 否
7 0 1 2 3 0 4
结果:缺页次数共10次。
次序
页 面 分 配 情 况 是否 缺页 换出 的页
7
0
1 1
2 2
0
3 3
0 0
4 4
2 2
3 3
0 0
3
2
0
7 7
0
7
1
0
2
1
3
2
0
3
4
0
2
4
3
2
是 是 是 是 否 是 是 是 是 是 是 否 否 7 0 1 2 3 0 4
4 0 3
是 是 是 是 否 是 是 是 是
7 0 1 2
次序
7
0
1
2
0
3
0
4
2
3
0
3
2
页 面 分 配 情 况
是否 缺页 换出 的页
1 2 0 7 7 0 1 7 0
3 0 2 3 1 2
4 0 3
2 4 0
是 是 是 是 否 是 是 是 是 是
7 0 1 2 3
次序
7
0
1
2
0
3
0
编译原理-课程教学设计方案
《编译原理》课程教学设计方案适用专业:计算机科学技术编制人:系部主任:审核人:编制日期:2014年4院15日目录一、《编译原理》课程整体教学设计方案 (1)(一)基本信息 (1)(二)课程设计 (1)(三)考核方案设计 (4)(四)教学组织形式 (5)(五)教学材料 (5)二、课程单元教学方案设计 (6)(一)教学内容1 (6)1、教案头 (6)2、教学过程设计 (6)(二)教学内容2 (7)1、教案头 (7)2、教学过程设计 (8)(三)教学内容3 (10)1、教案头 (10)2、教学过程设计 (10)《编译原理》课程教学设计方案一、《编译原理》课程整体教学设计方案(一)基本信息课程名称:编译原理学时:72学时课程类型:专业技能课学分:3学分所属系部:计算机科学系授课对象:二年级学生先修课程:《数据结构》、《离散数学》后续课程:《JAVA程序设计》课程团队负责人及成员:孔玉静(二)课程设计1、课程目标设计(1)能力目标:培养学生掌握构造编译程序的基本原理与设计方法,为培养计算机语言与大型应用程序的开发人才打下良好的基础。
(2)知识目标:通过本课程学习,使学生掌握编译程序的一般构造原理,包括语言基础知识、词法分析程序设计原理和构造方法。
各种语法分析技术和中间代码生成符号表的构造、代码优化、并行编译技术常识及运行时存储空间的组织等基本方法和主要实现技术。
2、课程教学内容设计3、能力训练项目设计4、教学进度表设计5、教学方法与教学手段设计课堂教学:多媒体教学进行教学,使学生能够很快掌握课程的主要知识和解决问题的方法。
辅导和答疑:以习题课对课程中的重要概念和典型问题的解决方法进行总结和深入讨论,巩固和加深课堂内学到的知识。
采用电子邮件方式直接与教师联系进行答疑。
自学与练习:除读懂教科书中所讲内容外,还需大量做题。
其目的是要通过做题弄懂、加深对概念的理解,提高解决问题的能力。
为此,安排一定的实验上机学时。
(第5章操作系统的资源管理)习题五答案
(第5章操作系统的资源管理)习题五答案习题五参考答案(P132)5-1什么是虚拟资源?对主存储器⽽⾔,⽤户使⽤的虚拟资源是什么?答:虚拟资源是⽤户使⽤的逻辑资源,是操作系统将物理资源改造后,呈现给⽤户的可供使⽤的资源。
对主存储器⽽⾔,⽤户使⽤的虚拟资源是虚拟存储器。
提供给⽤户使⽤虚拟存储器的⼿段是逻辑地址空间,⽤户在编程时使⽤的是逻辑地址,空间⼤⼩不受限制(也就是说逻辑地址空间可以⽐物理地址空间⼩也可以⽐物理地址空间⼤)。
5-2常⽤的资源分配策略有哪两种?在每⼀种策略中,资源请求队列的排序原则是什么?答:常⽤的资源分配策略有先来先服务策略和优先调度策略。
在先来先服务策略中资源请求队列的排序原则是按照提出请求的先后次序排序;在优先调度策略中资源请求队列的排序原则是按照提出请求的紧迫程度(即优先级)从⾼到底排序。
5-3什么是移臂调度?什么是旋转调度?答:移臂调度是指在满⾜⼀个磁盘请求时,总是选取与当前移臂前进⽅向上最近的那个请求,使移臂距离最短。
旋转调度是指在满⾜⼀个磁盘请求时,总是选取与当前读写磁头旋转⽅向上最近的那个请求,使旋转圈数最少。
5-4什么是死锁?试举例说明。
答:⼀组进程中,每个进程都⽆限等待被该组进程中另⼀进程所占有的资源,因⽽永远⽆法得到资源,这种现象称为进程死锁,这⼀组进程就称为死锁进程。
设某系统拥有⼀台输⼊机和⼀台打印机,并为进程P1和P2所共享。
在t1时刻,进程P1和P2分别占⽤了输⼊机和打印机。
在t2(t2 > t1)时刻,进程P1请求打印机,P1将被阻塞,进⼊等待打印机的等待队列中,等待P2释放打印机。
在t3(t3 > t2)时刻,进程P2请求输⼊机,P2将被阻塞,进⼊等待输⼊机的等待队列中,等待P1释放输⼊机。
此时,P1和P2进⼊了永久的互等状态,即P1和P2成为死锁进程,出现了死锁现象。
5-5产⽣死锁的原因是什么?产⽣死锁的必要条件是什么?答:产⽣死锁的原因主要有:(1)竞争有限的系统资源。
操作系统复习(填空题)
第一章操作系统引论1.计算机配置了操作系统后不仅可以提高效率而且_____________。
2.操作系统的主要设计目标是__________和__________。
3.在操作系统中,不可中断执行的操作称为。
4.用户与操作系统之间的接口主要分为和两类。
5.操作系统的管理功能可分成五大部分,即:、、、和。
6.操作系统的两个最主要的特征是和。
(程序的并发性,资源的共享性)7.实时操作系统有如下两个基本特征:和。
(及时性,可靠性)8.如果操作系统具有很强的交互性,它可供多个用户使用,但时间响应不太及时,则属于________类型。
如果操作系统可靠,时间响应及时但仅有简单的交互能力,则属于类型。
如果操作系统在用户提交作业后不提供交互能力,只提供作业流程的自动化,则属于________类型。
9.操作系统的主要性能参数中是指单位时间内系统处理的作业量。
第二章进程管理1.如果信号量的当前值为-3,则表示系统中在该信号量上有个等待进程。
2.为了感知进程的存在并对它进行控制和管理,系统设置了。
3.在操作系统中,两个或多个事件在同一时间间隔内发生,这是指程序的性。
4.多道程序设计能充分发挥与之间的并行工作能力。
5.进程队列是把链接在一起形成的。
6.一个结束等待状态的进程,必须先变成状态,然后才可能运行。
7.进程运行满一个时间片后让出处理器,它的状态应变为状态。
8.进程是一个程序对某个数据集的。
9.在有m个进程的系统中出现死锁时,死锁进程的个数k应满足的条件是。
10.进程由两个主要部分组成,即和。
程序通常由和组成。
11.设有n个进程使用同一个共享变量(它们都有各自的相关临界区),如果最多允许m(m < n)个进程同时进入临界区,则信号量的变化范围是。
12.操作系统在控制和管理进程过程中,进程存在的唯一标志涉及到的一个重要数据结构是。
13.正在运行的进程,因某种原因而暂时停止运行,等待某个事件的发生,该进程将转变为___________状态。
操作系统学习资料-第五章 存储管理习题
第五章存储管理一. 选择最合适的答案1.分页存储管理的存储保护是通过( )完成的.A.页表(页表寄存器)B.快表C.存储键D.索引动态重定2.把作业地址空间中使用的逻辑地址变成内存中物理地址称为()。
A、加载B、重定位C、物理化D、逻辑化3.在可变分区存储管理中的紧凑技术可以()。
A.集中空闲区B.增加主存容量C.缩短访问时间D.加速地址转换4.在存储管理中,采用覆盖与交换技术的目的是( )。
A.减少程序占用的主存空间B.物理上扩充主存容量C.提高CPU效率D.代码在主存中共享5.存储管理方法中,( )中用户可采用覆盖技术。
A.单一连续区 B. 可变分区存储管理C.段式存储管理 D. 段页式存储管理6.把逻辑地址转换成物理地址称为()。
A.地址分配B.地址映射C.地址保护D.地址越界7.在内存分配的“最佳适应法”中,空闲块是按()。
A.始地址从小到大排序B.始地址从大到小排序C.块的大小从小到大排序D.块的大小从大到小排序8.下面最有可能使得高地址空间成为大的空闲区的分配算法是()。
A.首次适应法B.最佳适应法C.最坏适应法D.循环首次适应法9.硬盘容量1G,内存容量为1024k,那么虚拟存储器最大实际容量可能是( ) 。
A.1024KB.1024MC.10GD.10G+1M10.用空白链记录内存空白块的主要缺点是()。
A.链指针占用了大量的空间B.分配空间时可能需要一定的拉链时间C.不好实现“首次适应法”D.不好实现“最佳适应法”11.一般而言计算机中()容量(个数)最多.A.ROMB.RAMC.CPUD.虚拟存储器12.分区管理和分页管理的主要区别是()。
A.分区管理中的块比分页管理中的页要小B.分页管理有地址映射而分区管理没有C.分页管理有存储保护而分区管理没有D.分区管理要求一道程序存放在连续的空间内而分页管理没有这种要求。
13.静态重定位的时机是()。
A.程序编译时B.程序链接时C.程序装入时D.程序运行时14.通常所说的“存储保护”的基本含义是()A.防止存储器硬件受损B.防止程序在内存丢失C.防止程序间相互越界访问D.防止程序被人偷看15.能够装入内存任何位置的代码程序必须是( )。
操作系统填空、名词解释、简答题题库完整
填空题1.操作系统的特征是(并发),(共享)和(异步性)还有(虚拟).2.按照用户界面的使用环境和功能特征的不同,一般可以把操作系统分为三种基本类型,即:(批处理系统),(分时系统)和实时系统.3. 软件系统分为系统软件,(支撑软件)和(应用软件).4.多数计算机系统将处理器的工作状态划分为(管态)和目态.后者一般指用户程序运行时的状态,又称为普通态或(用户态).5. 存储器一般分成高速缓冲器,(内存)和(外存)三个层次,其中高速缓冲器是造价最高,存取速度最快.6.文件的物理结构有:顺序结构,(链接结构)和(索引结构).8. 在单CPU系统中有n(n>1)个进程,在任一时刻处于就绪的进程最多是(n-1)个,最少是(0)个.9. 系统为每一台设备确定一个编号,以便区分和识别,这个确定的编号称为设备的(绝对)号.由用户在程序中定义的设备编号称为设备的(相对)号.10. 一个作业可划分成若干个(相对独立)的部分,每个部分称为一个(作业步).11. 在批处理兼分时的系统中,往往由分时系统控制的作业称为(前台)作业,而由批处理系统控制的作业称为(后台)作业.12. 操作系统为用户提供两种类型的使用接口,它们是(操作员)接口和(程序员) 接口.13. 操作系统中,进程可以分为(系统)进程和(用户)进程两类.15. 除了新建状态与撤销状态,进程的基本状态有(运行)、(就绪)、(阻塞)。
16. 在响应比最高者优先的作业调度算法中,当各个作业等待时间相同时,(计算时间短)分母的作业将得到优先调度;当各个作业要求运行的时间相同时, (等待时间长)分子的作业得到优先调度.17. 当一个进程独占处理器顺序执行时,具有两个特性: (封闭)性和(可再现性).18. Linux的shell有两层含义,一是指由(shell命令)组成的Shell 命令语言;二是指(该命令的解释)程序.19. 操作系统的主要设计目标是(方便用户使用)和(资源利用率高).20. 当一个进程完成了特定的任务后,系统收回这个进程所占的(资源)和取消该进程的(进程控制块PCB),就撤消了该进程.21. 每个索引文件都必须有一张(索引)表,其中每个登记项用来指出一个逻辑记录的(存放位置或指针或首地址).22. 实现SPOOL系统时必须在磁盘上辟出称为(输入#)和(输出#)的专门区域,以存放作业信息和作业执行结果.23. 一个理想的作业调度算法应该是既能(提高系统效率)又能使进入系统的作业(周转时间短).24. 死锁的四个必要条件是(互斥使用资源),(占用并等待资源),不可抢夺资源和循环等待资源.25. 操作系统一般为用户提供了三种界面,它们是(命令界面),(图形界面)和系统调用界面.26. 进程间相互合作的关系是(同步)关系,而对资源争用的关系是(互斥)关系.若干进程使用同一临界资源时必须互斥执行.27. 处理机调度可分为三级,它们是作业调度,(进程调度)和CPU交换调度;在一般操作系统中,必须具备的调度是(进程调度).28. 一般说来,用户程序中所使用的地址是逻辑地址,而内存中各存储单元的地址是(物理地址或绝对地址);将前者转变为后者的过程称作(重定位).29. 在段页式存储管理系统中,面向(用户)的地址空间是段式划分,面向(物理实现)的地址空间是页式划分.30. 在Linux系统中,基本的文件类型分为(普通)文件,目录文件和文件, 所有的I/O设备按其物理特性分为(字符)设备和块设备.33. 操作系统的设备管理应具备的主要功能是(监视设备状态),(进行设备分配),完成I/O操作和缓冲管理与地址转换.34. 对信号量S每执行一次P操作,则信号量S的值就减1.当S的值小于0时,执行P操作的进程的状态就置为阻塞态,把相应的PCB连入该信号量队列的(末尾),并且该进程放弃处理机,由(进程调度程序)调度合适进程.35. 把逻辑地址转变为内存的物理地址的过程称作重定位,它分为(静态重定位)和(动态重定位)两种形式,在现代操作系统中都采用动态重定位形式来实现这种地址转换.37. SPOOLing的中文含义为(同时外围联机操作)或(假脱机操作)。
第五章 存储管理(3)习题
第五章 内存管理(3)一、单项选择题1.虚拟存储技术是 。
A .补充内存物理空问的技术B .补充相对地址空间的技术C .扩充外存空问的技术D .扩充输入输出缓冲区的技术 2.以下不属于虚拟内存特征的是 。
A .一次性B .多次性C .对换性D .离散性 3.虚拟内存的基础是 。
A .局部性理论B .代码的顺序执行C .变量的连续访问D .指令局部性4.实施虚拟存储器管理的依据是程序的 。
A .局部性原 B .动态性原理 C .并发性原 D .一致性原理5.实现虚拟内存最主要的技术是 。
A .整体覆盖 B .整体对换 C .部分对换 D .多道程序设计6.虚拟存储器是 。
A .可以容纳总和超过主存容量的多个作业同时运行的一个地址空间B .可提高计算机运算速度的设备C .容量扩大了的主存D .实际上不存在的存储器7.若处理器有32位地址,则它的虚拟地址空间为 字节。
A .2GB B .4GB C .100KB D .640KB8.设主存容量为1MB ,外存容量为400MB ,计算机系统的地址寄存器有24位,那么虚存的最大容量是 。
A .1MB B .401MBC .1MB+242 B D .242 B9.在一个计算机系统中,其虚拟存储器的最大容量是由 E 确定的,其实际容量是由 D 确定的。
A .计算机字长B .内存容量C .硬盘容量D .内存和硬盘容量之和E .计算机的地址结构10.以时间换空间的技术是 。
A .分时技术B .虚拟技术C .并发技术D .缓冲技术 11.有关虚拟存储器的叙述中正确的是——。
A .要求作业运行前,必须全部装入内存,且在运行中必须常驻内存B .要求作业运行前,不必全部装入内存,且在运行中不必常驻内存C .要求作业运行前,不必全部装入内存,但在运行中必须常驻内存D .要求作业运行前,必须全部装入内存,且在运行中不必常驻内存 12.在请求分页系统中,分页是由 实现的。
第5章计算机操作系统答案 存储管理
第五章存储管理一、选择题:1.将作业地址空间中的逻辑地址转换为内存中的物理地址的过程称为()。
A.重定位B.逻辑变换C.地址交换D.进程创建2.虚存的基础是()。
A.局部性理论B.程序执行时对内存访问不均匀C.指令局部性D.变量的连续访问3.实现虚拟存储器的目的是()。
A.实现存储保护B.实现信息共享C.扩充辅存容量D.扩充主存容量4.在地址映射方式中,静态重定位具有的特点是()。
A.可以把一个作业分配在一个不连续的存储区域中B.可以实现不同作业主存信息的共享C.要求把一个作业分配在一个连续的存储区域中D.很容易实现主存的扩充5.在地址映射方式中,动态重定位具有的特点是()。
A.很难实现主存的扩充,可采用覆盖技术来实现B.地址在执行过程中是可以改变的C.很难实现不同作业主存信息的共享D.非常简单,任何计算机,任何操作系统都可以实现6.可重定位内存分区分配目的为()。
A.解决碎片问题B.便于多作业共享内存C.回收空白区方便D.摆脱用户干预7.实现虚存最主要的技术是()。
A.整体覆盖B.整体对换C.部分对换D.多道程序设计8.动态重定位是在作业的()中进行的。
A.编译过程B.装入过程C.修改过程D.执行过程9.在下面关于虚拟存储器的叙述中,正确的是()。
A.要求程序运行前必须全部装入内存且在运行过程中一直驻留在内存B.要求程序运行前不必全部装入内存且在运行过程中不必一直驻留在内存C.要求程序运行前不必全部装入内存且在运行过程中必须一直驻留在内存D.要求程序运行前必须全部装入内存且在运行过程中不必一直驻留在内存10.虚存的可行性的基础是()A.程序执行的离散性B.程序执行的顺序性C.程序执行的局部性D.程序执行的并发性11.在存储管理中,采用覆盖与交换技术的目的是()。
A.减少程序占用的主存空间B.物理上扩充主存容量C.提高CPU效率D.代码在主存中共享12在内存分配的“最佳适应法”中,空闲块是按()。
存储管理
5.1.2 程序的运行过程
在多道程序环境下,要使 程序运行,必须先为之创 建进程。而创建进程的第 一件事,便是将程序和数 据装入内存。 如何将一个用户源程序变 为一个可在内存中执行的 程序,简单的说,要经过 编辑、编译、链接、装入 和运行等几个阶段。
用户 编辑程序 如:vi 编辑阶段 源文件 如:file1.c
5.1.2 程序的运行过程
5. 运行阶段
在运行阶段,进程调度程序按照某种策略选中用户 程序,给其分配CPU使之运行,完成用户提交的任 务。运行完毕后,系统释放其占有的内存空间。
5.1.3 存储管理的任务和功能
存储管理的主要任务是:
(1) 支持多道程序的并发执行,使多道程序能共享 存储资源,在互不干扰的环境中并发执行。 (2) 方便用户,使用户减少甚至摆脱对存储器的管 理,使用户从存储器的分配、保护和共享等繁琐事 物中解脱出来。 (3) 提高存储器的利用率和系统吞吐量。 (4) 从逻辑上扩充内存空间,支持大程序能在小的 内存空间运行或允许更多的进程并发执行。
(2) 动态地址重定位
动态地址重定位是指在程序执行过程中,CPU在访 问内存之前,将要访问的程序或数据地址转换为内 存地址。 地址重定位机构需要一个(或多个)基地址寄存器BR 和一个(或多个)程序逻辑地址寄存器VR。指令或数 据的内存地址MA与逻辑地址的关系为: MA=(BR)+ (VR)
5.1.3 存储管理的任务和功能
(2) 动态地址重定位
动态地址重定位具体过程如下:
1) 初始化基地址寄存器BR,逻辑地址寄存器VR。 2) 将程序段装入内存,且将其占用的内存区首地址送到BR中。例如, 在图5-4中,(BR)=4000。 3) 在程序执行过程中,将所要访问的逻辑地址送入VR中,例如,在图 5-4中执行LOAD 1,400语句时,将所要访问的逻辑地址400放入VR中。 4) 地址变换机构把VR和BR的内容相加,得到实际访问的物理地址。
操作系统原理第五章 存储管理习题
5.3 习题5.3.1选择最合适的答案1.分页存储管理的存储保护是通过( )完成的.A.页表(页表寄存器)B.快表C.存储键D.索引动态重定2.把作业地址空间中使用的逻辑地址变成内存中物理地址称为()。
A、加载B、重定位C、物理化D、逻辑化3.在可变分区存储管理中的紧凑技术可以()。
A.集中空闲区B.增加主存容量C.缩短访问时间D.加速地址转换4.在存储管理中,采用覆盖与交换技术的目的是( )。
A.减少程序占用的主存空间B.物理上扩充主存容量C.提高CPU效率D.代码在主存中共享5.存储管理方法中,( )中用户可采用覆盖技术。
A.单一连续区 B. 可变分区存储管理C.段式存储管理 D. 段页式存储管理6.把逻辑地址转换成物理地址称为()。
A.地址分配B.地址映射C.地址保护D.地址越界7.在内存分配的“最佳适应法”中,空闲块是按()。
A.始地址从小到大排序B.始地址从大到小排序C.块的大小从小到大排序D.块的大小从大到小排序8.下面最有可能使得高地址空间成为大的空闲区的分配算法是()。
A.首次适应法B.最佳适应法C.最坏适应法D.循环首次适应法9.硬盘容量1G,内存容量为1024k,那么虚拟存储器最大实际容量可能是( ) 。
A.1024KB.1024MC.10GD.10G+1M10.用空白链记录内存空白块的主要缺点是()。
A.链指针占用了大量的空间B.分配空间时可能需要一定的拉链时间C.不好实现“首次适应法”D.不好实现“最佳适应法”11.一般而言计算机中()容量(个数)最多.A.ROMB.RAMC.CPUD.虚拟存储器12.分区管理和分页管理的主要区别是()。
A.分区管理中的块比分页管理中的页要小B.分页管理有地址映射而分区管理没有C.分页管理有存储保护而分区管理没有D.分区管理要求一道程序存放在连续的空间内而分页管理没有这种要求。
13.静态重定位的时机是()。
A.程序编译时B.程序链接时C.程序装入时D.程序运行时14.通常所说的“存储保护”的基本含义是()A.防止存储器硬件受损B.防止程序在内存丢失C.防止程序间相互越界访问D.防止程序被人偷看15.能够装入内存任何位置的代码程序必须是( )。
数据科学与大数据技术导论-第5章-大数据的存储
5.1.2 NoSQL数据库
4. NoSQL数据库的存储方式 在NoSQL数据库中,最常用的存储方式有键值式存储、文档式存储、列式存储、 图形式存储等,与关系型数据库中仅有一种存储方式不同,在一个NoSQL数据库可 以存在多种存储方式。
键值式存储
文档式存储
列式存储
图形式存储
5.1.2 NoSQL数据库
5.1.1 分布式文件系统
(2)通用并行文件系统 通用并行文件系统(General Parallel File System,GPFS)是IBM公司的第一个 共享文件系统。GPFS的磁盘数据结构可以支持大容量的文件系统和大文件,通过采 用分片存储、较大的文件系统块(Block)和数据预读等方法获得较高的数据吞吐率; 采用扩展哈希(Extensible Hashing)技术来支持含有大量文件和子目录的大目录,提 高文件的查找和检索效率。 GPFS采用不同粒度的分布式锁来解决系统中并发访问和数据同步的问题 。 GPFS每个节点都有各自独立的日志,且单个节点失效时,系统中的其他节点可以代 替失效节点检查文件系统日志,进行元数据恢复操作。GPFS支持在线动态增减存储 设备,能够在线重新平衡系统中的数据,能够有效支持高端应用连续作业的需要。
5.1.1 分布式文件系统
(3)谷歌文件系统 谷歌文件系统(Google File System,GFS)是谷歌为了存储海量搜索数据而开 发实现的分布式文件系统,它由一个Master节点和大量的ChunkServer节点构成。 GFS中心是一个Master节点,根据文件索引找寻数据块,系统保证每个Master节 点都有相应的复制品,以便于在其出现问题时进行切换。GFS把文件分成64MB的数 据块,减小了元数据的大小,使Master节点能够方便地将元数据放置在内存中以提高 访问效率。在Chunk层,GFS将节点失效视为常态,因此将数据块复制到集群中不同 的ChunkServer节点上,默认每个数据块保存3个副本。
编译原理运行时存储空间组织
(12) procedure quicksort(m, n:integer);
(13) var i:integer;
(14) begin
(15) if (n>m) then begin
(16) i:=partition(m, n );
(17) (18) (19)
quicksort(m, i-1 ); quicksort(i+1, n ) end;
对任何局部变量X 的引用可表示为变 址访问:
dx[SP] dx: 变量X相对于 活动记录起点的 地址,在编译时可 确定。
每个过程的活动记录内容(嵌套语言)
TOP→ 临时单元 内情向量 局部变量 形式单元
2 静态链 1 动态链 SP→ 0 返回地址
q 连接数据
Ø 返回地址 Ø 动 态 链 : 指 向 调 用 该过程前的最新活动 记录地址的指针。 Ø 静 态 链 : 指 向 静 态 直接外层最新活动记 录地址的指针,用来 访问非局部数据。
v 一个目标程序运行所需的存储空间包括:
l 存放目标代码的空间 l 存放数据项目的空间 l 存放程序运行的控制或连接数据所需单元(控制
栈)
v 运行时存储空间划分:
目标代码(Code) 静态数据
(Static Data) 栈(Stack) ↓ ↑ 堆(Heap)
9.2.2 活动记录
v 假定语言的特点为:允许过程递归调用、允许过程含 有可变数组,但过程定义不允许嵌套,如C语言。
l 过程是否允许递归? l 当控制从一个过程的活动返回时,对局部名
称的值如何处理? l 过程是否允许引用非局部名称? l 过程调用时如何传递参数;过程是否可以做
为参数被传递和做为结果被返回? l 存储空间可否在程序控制下进行动态分配? l 存储空间是否必须显式地释放?
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.2 全局栈式存储分配
• 例 C程序的外部变量、静态局部变量以及程序中出现的常量都可以 静态分配
• 声明在函数外面
• 外部变量 • 静态外部变量
—— 静态分配 —— 静态分配
• 声明在函数里面
• 静态局部变量 • 自动变量
—— 静态分配 —— 不能静态分配
5.2 全局栈式存储分配
char c1;
0
long i;
4
char c2; 1
char c2; 8
long i; 4
double f;
16
double f; 8
}a;
}b;
对齐:char : 1, long : 4, double : 8
5.1 局部存储分配
• 例 在x86/Linux机器的结果和SPARC/Solaris工作站不一样,是20和 16。
返回值 参数 控制链 访问链 保存的机器状态 局部数据 临时数据
5.1 局部存储分配
5.1.4 局部数据的布局 • 字节是可编址内存的最小单位 • 变量所需的存储空间可以根据其类型而静态确定 • 一个过程所声明的局部变量按它们声明时出现的次序,在活动记录的
局部数据域中依次分配空间 • 局部数据的地址可以用相对于活动记录的某个位置的地址来表示 • 数据的存储布局还有一个对齐问题
第5章 运行时存储空间的组织和管理
术语
• 过程的活动 过程的一次执行称为过程的一次活动
• 活动记录 过程的活动需要可执行代码和存放所需信息的存储空间,所需的局部信息的存储 空间称为活动记录
本章内容 • 讨论一个活动记录中的数据布局 • 程序执行过程中,所有活动记录的组织方式
第5章 运行时存储空间的组织和管理
double f;
}a;
}b;
对齐:char : 1, long : 4, double : 8
5.1 局部存储分配
• 例 在SPARC/Solaris工作站上,下面两个结构体的size分别是24和16, 为什么不一样?
typedef struct _a{
typedef struct _b{
char c1; 0
typedef struct _a{
typedef struct _b{
char c1; 0
char c1;
0
long i;
4
char c2; 1
char c2; 8
long i; 4
double f;
12
double f; 8
}a;
}b;
对齐:char : 1, long : 4, double : 4
B0 B2 B0 B1 B1 B3
B2 B3
a0 b0 b1 a2, b3
重叠分配存储单元
5.2 全局栈式存储分配
本节介绍 • 介绍程序运行时所需的各个活动记录在存储空间的组织 • 描述过程的目标代码怎样访问绑定到局部名字的存储单元 • 介绍三种分配策略
• 静态分配策略 • 栈式分配策略 • 堆式分配策略
2、环境和状态 • 环境把名字映射到左值(存储单元),而状态把左值映射到右值(即名
字到值有两步映射) • 赋值改变状态,但不改变环境 • 过程调用改变环境 • 如果环境将名字x映射到存储单元s,则说 x 被绑定到s
环境
状态
名字
存储单元
值
5.1 局部存储分配
3、静态概念和动态概念的对应
静态概念 过程的定义
动态对应 过程的活动
5.1 局部存储分配
3、静态概念和动态概念的对应
静态概念 过程的定义 名字的声明
动态对应 过程的活动 名字的绑定
5.1 局部存储分配
3、静态概念和动态概念的对应
静态概念 过程的定义 名字的声明 声明的作用域
动态对应 过程的活动 名字的绑定 绑定的生存期
5.1 局部存储分配
5.1.3 活动记录 活动记录的常见布局
5.1 局部存储分配
• 例 在SPARC/Solaris工作站上,下面两个结构体的size分别是24和16, 为什么不一样?
typedef struct _a{
typedef struct _b{
char c1;
char ;
long i;
char c2;
char c2;
long i;
double f;
5.1.1 过程 语言概念:
过程定义、过程调用、形式参数、实在参数、活动的生存期
5.1 局部存储分配
5.1.2 名字的作用域和绑定 1、名字的作用域 • 一个声明起作用的程序部分称为该声明的作用域 • 即使一个名字在程序中只声明一次,该名字在程序运行时也可能表示
不同的数据对象
5.1 局部存储分配
5.2 全局栈式存储分配
5.2.1 运行时内存的划分
代码 静态数据
堆
栈
5.2 全局栈式存储分配
1、静态分配 • 名字在程序被编译时绑定到存储单元,不需要运行时的任何支持 • 绑定的生存期是程序的整个运行期间
5.2 全局栈式存储分配
2、静态分配给语言带来限制 • 递归过程不被允许 • 数据对象的长度和它在内存中位置的限制,必须是在编译时可以知道
• 影响存储分配策略的主要语言特征
• 过程能否递归 • 当控制从过程的活动返回时,局部变量的值是否要保留 • 过程能否访问非局部变量 • 过程调用的参数传递方式 • 过程能否作为参数被传递 • 过程能否作为结果值传递 • 存储块能否在程序控制下动态地分配 • 存储块是否必须显式地回收
5.1 局部存储分配
5.2.2 活动树和运行栈 1、活动树
• 用树来描绘控制进入和离开活动的次序
m
r
q(1,9)
p(1,9) q(1,3)
5.1 局部存储分配
5.1.5 程序块 • 本身含有局部变量声明的语句 • 可以嵌套 • 作用域按最接近的嵌套规则给出 • 并列程序块不会同时活跃 • 并列程序块的变量可以重叠分配
5.1 局部存储分配
main( ) / 例 / { / begin of B0 /
int a = 0; int b = 0; { / begin of B1 /
int b = 1; {/ begin of B2 /
int a = 2; }/ end of B2 / {/ begin of B3 /
int b = 3; }/ end of B3 / }/ end of B1 / }/ end of B0 /
声 明 作用域
int a = 0; int b = 0; int b = 1; int a = 2; int b = 3;