程序的准备执行-静态链接 0「模块A 0 CALL B 模块A RETURN USR L, L-1 L·Z/ RETURN 0 模块B 模块B CALL C USR L+M: RETURN RETURN M-1 L+M L+M 0「模块c 模块C RETURN L+M+Nh RETURN (a)目标模块 (b)装入模块 2021/2/2 《计算机操作系统》-第6章 17/130
2021/2/2 《计算机操作系统》-第6章 17/130 模块A CALL B; RETURN 模块B CALL C; RETURN 模块C RETURN 0 L-1 0 M-1 0 N-1 (a)目标模块 模块A JSR L; RETURN 模块B JSR L+M; RETURN 模块C RETURN 0 L-1 L L+M-1 L+M L+M+N-1 (b)装入模块 程序的准备执行--静态链接
程序的准备执行-动态链接 动态链接 优点 缺点 增加了程序执行时的链接开销。 程序由多个文件组成,因此增加 便于适应运行环 使用环境并提供 了管理复杂度。 2021/2/2 《计算机操作系统》-第6章 18/130
2021/2/2 《计算机操作系统》-第6章 18/130 程序的准备执行--动态链接 ◼ 动态链接 ◼ 优点 共享:多个进程可以共用一个DLL,比较节省内存,从 而可以减少文件的交换。 ◼ 缺点 部分装入:一个进程可以将多种操作分散在不同的DLL 中实现,而只将当前操作的 便于局部代码修改:即便于代码升级和代码重用;只要 DLL装入内存。 函数的接口参数(输入和输出)不变,则修改函数及其DLL 时,无需对可执行文件重新编译或链接。 便于适应运行环境:调用不同的DLL,就可以适应多种 使用环境并提供不同的功能。 • 增加了程序执行时的链接开销。 • 程序由多个文件组成,因此增加 了管理复杂度
程序的准备执行-装入 n绝对装入方式 逻辑地址与实际内存地址一致 静态重定位装入方适用于单道程序环境 动态重定位装入方式 逻辑地址空间 物理地址空间 Loada 200 Loada 200 3456 3456 2021/2/2 《计算机操作系统》-第6章 19/130
2021/2/2 《计算机操作系统》-第6章 19/130 程序的准备执行--装入 ◼ 绝对装入方式 ◼ 静态重定位装入方式 ◼ 动态重定位装入方式 Load A 200 3456 。 。 物理地址空间 Load A 200 3456 逻辑地址空间 逻辑地址与实际内存地址一致 适用于单道程序环境
程序的准备执行-装入 n绝对装入方式 静态重定位装入方式 地址映射/地址重定位 动态重定位装入方式 把用户程序装入内存时对有关指令的地址 部分的修改定义为从程序地址到内存地址 的地址映射,或称为地址重定位。 静态地址映射 动态地址映射 2021/2/2 《计算机操作系统》-第6章 20/130
2021/2/2 《计算机操作系统》-第6章 20/130 程序的准备执行--装入 ◼ 绝对装入方式 ◼ 静态重定位装入方式 ◼ 动态重定位装入方式 地址映射/地址重定位 把用户程序装入内存时对有关指令的地址 部分的修改定义为从程序地址到内存地址 的地址映射,或称为地址重定位。 静态地址映射 动态地址映射
程序的准备执行-装入 ■静态地址映射(静态重定位) ■程序被装入内存时,由操作系统的连接装入程 序完成程序的逻辑地址到内存地址的转换。 假定程序装入内存的首地址为BR,程序地址为 VR,内存地址为MR,则地址映射按下式进 MR=BR+VR。 例 "装配 程优点:不需要硬件的支持 邗分 进缺点:程序必须占用连续的内存空间,Ln 旦程序装入后不能移动 2021/2/2 《计算机操作系统》-第6章 2l/130
2021/2/2 《计算机操作系统》-第6章 21/130 程序的准备执行--装入 ◼ 静态地址映射(静态重定位) ◼ 程序被装入内存时,由操作系统的连接装入程 序完成程序的逻辑地址到内存地址的转换。 ◼ 假定程序装入内存的首地址为BR,程序地址为 VR,内存地址为MR,则地址映射按下式进行: MR=BR+VR 。 ◼ 例如,程序装入内存的首地址为1000,则装配 程序就按MR=1000+VR对程序中所有地址部分 进行修改,修改后指令Load A,200就变为Load A,1200 优点:不需要硬件的支持。 缺点:程序必须占用连续的内存空间, 一旦程序装入后不能移动