【正确答案】
A
【答案解析】 要想弄明白各类地址的映射,首先需要弄懂各地址的概念。
虚拟地址指的是由程序产生的由段选择符和段内偏移地址两个部分组成的地址。这两部分组成的地址并没有直接访问物理内存,而是要通过分段地址的变换机构处理或映射后才会对应到相应的物理内存地址。
逻辑地址指的是用户程序经编译之后的每个目标模块都以0为基地址顺序编址,在程序中使用的地址都是逻辑地址。
线性地址指的是虚拟地址到物理地址变换之间的中间层,是处理器可寻址的内存空间(称为线性地址空间)中的地址。程序代码会产生逻辑地址,或者说是段中的偏移地址,加上相应段的基地址就生成了一个线性地址。如果启用了分页机制,那么线性地址可以再经过变换产生物理地址。如果没有采用分页机制,那么线性地址就是物理地址。
物理地址指的是现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果,是实际数据存放的地址。
虚拟地址到物理地址的转化方法是与体系结构相关的。一般来说,有分段和分页两种方式。以X86CPU为例,分段、分页两种方式都是支持的。Memory Management Unit(内存管理单元,简称为MMU)负责从虚拟地址到物理地址的转化。逻辑地址是段标识+段内偏移量的形式,MMU通过查询段表,可以把逻辑地址转化为线性地址。如果CPU没有开启分页功能,那么线性地址就是物理地址;如果CPU开启了分页功能,MMU还需要查询页表来将线性地址转化为物理地址:逻辑地址→(段表)→线性地址-(页表)→物理地址。
不同的逻辑地址可以映射到同一个线性地址上;不同的线性地址也可以映射到同一个物理地址上;所以,这是一种多对一的关系。另外,同一个线性地址,在发生换页以后,也可能被重新装载到另外一个物理地址上。所以,这种多对一的映射关系也会随时间发生变化。
分段机制就是把虚拟地址空间中的虚拟内存组织成一些长度可变的称为段的内存块单元。分页机制把线性地址空间和物理地址空间分别划分为大小相同的块,这样的块称为页。通过在线性地址空间的页与物理地址空间的页之间建立的映射,分页机制实现线性地址到物理地址的转换。
通过以上的分析可知,选项A是正确的。