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

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

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

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

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

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

第4章存储管理4.1概述4.1.1存储体系 存储器的功能是保存指令和数据,它的发展方向是高速、大容量和小体积,诸如内存在访问速度方面的发展有DRAM、SDRAM、SRAM等技术;而磁盘技术的发展方向主要在大容量方面,比如接口标准、存储密度等。存储组织的功能是在存储技术和CPU寻址技术许可的范围内组织合理的存储结构,其依据是访问速度的匹配关系、容量要求和价格。常见的存储结构有两种:“寄存器—内存——外存”结构和“寄存器—快速缓存—内存—外存”结构。 图4.1所示的是“寄存器—快速缓存—内存—外存”结构。 从源程序到程序执行地址空间的概念4.1.2地址重定位 可执行文件的建立过程是:源程序→编译→目标模块(多个目标模块或程序库)→链接→可执行文件。当程序执行时由操作系统装入内存而成为进程。 对程序员来说,数据的存放地址是由符号决定的,故称为符号名地址,或者称为名地址。当程序被装入内存时,程序的逻辑地址被转换成内存的物理地址,称为地址重定位。 在可执行文件装入时需要解决可执行文件中地址(指令和数据)和内存地址的对应问题。这是由操作系统中的装入程序Loader来完成的,如图4.2所示。1.绝对装入(absoluteloading) 在可执行文件中记录内存地址,装入时直接定位于上述内存地址的方式称为绝对装入(或者称为固定地址再定位)。 在这种方式下,程序的地址再定位是在执行之前被确定的,也就是在编译、链接时直接制定程序在执行时访问的实际存储器地址。这样,程序的地址空间和内存地址空间是一一对应的。单片机或者单用户系统常采用这种方式。 固定地址再定位的优点是装入过程简单;缺点是过于依赖于硬件结构,不适合多道程序系统。2.可重定位装入(relocatableloading) 可重定位装入方式是指在可执行文件中,列出各个需要重定位的地址单元和相对地址值,装入时再根据所定位的内存地址去修改每个重定位地址项,添加相应的偏移量。 一个有相对地址空间的程序装入到物理地址空间时,由于两个空间不一致,就需要进行地址变换,或称地址映射,即地址的再定位。 地址再定位有两种方式:静态再定位和动态再定位。1)静态再定位 静态再定位是指当程序执行时,由装入程序运行重定位程序,根据作业在内存重分配的起始地址,将可执行的目标代码装入到指定内存中。所谓静态,是指地址定位完成后,在程序的执行期间将不会再发生变化。静态再定位是在程序执行之前进行地址再定位的,这一工作通常是由装配程序完成的。 静态地址再定位的优点是:无需硬件地址变化机构支持,容易实现;无需硬件支持,它只要求程序本身是可再定位的;它只对那些要修改的地址部分做出某种标识,再由专门设计的程序来完成。在早期的操作系统中大多数都采用这种方法。 静态地址再定位的缺点是:必须给作业分配一个连续的存储区域,该存储区不能分布在内存的不同区域;在作业的执行期间不能扩充存储空间,也不能在内存中移动,因而不能重新分配内存,不利于内存的有效利用;多个用户很难共享内存中的同一程序,如若共享同一程序,则各用户必须使用自己的副本。2)动态再定位 动态地址再定位是在程序执行期间,在每次存储访问之前进行的。程序在装入内存时,并不修改程序的逻辑地址值,而是在访问物理内存之前,再实时地将逻辑地址转换成物理地址。在这种情况下,其实现机制要依赖硬件地址变换机构,即通过基地址寄存器BR、变址寄存器VR计算出指令的有效地址,再利用硬件机构实现地址变换,如图4.3所示。 图4.3动态地址再定位的原理从图4.3中可以看出:当程序开始执行时,系统将程序在内存的起始地址送入BR中。执行指令时,系统将逻辑地址与BR中的起始地址相加,从而得到物理地址。 动态地址再定位的优点是:程序在执行期间可以换入和换出内存,这样可以缓解内存紧张的矛盾;可以把内存中的碎片集中起来,以充分利用空间;不必给程序分配连续的内存空间,可以较好地利用较小的内存块;若干用户可以共享同一程序。3.动态运行期装入 动态运行期装入(dynamicrun-timeloading)是指在可执行文件中记录虚拟内存地址,在装入和执行时通过硬件地址变换机构完成虚拟地址到实际内存地址的变换。 动态运行期装入的优点是:操作系统可以将一个程序分散存放于不连续的内存空间,可以通过移动程序来实现共享;能够支持程序执行中产生的地址引用,如指针变量(而不仅是生成可执行文件时的地址引用)。 动态运行期装入的缺点是:需要硬件支持(通常是CPU),操作系统的实现比较复杂。4.1.3链接 1.链接方法 常见的链接方法有静态链接和动态链接两种。 1)静态链接 静态链接(staticlinking)是在生成可执行文件时进行的,即在目标模块中记录被调用模块的名字符号地址(symbolicaddress),在可执行文件中将该名字改写为指令直