地址交换 内存地址的集合称为内存空间或物理地址空间。 内有空间是一维线性空间。 几个虚存的一维线性空间或多维线性空间变换到 内存的唯一的一维物理线性空间 三个是虚拟空间的划分问题。例如进程的正文段 和数据段应该放置在虚拟空间的什么地方。虚拟 空间的划分使得编译链接程序可以把不同的程序 模块,链接到一个统一的虚拟空间中去
地址变换 • 内存地址的集合称为内存空间或物理地址空间。 内存空间是一维线性空间。 • 几个虚存的一维线性空间或多维线性空间变换到 内存的唯一的一维物理线性空间 • 一个是虚拟空间的划分问题。例如进程的正文段 和数据段应该放置在虚拟空间的什么地方。虚拟 空间的划分使得编译链接程序可以把不同的程序 模块,链接到一个统一的虚拟空间中去
程序区 30 进程空间2控制区 系统区 系统空间 2x2保留区 图52虚拟空间的划分
图5.2 虚拟空间的划分
重定位方法 重定位:在可执行文作装入时需要解决可执 行文件中地址(指令和数据)和内存地址的 对应。由操作系统中的装入程序 oader来完 成。 程序在成为进程前的准备工作 编辑:形成源文件(符号地址) 编译:形成目标模块(模块内符号地址解析) 链接:由多个目标模块或程序库生成可执行文件 (模块间符号地址解析) 装入:构造PCB,形成进程(使用物理地址)
重定位方法 • 重定位:在可执行文件装入时需要解决可执 行文件中地址(指令和数据)和内存地址的 对应。由操作系统中的装入程序loader来完 成。 • 程序在成为进程前的准备工作 – 编辑:形成源文件(符号地址) – 编译:形成目标模块(模块内符号地址解析) – 链接:由多个目标模块或程序库生成可执行文件 (模块间符号地址解析) – 装入:构造PCB,形成进程(使用物理地址)
辑地址、物理地址和地址映射 逻辑地址(相对地址,虚地址):用户的程序 经过汇编或编译后形成目标代码,目标代码通常采用 相对地址的形式。 其首地址为0,其余指令中的地址都相对于首地址 来编址 不能用逻辑地址在内存中读取信息。 物理地址(绝对地址,实地址):内存中存储单元 的地址。物理地址可直接寻址。 地址映射:将用户程序中的逻辑地址转换为运行时 由机器直接寻址的物理地址 当程序装入内存时,操作系统要为该程序分配一个 适的内存空间,由于程序的逻辑地址与分配到 内存物理地址不一致,而CPU执行指令时,是按物一 理地址进行的,所以要进行地址转换
逻辑地址、物理地址和地址映射 • 逻辑地址(相对地址,虚地址):用户的程序 经过汇编或编译后形成目标代码,目标代码通常采用 相对地址的形式。 – 其首地址为0,其余指令中的地址都相对于首地址 来编址。 – 不能用逻辑地址在内存中读取信息。 • 物理地址(绝对地址,实地址):内存中存储单元 的地址。物理地址可直接寻址。 • 地址映射:将用户程序中的逻辑地址转换为运行时 由机器直接寻址的物理地址。 – 当程序装入内存时, 操作系统要为该程序分配一个 合适的内存空间,由于程序的逻辑地址与分配到 内存物理地址不一致, 而CPU执行指令时,是按物 理地址进行的,所以要进行地址转换
源程序 0逻辑地址空间 物理地址空间 100 oad A datal Load A 200 编译连接 地址映射 LOad A 200 BA=1000 3456 1200 datal 3456 3456 逻辑地址、物理地址和地址映射
逻辑地址、物理地址和地址映射 地址映射 BA=1000 Load A 200 3456 。 。 。 1200 物理地址空间 Load A data1 data1 3456 源程序 Load A 200 3456 0 100 200 编译连接 逻辑地址空间