第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表达式和局部变量整理丨尼克本文档信息来自于网络,如您发现内容不准确或不完善,欢迎您联系我修正;如您发现内容涉嫌侵权,请与我们联系,我们将按照相关法律规定及时处理。

编译原理第九章 运行时存储空间组织

编译原理第九章  运行时存储空间组织
• 简单栈区(可以带递归,但不可以嵌套定义) • 复杂栈区(可以嵌套定义, pascal)
– 堆区(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章 存储管理 §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

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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;
相关文档
最新文档