物理地址和逻辑地址(虚拟地址)

1. 物理地址
物理地址是加载到内存地址寄存器中的地址,是指内存中各物理存储单元的地址从统一的基地址进行的顺序编址。又称绝对地址,它是数据在内存单元的真正地址。
在前端总线上传输的内存地址都是物理内存地址,编号从0开始一直到可用物理内存的最高端。这些数字被北桥(Nortbridge chip)映射到实际的内存条上。物理地址是明确的、最终用在总线上的编号,不必转换,不必分页,也没有特权级检查(no translation, no paging, no privilege checks)。

2. 逻辑地址
逻辑地址是CPU所生成的地址。是指用户程序经编译后,每个目标模块以0为基地址进行的顺序编址。逻辑地址又称相对地址 。
逻辑地址是内部和编程使用的、并不唯一。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址(偏移地址),不和绝对物理地址相干。

3.为什么要引入逻辑地址?
逻辑地址是为了程序结构化而做的设计,分层设计,直接访问硬件地址的模块,对下是使用物理地址,对上封装成逻辑地址,是为了程序移植方便。

4. 为什么要实现逻辑地址到物理地址的转换?
逻辑地址到物理地址的转换,即地址重定位的过程。
假如一块内存换出,再换入时难以装入相同的内存空间,为了方便确定所要访问内容的具体地址,我们需要进行动态重定位来确定运行时的地址。而这一切是为了提高内存的利用率,满足多任务的需要。
处理机在执行时必须使用物理地址才能从主存中存取信息,而应用程序使用的地址是逻辑地址,改地址并非处理机能正确识别的地址,故需要转换。

你可能感兴趣的:(操作系统)