论坛: 编程破解 标题: 几个地址的问题,一直以来很模糊,请教大家一下 复制本贴地址    
作者: sniper167 [sniper167]    论坛用户   登录
线性地址 物理地址 虚拟地址 逻辑地址

我是这样理解的,还请大家多指教
物理地址既是指我们的实际内存的地址,物理地址空间的大小既是我们内存的大小

线性地址空间由我们CPU的地址线来决定,比如32位的CPU,其可寻址范围为2的32次方,线性地址是指在这个范围内的地址,线性地址空间包括了物理地址空间

虚拟地址也只线性地址空间的一部分,没有被真正载入物理内存的东西就存在这个范围内

逻辑地址???  偶不晓得

假设我的内存是512M,CPU是32位的,我的地址空间是不是这么分配的?

--------------------------------------------------------------------------------
|    物理地址空间(512M)    |              虚拟地址空间              |
--------------------------------------------------------------------------------
                      整个线性地址空间

虚拟地址空间里面是不是也包括了 硬盘地址空间、 显存地址空间呢?

我看三星的smdk2410平台上是这样安排的
------------------------------------------------------------------------------------
|  nand flash地址空间  |      保留      |      SDRAM地址空间          |
------------------------------------------------------------------------------------

[此贴被 啥都不会(sniper167) 在 10月21日22时05分 编辑过]

地主 发表时间: 06-10-21 22:03

回复: jhkdiy [jhkdiy]   版主   登录
以下是我的个人认识:
其实这些地址名称在不同时代有不同名称或别称,物理地址是实际的内存地址,因为内存单元从0开始计算排列,直到实际的内存大小,这个排列是属于线性排列的。也就是0、1、2、3、4、5、6等等一直排下去。
在DOS时代,还有段地址和段内偏移之说,当时的物理地址就等于段地址+段内偏移地址。也可以说是线性地址,所以物理地址与线性地址没有明显区别。
而在32位的时代,由于引入了虚拟内存的概念,即用磁盘空间来充当内存空间的技术,由于磁盘的速度远小于内存,而磁盘的空间又远大于内存,这是一种以时间换空间的技术。虚拟地址在这个时候出现了。假如我的物理内存只有256MB,但有一个游戏运行需要512MB的内存,如果在DOS时代是无法运行的,但有了虚拟内存技术,系统可以在磁盘上分出384MB的空间当作内存空间用,那么系统会认为我现在有256MB+384MB的内存,游戏现在可以运行了,但这时地址就有问题了,如果物理地址超过了256MB的范围,事实上CPU就无法访问,因为在系统的物理内存空间里没有这个地址,所以采用虚拟地址,即将整个640MB的地址空间形成一个线性地址空间,当CPU执行时,先将虚拟地址转换为物理地址,然后再访问内存即可。如果访问的信息不在内存,则在磁盘中将数据调入内存,然后再访问。
至于逻辑地址,这是为程序员而做的概念,也就是说当程序员编程的时候无需关心物理地址,直接用线性地址即可,如 mov  ax, [0x10235h]。
如果要了解整个来龙去脉,可以看看《操作系统》相关书籍和视频。



[此贴被 jhkdiy(jhkdiy) 在 10月22日13时47分 编辑过]

B1层 发表时间: 06-10-22 13:46

回复: kert_t8 [kert_t8]   论坛用户   登录
不清楚,只有一些模糊的概念

搞操作系统的快来回答这个问题

B2层 发表时间: 06-10-24 15:08

回复: SysHu0teR [syshunter]   版主   登录
线性地址只是一个概念,用来告诉你这个地址空间没是线性的,只是一个名词..

物理地址也就是真正的内存地址了,CPU的地址线个数也就决定了你的物理地址最大可以是多少.

虚拟地址有点模糊,也就是虚拟的,这当中包含了虚拟内存(比如windows就好象允许单个进程可寻址最大地址空间为4G,哪有那么大内存),是由缺页中断机构来完成调度,段页表中有一位标志用来标出该页是在物理内存还是虚拟内存(windows下是页面文件,linux/unix是交换分区).

操作系统丢的时间有点长了,只能凭印象瞎说一通.

B3层 发表时间: 06-10-28 22:41

回复: kert_t8 [kert_t8]   论坛用户   登录
虚拟地址是一段连续的地址,但是被影射到了不连续的物理地址上,是吧

B4层 发表时间: 06-10-30 18:45

回复: jhkdiy [jhkdiy]   版主   登录
没错,不过想具体了解还是看书或看视频了解的清楚一些。

B5层 发表时间: 06-10-30 20:06

回复: romario [romario]   论坛用户   登录
看一看清华王爽的<汇编语言>

B6层 发表时间: 06-11-07 02:49

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号