存 储 管 理 的 功 能 { 空 间 内 存 的 分 配 和 去 配 地 址 转 换 ( 重 定 位 ) 内 存 空 间 的 共 享 和 保 护 内 存 空 间 的 扩 充 ( 把 外 存 的 部 分 容 量 作 为 内 存 的 扩 充 部 分 使 用 ) 存储管理的功能 \begin{cases} 空间内存的分配和去配\\ 地址转换 &\text(重定位)\\ 内存空间的共享和保护\\ 内存空间的扩充 &\text(把外存的部分容量作为内存的扩充部分使用) \end{cases} 存储管理的功能⎩⎪⎪⎪⎨⎪⎪⎪⎧空间内存的分配和去配地址转换内存空间的共享和保护内存空间的扩充(重定位)(把外存的部分容量作为内存的扩充部分使用)
实现虚拟内存地址(逻辑地址) ⟶ \longrightarrow ⟶内存空间中语执对应的物理地址
装入的三种方式
区别是转换时机的不同
1.绝对装入方式(第一步)
知道程序驻留内存中的具体位置
装入后逻辑地址与内存地址完全相同,不需要对程序和数据地址进行修改
只适用于单道程序环境
2.静态重定位装入方式(第二步)
装入作业的时候就把作业的指令地址和数据地址一次性转换成物理地址
3.动态重定位装入方式(第三步)
装入作业时:将作业装入所分配的内存区域
作业执行时:随着每条指令或数据的访问,指令中的逻辑地址才转换成相应的物理地址
地址转换是在作业的执行过程中动态完成的
链接的三种方式
1.静态链接
程序运行之前就将所需要的目标模块和库函数链接成一个可执行文件,运行时候就将它装入内存
缺点:若装入模块太大可能会引起程序装入时间上和内存空间上的浪费
2.装入时动态链接
边装入边链接
3.运行时动态链接
程序执行的过程中需要该目标模块时才将该模块装入内存
装入与链接的区别
链接是把各个编译后的目标模块组装成一个可执行文件的过程,装入是把可执行文件装入内存;
链接过程:为各个目标模块分配统一的逻辑地址,确定各个目标模块的逻辑地址
装入过程:确定程序中使用到的逻辑地址到物理地址的转换