文档介绍:第四章存储器管理
程序的装入和链接
连续分配方式
基本分页存储管理方式
基本分段存储管理方式
虚拟存储器的基本概念
请求分页存储管理方式
页面置换算法
请求分段存储管理方式
程序的装入和链接
图 4-1 对用户程序的处理步骤
程序的装入
1. 绝对装入方式(Absolute Loading Mode)
程序中所使用的绝对地址,既可在编译或汇编时给出, 也可由程序员直接赋予。但在由程序员直接给出绝对地址时, 不仅要求程序员熟悉内存的使用情况,而且一旦程序或数据被修改后,可能要改变程序中的所有地址。因此,通常是宁可在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址。
2. 可重定位装入方式(Relocation Loading Mode)
图 4-2 作业装入内存时的情况
3. 动态运行时装入方式(Denamle Run-time Loading)
动态运行时的装入程序,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此, 装入内存后的所有地址都仍是相对地址。
程序的链接
1. 静态链接方式(Static Linking)
图 4-3 程序链接示意图
在将这几个目标模块装配成一个装入模块时,须解决以下两个问题:
(1) 对相对地址进行修改。
(2) 变换外部调用符号。
2. 装入时动态链接(Loadtime Dynamic Linking)
装入时动态链接方式有以下优点:
便于修改和更新。
(2) 便于实现对目标模块的共享。
3. 运行时动态链接(Run-time Dynamic Linking)
近几年流行起来的运行时动态链接方式,是对上述在装入时链接方式的一种改进。这种链接方式是将对某些模块的链接推迟到执行时才执行,亦即,在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存, 把它链接到调用者模块上。凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。
连续分配方式
单一连续分配
这是最简单的一种存储管理方式,但只能用于单用户、单任务的操作系统中。采用这种存储管理方式时,可把内存分为系统区和用户区两部分,系统区仅提供给OS使用,通常是放在内存的低址部分;用户区是指除系统区以外的全部内存空间, 提供给用户使用。