把逻辑地址转换为物理地址
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
入内存时要将所有访问内存的地址转换
• 动态地址变换:地址变换是在程序执行时由系统硬件完成从逻辑地址 到物理地址的转换的。
data1: dw 32
0x300 00000020
…
…
…
start: lw r1,0(data1)
0x900 8C2000C0
jal checkit
0x904 0C000340
loop: addi r1, r1, -1
0x908 2021FFFF
bnz loop
…
0x90C 1420FFFF
checkit: …
– 逻辑地址空间-由程序所生成的所有逻辑地址的集合;可以是一维线 性空间,也可以是多维空间
• 物理地址-把内存分成若干个大小相等的存储单元,每个单元给一 个编号,这个编号称为内存地址,即内存单元所用的地址
– 物理地址空间-与逻辑地址相对应的内存中所有物理地址的集合,一 维的线性空间
• 用户程序看不见真正的物理地址。用户只生成逻辑地址,且认为进 程的地址空间为0到max。物理地址范围从R+0到R+max,R为基 地址
– 需要硬件对动态地址变换的支持,例如基 址和限长寄存器
– 基址寄存器这时称为重定位寄存器。用户 进程所生成的地址在送交内存之前,都将 加上重定位寄存器的值。
使用重定位寄存器的动态重定位
地址变换方式
• 编程或编译时确定地址变换关系:编程时确定虚-实地址的关系是指 在用机器指令编程时,程序员直接按物理内存地址编程,这种程序在 系统中是不能做任何移动的,否则就会出错。
– 进程和内核的工作状态取决于存储在内存/寄存器中的相关数据 – 不同的进程/线程控制部分不能使用内存的同一部分
• Physics: 不同部分的数据不能使用内存的同一地址
– 有时不同线程的内存资源会private化 (protection)
存储管理的功能
• 地址变换:将程序地址空间中使用的逻辑地址变换成主 存中的地址的过程,又称地址重定位。地址变换的功能 就是要建立虚实地址的对应关系。
• 静态地址变换:静态地址变换是在程序装入内存时完成从逻辑地址到 物理地址的转换的。在一些早期的系统中都有一个装入程序(加载程 序),它负责将用户程序装入系统,并将用户程序中使用的访问内存 的逻辑地址转换成物理地址。
– 优点:实现简单,不要硬件的支持。 – 缺点:程序一旦装入内存,移动就比较困难,有时间上的浪费。在程序装
(10s ms)
(10s sec)
Gs
Ts
Virtual CPU Address
Limit >?
Base
+ DRAM Physical ErrAodrd! ress
• 内存:由很大一组字/字节所组成,每个字/字节都有自己的地址
– 输入队列— 磁盘上等待进入内存并执行的进程的集合
• 内存共享时需要考虑的问题
进程在执行时,会访问内存中的指令和数据。将指令和 数据捆绑到内存地址可以在以下步骤的任何一步中执行。
• 编译时确定地址变换关系 :如果内存 位置已知,可生成绝对代码;如果开 始位置改变,需要重新编译代码。
• 加载时(静态地址变换) :如果存储位置 在编译时不知道,则必须生成可重定 位代码。
• 执行时(动态地址变换) :如果进程在 执行时可以在内存中移动,则地址绑 定要延迟到运行时。
• 主存分配:按照一定的算法把某一空闲的主存区分配给 作业或进程。
• 存储保护:保证用户程序(或进程映象)在各自的存储区
域内操作,互不干扰。
• 虚拟存储:使用户程序的大小和结构不受主存容量和结 构的限制,即使在用户程序比实际主存容量还要大的情 况下,程序也能正确运行。
地址变换
• 逻辑地址(虚拟地址)-用户编程序时所用的地址(或称程序地 址 、虚地址 ),基本单位可与内存的基本单位相同,也可以不相 同
内存管理
• 背景 • 主存管理介绍 • 连续存储空间管理 • 分页式存储管理 • 分段式存储管理 • 虚拟存储管理
• 局部性原理:时间/空间局部性
– 低端存储的容量尽量大 – 高端存储的速度尽量快
Processor Control
Datapath
Second Level Cache (SRAM)
Main Memory (DRAM)
• 物理地址
– 基址、限长寄存器保护:基址寄存器存放程序装入内存后的起始 地址。限长寄存器存放程序装入内存后的最大长度
• 逻辑地址
对于合法的访问地址,这两者的效率是相同的,对不合法 的访问地址来说,上下界存储保护浪费的CPU时间相对来 说要多些。
Code Data Heap Stack
Prog 1 虚拟地址空间 1
Secondary Storage (Disk)
Tertiary Storage (Tape)
On-Chip Cache
Registers
Speed (ns): 1s Size (bytes): 100s
10s-100s Ks-Ms
100s Ms
10,000,000s 10,000,000,000s
变换 1
例子
Data 2 Stack 1 Heap 1 Code 1 Stack 2 Data 1 Heap 2 Code 2 OS code OS data OS heap & Stacks
Code Data Heap Stack
Prog 2 虚拟地址空间 2
变换 2
物理地址空间
例子:指令和数据地址变换…来自0xD00 …–Could we place data1, start, and/or checkit at different addresses?
• Yes
• When? Compile time/Load time/Execution time
–Related: which physical memory locations hold particular instructions or data?
• 地址变换-将程序地址空间中使用的逻辑地址变换成内存中的物理地址
的过程。由内存管理单元(MMU)来完成。
内存保护
• 内存保护:保护操作系统不受用户进程影响,保护用户进 程不受其它用户进程影响。措施:
– 上下界保护:下界寄存器存放程序装入内存后的开始地址(首 址)。上界寄存器存放程序装入内存后的末地址
• 动态地址变换:地址变换是在程序执行时由系统硬件完成从逻辑地址 到物理地址的转换的。
data1: dw 32
0x300 00000020
…
…
…
start: lw r1,0(data1)
0x900 8C2000C0
jal checkit
0x904 0C000340
loop: addi r1, r1, -1
0x908 2021FFFF
bnz loop
…
0x90C 1420FFFF
checkit: …
– 逻辑地址空间-由程序所生成的所有逻辑地址的集合;可以是一维线 性空间,也可以是多维空间
• 物理地址-把内存分成若干个大小相等的存储单元,每个单元给一 个编号,这个编号称为内存地址,即内存单元所用的地址
– 物理地址空间-与逻辑地址相对应的内存中所有物理地址的集合,一 维的线性空间
• 用户程序看不见真正的物理地址。用户只生成逻辑地址,且认为进 程的地址空间为0到max。物理地址范围从R+0到R+max,R为基 地址
– 需要硬件对动态地址变换的支持,例如基 址和限长寄存器
– 基址寄存器这时称为重定位寄存器。用户 进程所生成的地址在送交内存之前,都将 加上重定位寄存器的值。
使用重定位寄存器的动态重定位
地址变换方式
• 编程或编译时确定地址变换关系:编程时确定虚-实地址的关系是指 在用机器指令编程时,程序员直接按物理内存地址编程,这种程序在 系统中是不能做任何移动的,否则就会出错。
– 进程和内核的工作状态取决于存储在内存/寄存器中的相关数据 – 不同的进程/线程控制部分不能使用内存的同一部分
• Physics: 不同部分的数据不能使用内存的同一地址
– 有时不同线程的内存资源会private化 (protection)
存储管理的功能
• 地址变换:将程序地址空间中使用的逻辑地址变换成主 存中的地址的过程,又称地址重定位。地址变换的功能 就是要建立虚实地址的对应关系。
• 静态地址变换:静态地址变换是在程序装入内存时完成从逻辑地址到 物理地址的转换的。在一些早期的系统中都有一个装入程序(加载程 序),它负责将用户程序装入系统,并将用户程序中使用的访问内存 的逻辑地址转换成物理地址。
– 优点:实现简单,不要硬件的支持。 – 缺点:程序一旦装入内存,移动就比较困难,有时间上的浪费。在程序装
(10s ms)
(10s sec)
Gs
Ts
Virtual CPU Address
Limit >?
Base
+ DRAM Physical ErrAodrd! ress
• 内存:由很大一组字/字节所组成,每个字/字节都有自己的地址
– 输入队列— 磁盘上等待进入内存并执行的进程的集合
• 内存共享时需要考虑的问题
进程在执行时,会访问内存中的指令和数据。将指令和 数据捆绑到内存地址可以在以下步骤的任何一步中执行。
• 编译时确定地址变换关系 :如果内存 位置已知,可生成绝对代码;如果开 始位置改变,需要重新编译代码。
• 加载时(静态地址变换) :如果存储位置 在编译时不知道,则必须生成可重定 位代码。
• 执行时(动态地址变换) :如果进程在 执行时可以在内存中移动,则地址绑 定要延迟到运行时。
• 主存分配:按照一定的算法把某一空闲的主存区分配给 作业或进程。
• 存储保护:保证用户程序(或进程映象)在各自的存储区
域内操作,互不干扰。
• 虚拟存储:使用户程序的大小和结构不受主存容量和结 构的限制,即使在用户程序比实际主存容量还要大的情 况下,程序也能正确运行。
地址变换
• 逻辑地址(虚拟地址)-用户编程序时所用的地址(或称程序地 址 、虚地址 ),基本单位可与内存的基本单位相同,也可以不相 同
内存管理
• 背景 • 主存管理介绍 • 连续存储空间管理 • 分页式存储管理 • 分段式存储管理 • 虚拟存储管理
• 局部性原理:时间/空间局部性
– 低端存储的容量尽量大 – 高端存储的速度尽量快
Processor Control
Datapath
Second Level Cache (SRAM)
Main Memory (DRAM)
• 物理地址
– 基址、限长寄存器保护:基址寄存器存放程序装入内存后的起始 地址。限长寄存器存放程序装入内存后的最大长度
• 逻辑地址
对于合法的访问地址,这两者的效率是相同的,对不合法 的访问地址来说,上下界存储保护浪费的CPU时间相对来 说要多些。
Code Data Heap Stack
Prog 1 虚拟地址空间 1
Secondary Storage (Disk)
Tertiary Storage (Tape)
On-Chip Cache
Registers
Speed (ns): 1s Size (bytes): 100s
10s-100s Ks-Ms
100s Ms
10,000,000s 10,000,000,000s
变换 1
例子
Data 2 Stack 1 Heap 1 Code 1 Stack 2 Data 1 Heap 2 Code 2 OS code OS data OS heap & Stacks
Code Data Heap Stack
Prog 2 虚拟地址空间 2
变换 2
物理地址空间
例子:指令和数据地址变换…来自0xD00 …–Could we place data1, start, and/or checkit at different addresses?
• Yes
• When? Compile time/Load time/Execution time
–Related: which physical memory locations hold particular instructions or data?
• 地址变换-将程序地址空间中使用的逻辑地址变换成内存中的物理地址
的过程。由内存管理单元(MMU)来完成。
内存保护
• 内存保护:保护操作系统不受用户进程影响,保护用户进 程不受其它用户进程影响。措施:
– 上下界保护:下界寄存器存放程序装入内存后的开始地址(首 址)。上界寄存器存放程序装入内存后的末地址