预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共66页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第4讲存储器管理存储器的层次源程序:用高级语言或汇编语言编写的程序 编辑:创建源文件(文本)..asm.c;.cpp;.pas 编译:生成目标文件(能被处理机识别的二进制代码):.o、.obj 连接:生成可执行文件.exe;将编译或汇编后得到的一组目标模块及所需库函数装配成一个完整的模块; 装入:完成重定位,装入内存; 相对地址/逻辑地址绝对地址/物理地址: 重定位:逻辑地址物理地址 运行:建立进程并执行,得到运行结果.程序必须装入内存后才能运行,装入程序需要根据内存的使用情况和分配策略,将模块放入到内存中,需要执行重定位。 逻辑地址:用户程序经编译之后的每个目标模块都以0为基地址顺序编址,也称为相对地址; 绝对地址:内存中各存储单元地址从统一的基地址顺序编址,也称为绝对地址;逻辑地址空间:程序中逻辑地址组成的地址范围; 物理地址空间:由内存中一系列存储单元所限定的地址范围;内存空间的编址从统一的基址0开始,为线性的一维地址空间,简称物理空间或绝对空间; 重定位:程序和数据装入内存时需对目标程序中的地址进行修改,将逻辑地址转换为物理地址的过程称为重定位。 静态重定位和动态重定位静态重定位:在目标程序装入内存时,由装入程序对目标程序中的指令和数据的地址进行修改,即将程序的逻辑地址全部转换为实际的物理地址,装入操作要求一次性完成; 优点:无需增加硬件地址转换机构,便于实现程序的静态连接; 缺点: 存储空间为连续地址,且不可移动; 各进程很难共享内存中同一程序的副本;在程序执行期间每次访问内存前进行重定位,地址变换依靠硬件地址机构实现,优点如下: 程序占用内存空间动态可变,不必连续存放在一起; 容易实现多个进程对同一程序副本的共享; 缺点:需附加的硬件地址变换机构,增加成本,且实现算法复杂;分区管理 分区法 固定分区法 动态(可变)分区法 可重定位分区法 对换技术 页式管理 段式管理 段页式管理分区法:固定分区法/动态分区法(可变分区)。 固定分区法: 分区的个数固定不变; 各分区大小也固定不变; 分区大小可以不同; 每个分区只可装入一道作业。 缺点:管理方式简单,内存空间利用率低;特征:各分区在相应作业要进入内存时才建立,使其大小恰好适应作业的大小。 空闲分区表法:空闲分区链法:使用链指针将所有的空闲分区进行链接作业固定分区和动态分区法缺点:须将一个系统程序或用户程序装入到一个连续的内存空间; 内存碎片:内存中容量太小,无法被利用的小分区 紧缩技术:移动某些已分配的分区,合并空闲分区,也称为拼凑 实现:需硬件地址寄存器:基址寄存器和限长寄存器 缺点:可解决内存碎片,但需耗费大量的CPU时间; 方法:从中间向两端紧缩,各作业按地址大小分别向两端靠拢,使空闲空间保留在内存的中间部位.可重定位分区的紧缩过程图交换技术,早期分时系统采用的基本内存管理方式,主要用于单用户系统; 基本思想: 除操作系统内存空间外,内存只保留一道用户作业,其它作业都放到外存上;每次只调入一个作业进入内存运行;运行完毕后转存到外存上; 从后备作业队列选取作业调入内存并运行; 功能:利用外存解决内存不足问题,但效率低; 多道程序环境也可采用对换技术,内存中可保留多道进程,当内存空间不足以容纳要求进入内存的进程时,可实现对换。如Unix系统;1、虚拟存储器的概念 原因: 作业在执行前要全部装入内存,会造成内存的浪费; 程序中含有大量的不会被执行的代码,如对不常见错误的处理代码等; 一般为数组、队列、表格等数据结构分配的内存空间要大于实际需要; 一个程序的某些任选和特殊性能很少被利用; 虚拟存储器的空间受到两个方面的限制: 指令中的地址字长; 外存容量(硬盘空间的限制)(此外还有传输速度,使用频率等物理因素的限制);部分装入程序和数据的优点: 用户编写程序时可不必考虑内存容量的限制;只要按照实际问题的需要来确定合适的算法和数据结构,从而简化了程序设计的任务; 每个作业只有一部分装入内存,因此在一定容量的内存中可同时装入多个作业,增加CPU利用率和系统吞吐量; 实现基础: 二级存储结构:将用户地址空间和实际存储空间区分开; 动态地址转换机构(DAT):在程序运行时将逻辑地址转换成物理地址,实现动态重定位;虚拟扩充:逻辑上扩充内存容量,即用户编程时所用到的地址空间可以远大于实际内存的容量; 部分装入:每个作业不是一次性装入内存,而是分成若干部分,作业要执行时,只需将当前运行部分程序和数据装入内存,在以后的运行过程中采用对换技术进行换入和换出; 离散分配:作业装入内存的程序和数据不一定占用连续的地址空间,而是采用“见逢插针”的方法; 多次对换:进程在运行期间,所需的全部程序和数据分成多次调入内存,当需使用时可换入到内存中。逻辑空间分页:将一个进程的逻辑地址划分为若干