忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
楼主: 独孤九贱

我理解的逻辑地址、线性地址、物理地址和虚拟地址(补充完整了) [复制链接]

论坛徽章:
0
发表于 2008-01-21 11:22 |显示全部楼层
与君共勉,呵呵,学习了。

论坛徽章:
0
发表于 2008-01-21 17:34 |显示全部楼层
很不错,学习了~~~

论坛徽章:
0
发表于 2008-01-21 20:39 |显示全部楼层
写得很好 又容易看懂 呵呵 赞一个
lz是高手

论坛徽章:
0
发表于 2008-01-22 14:19 |显示全部楼层

你的理解错误很多,居然将硬件的进步说成是冗余,可惜了。

从硬件设计的角度来看!
物理地址: 内存单元的编号,逻辑上是将将内存单元按照一定的度量单位划分,如字节,字等,80x86  可以按字节也可以按字编址。所谓的总线只是一个存取通路,插座相当于一个设备开关。地址空间是数据总线的宽度。
逻辑地址:也称相对地址,是与绝对地址(物理地址)相对的一个概念,是相对与某一位置开始编址。她存在的意义是记住程序和数据的相对位置。一般定义为CPU通过地址总线发出的地址。 程序装入到内存后就通过相关的硬件,主要是地址的加法器与一个相对位置相加得到绝对地址。相对的位置是存在段表和页表中的,通过相联查找获得。地址空间由用户定义
虚拟内存:说白了就是构造一个满足程序和用户需要的空间。程序员不用担心内存不够!也不用担心地址问题。只要关心程序的逻辑顺序,即逻辑地址。
虚拟地址:和逻辑地址是抽象和具体的关系,是逻辑地址的一个实例。
虚拟地址到物理地址变换:对于X86  目前有三种方式,页式,段式,段页式
页式:
地址映像:
   第一步 将用户程序按页的长度划分,长度固定。  划分了之后,就有了页的起始地址
      第二步 操作系统创建进程时,先查全局的页表,找了几页空闲的内存,也就有了物理的页的起始地址
      第三步 操作系统创建页表,一般有这么几项,物理页号, 用户页号 (o-n) 使用位等。 这样就建立了虚拟地址到物理地址的映射关系了。
地址变换:硬件根据cpu发出的逻辑地址(这里是虚拟地址)查表,得到物理的页号(高位地址),将物理页号加逻辑地址的地位(页内地址)就是物理地址了。一次查表,一次加法计算。比直接用物理地址编程效率要低很多。
段式:
虚拟地址划分  用户号+段号+段内偏移
地址映像:
   第一步 将用户程序分段,长度不固定。  划分了之后,就有了段的起始地址,和段的长度。
      第二步 操作系统,根据段长申请内存空间,也就有了段起始地址。
      第三步 操作系统创建段表,一般有这么几项,两个段起始地址, 段长。 这样就建立了逻辑段到物理段的映射关系了。
地址变换:INTEL X86是这样的, 有段寄存器堆,即段选择子,描述符是一致的。 先将段表基地址装入 LDT,(这里讨论的是一般用户程序),根据CPU 发出的逻辑地址得到段号, 加上LDT 当中的段表基地址得到一个逻辑段到物理段的映射项,读出物理段基地址,再加上段的偏移得到 物理地址 ,总共需要做两次加法,一次查表, 效率更低。
段页式: 即将程序中一段再分页,需要一个段表,一个页表,先查段表得到页表基地址,然后再页式变换。
对于这种三种变换方式的优点: 简化 编程,简化系统设计,太多了,
总结:  对内核编程人员的建议:  先对程序划分,再定义映射,设置寄存器,地址变换由硬件完成。

论坛徽章:
0
发表于 2008-01-22 15:46 |显示全部楼层
好文,标记一下,赞一个

论坛徽章:
0
发表于 2008-01-23 01:17 |显示全部楼层
原帖由 softchinacom 于 2008-1-22 14:19 发表
从硬件设计的角度来看!
物理地址: 内存单元的编号,逻辑上是将将内存单元按照一定的度量单位划分,如字节,字等,80x86  可以按字节也可以按字编址。所谓的总线只是一个存取通路,插座相当于一个设备开关。地址空 ...


没细看,但 LZ 写得还是不错滴,何以说错误很多呀,你说得也一踏糊涂

论坛徽章:
0
发表于 2008-01-23 09:24 |显示全部楼层
原帖由 softchinacom 于 2008-1-22 14:19 发表
从硬件设计的角度来看!
物理地址: 内存单元的编号,逻辑上是将将内存单元按照一定的度量单位划分,如字节,字等,80x86  可以按字节也可以按字编址。所谓的总线只是一个存取通路,插座相当于一个设备开关。地址空 ...


1、如果你认为段式+页式不是Intel的冗余,不是为了向上兼容而保留,而是一种硬件进步,我虽然不赞成你的看法,但是我想听听你的理由——不过你的贴子中,并没有并于“进步”的原因解释,只是一大堆的名词解释。呵呵。而且,内容基本与偶是一致的,没有质的分歧;

2、Intel在后续CPU中,保留了段式映射结构,连他自己都说这只是一个兼容而不得已的原因(这个不权威哈,出处忘了,好像在N年前的一篇电脑杂志上看到的)

3、很多优秀的CPU,本身就没有,或者说是“有限支持”段式映射;

4、如果真要说是“进步”,那也是Intel一家的进步,从段式发展到支持页式——不过如果它不考虑兼容,完全可以舍弃段式。所以还是说不上“进步”。

呵呵……一家之言,仅供参考。

论坛徽章:
0
发表于 2008-01-24 00:17 |显示全部楼层
lz写的好啊

论坛徽章:
0
发表于 2008-01-24 09:57 |显示全部楼层

回复 #1 独孤九贱 的帖子

好文,mark一下,感谢lz

论坛徽章:
0
发表于 2008-01-24 10:26 |显示全部楼层
好文,转载了
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

SACC2017购票8.8折优惠进行时

2017中国系统架构师大会(SACC2017)将于10月19-21日在北京新云南皇冠假日酒店震撼来袭。今年,大会以“云智未来”为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置2大主会场,18个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100余位技术专家及行业领袖来分享他们的经验;并将吸引4000+人次的系统运维、架构师及IT决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年8月2日前

活动链接>>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP