在计算机执行时,几乎每一条指令都涉及对存储器的访问,因此要求对存储器的访问速度能跟得上处理机的运行速度。存储器的速度必须非常快,能与处理机的速度相匹配,否则会明显地影响到处理机的运行。
1.内存管理的功能
内存管理是操作系统设计中最重要和最复杂的内容之一。操作系统必须将内存空间进行合理地划分和有效地动态分配。操作系统对内存的划分和动态分配,就是内存管理的概念。
有效的内存管理在多道程序设计中非常重要,不仅方便用户使用存储器、提高内存利用率,还可以通过虚拟技术从逻辑上扩充存储器。
内存管理的功能有:
- 内存空间的分配与回收:由操作系统完成主存储器空间的分配和管理,使程序员摆脱存储分配的麻烦,提高编程效率。
- 地址转换:在多道程序环境下,程序中的逻辑地址与内存中的物理地址通常不一致,因此存储管理必须提供地址变换功能,把逻辑地址转换成相应的物理地址。
- 内存空间的扩充:利用虚拟存储技术或自动覆盖技术,为用户提供比内存空间大的地址空间,从逻辑上扩充内存。
- 存储保护:保证进入内存的各道作业在各自的存储空间内运行,.互不干扰。
2.程序的装入和链接
创建进程首先要将程序和数据装入内存。将用户源程序变为可在内存中执行的程序,通常要经过以下几个步骤:
- 编译:由编译程序将用户源程序进行编译,形成若干个目标模块。
- 链接:由链接程序将编译后形成的一组目标模块,以及所需库函数链接在一起,形成一个完整的装入模块。
- 装入:由装入程序将装入模块装入内存运行。
用户程序处理过程
(1)程序的装入
内存的装入模块在装入内存时,有以下三种方式:
- 绝对装入:当计算机系统很小,且仅能运行单道程序时,完全有可能知道程序将驻留在内存的什么位置。此时可以采用绝对装入方式。用户程序经编译后,将产生绝对地址(即物理地址)的目标代码。由于程序中的逻辑地址与实际内存地址完全相同,故不需对程序和数据的地址进行修改。
绝对装入方式只适用于单道程序环境。另外,程序中所使用的绝对地址,可在编译或汇编时给出,也可由程序员直接赋予。而通常情况下在程序中釆用的是符号地址,编译或汇编时再转换为绝对地址。
- 可重定位装入:绝对装入方式只能将目标模块装入到内存中事先指定的位置,这只适用于单道程序环境。 在多道程序环境下,编译程序不可能预知经编译后所得到的目标模块应放在内存的何处。 对于用户程序编译所形成的若干个目标模块,它们的起始地址通常都是从0开始的, 程序中的其它地址也都是相对于起始地址计算的。 把在装入时对目标程序中指令和数据的地址修改过程称为重定位,又因为地址变换通 常是在装入时一次完成的,以后不再改变,故称为静态重定位。
静态重定位
静态重定位的特点是在一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。此外,作业一旦进入内存后,在整个运行期间不能在内存中移动,也不能再申请内存空间。
- 动态运行时装入:也称为动态重定位,程序在内存中如果发生移动,就需要釆用动态的装入方式。动态运行时的装入程序,是在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而把地址转换推迟到程序真正要执行时进行。因此,装入内存后的所有地址都仍是相对地址。这种方式需要一个重定位寄存器的支持。
动态重定位
动态重定位的特点是可以将程...
登录后开始许愿
暂无评论,来抢沙发