物理地址、逻辑地址、虚拟地址?

taotao7805 2006-02-12 01:34:58
什么叫物理地址、逻辑地址、虚拟地址?三者之间有什么区别?
...全文
1526 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl910 2006-02-12
  • 打赏
  • 举报
回复
物理地址:CPU地址总线传来的地址,由硬件电路控制(现在这些硬件是可编程的了)其具体含义。物理地址中很大一部分是留给内存条中的内存的,但也常被映射到其他存储器上(如显存、BIOS等)


在保护模式中,它们的含义是:
虚拟地址--(分段)->逻辑地址--(分页)->物理地址

虚拟地址、逻辑地址只是保护模式对不同环境下的地址的一种称呼而已


程序员只能使用虚拟地址,但Windows系统自动为应用程序进程的CS、DS、SS、ES对应描述符的段基址设为0(FS指向线程描述块,GS没用到)
这样对于Windows环境下的应用程序而言,虚拟地址与逻辑地址是等同的,只需要考虑分页影响就行


注意虚拟内存管理与虚拟地址的含义不同
保护模式下虚拟地址主要是为了段权限审查,保护系统段不被应用程序破坏
虚拟内存管理有自己的一套术语,其利用“虚拟地址”实现比主存大得多的虚拟内存空间,那是利用保护模式的分页功能实现的,即保护模式下的逻辑地址
hswxf 2006-02-12
  • 打赏
  • 举报
回复
物理地址:最小系统下的存储器的实际地址,一般只是由CPU内存控制器(地址线)可以管理的容量为最大地址,而实际上这个容量(由地址产生的)远大于实际存在的容量;实际的存储器容量所需要的地址(内存)控制器管理的容量;它的大小一般由芯片决定

逻辑地址:相对程序员而言使用的地址,或说程序无需知道具体的实际地址管理数,而只要在系统(操作)允许范围内使用就行了(这时使用的是一种算法控制下的地址,实际上它只是借用地址概念产生的程序运行模式),它所要说明的是方便,也就是一个线性的(最好)的程序(指令)排列方式。它的大小一般由操作系统决定
虚拟地址:将具有存储功能的所有存储器(不仅仅是最小系统概念下的),进行“统一”编址,而不考虑存储器之间的差异(快慢等),这时的地址是一个比逻辑地址理会数学化的编号(地址),它的大小等往往由应用程序决定
WYlslrt 2006-02-12
  • 打赏
  • 举报
回复
物理地址就是,机器内主存的地址,包括RAM和ROM
逻辑地址就是,程序运行在内存中,使用的地址。
虚拟地址就是,cpu支持的内存空间远远大于机器主存的大小,这些多出来的空间对于程序来说是可以用的,这个时候的所有地址都称为虚拟地址。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧