第四章存储器管理 412程序的链接 1.静态链接方式( Static Linking) 0模块A 模块A CaLL B: JSR“L Retum Retum 0模块B 模块B CALL C JSR“L+M Retum L+ M-1 Retum L 模块C 0模块C L+ M+ N1 Retum N Retum )日标模块图43程序链接示意图()装入模
第四章 存 储 器 管 理 4.1.2 程序的链接 1. 静态链接方式(Static Linking) 图 4-3 程序链接示意图 模 块A CALL B; Return; 0 L- 1 模 块B CALL C; Return; 0 M- 1 模 块C Return; 0 N- 1 0 模 块A JSR“ L” L- 1 Return; 模 块B JSR“L+ M” Return; L L+ M- 1 L+ M L+ M+ N- 1 模 块C Return; (a) 目标模块 (b) 装入模块
第四章存储器管理 在将这几个目标模块装配成一个装入模块时,须解 决以下两个问题: (1)对相对地址进行修改 (2)变换外部调用符号
第四章 存 储 器 管 理 在将这几个目标模块装配成一个装入模块时,须解 决以下两个问题: (1) 对相对地址进行修改。 (2) 变换外部调用符号
第四章存储器管理 2.装入时动态链接( Load time Dynamic linking) 装入时动态链接方式有以下优点: (1)便于修改和更新 (2)便于实现对目标模块的共享
第四章 存 储 器 管 理 2. 装入时动态链接(Load time Dynamic Linking) 装入时动态链接方式有以下优点: (1) 便于修改和更新。 (2) 便于实现对目标模块的共享
第四章存储器管理 3.运行时动态链接( Run-time Dynamic Linking) 近几年流行起来的运行时动态链接方式,是对上述在 装入时链接方式的一种改进。这种链接方式是将对某些模 块的链接推迟到执行时才执行,亦即,在执行过程中,当 发现一个被调用模块尚未装入内存时,立即由OS去找到该 模块并将之装入内存,把它链接到调用者模块上。凡在执 行过程中未被用到的目标模块,都不会被调入内存和被链 接到装入模块上,这样不仅可加快程序的装入过程,而且 可节省大量的内存空间
第四章 存 储 器 管 理 3. 运行时动态链接(Run-time Dynamic Linking) 近几年流行起来的运行时动态链接方式,是对上述在 装入时链接方式的一种改进。这种链接方式是将对某些模 块的链接推迟到执行时才执行,亦即,在执行过程中,当 发现一个被调用模块尚未装入内存时,立即由OS去找到该 模块并将之装入内存, 把它链接到调用者模块上。凡在执 行过程中未被用到的目标模块,都不会被调入内存和被链 接到装入模块上,这样不仅可加快程序的装入过程,而且 可节省大量的内存空间
第四章存储器管理 42连续分配方式 421单一连续分配 这是最简单的一种存储管理方式,但只能用于单用户、 单任务的操作系统中。采用这种存储管理方式时,可把内 存分为系统区和用户区两部分,系统区仅提供给OS使用, 通常是放在内存的低址部分;用户区是指除系统区以外的 全部内存空间,提供给用户使用
第四章 存 储 器 管 理 4.2 连续分配方式 4.2.1 单一连续分配 这是最简单的一种存储管理方式,但只能用于单用户、 单任务的操作系统中。采用这种存储管理方式时,可把内 存分为系统区和用户区两部分,系统区仅提供给OS使用, 通常是放在内存的低址部分;用户区是指除系统区以外的 全部内存空间, 提供给用户使用