为什么说逻辑地址不是唯一的

三杨 2014-04-04 09:48:34
我个人理解啊,如果有错还望大牛指正:
0,先说为什么会有逻辑地址,既然有物理地址了为什么又整个逻辑地址出来?
1,这要从8086CPU说起,说8086CPU的地址寄存器是16位,而地址总线却是20位,同学会问有什么影响吗?
2,有,当然有影响。如果对此不管不顾的话CPU是无法对每个内存物理地址进行“直接控制”的,只能直接控制2的16次方个地址;
3,这样的话,将来内存越来越大,CPU能控制的却只有2的16次方个地址,试问那我还加那么大内存条干吗?
4,同学又问,那有什么办法解决吗?有! 既然我没法对内存的每个地址‘直接’的控制,(请注意,我讲的是“不能直接控制”,而并非“不能控制”)既然我不能对你每个地址都直接控制,那我退而求其次总行吧,那怎么个退而求其次法呢?
6,不能直接控制,那我间接控制总行吧? 那又怎么个间接控制呢?好办。
7,内存的各个地址们听好了,我现在要给你分组啦, 01和02 你俩是1组的, 03,04你俩是2组的,如此等等……
8,那等我再找02的时候我就不直接去找他了,我就说 “1组2号,把你的值报给我” ,"2组2号,把你值也报给我";
9,这样的话我就分别获取了 02和04地址的值;这里,组就是段,组号就是段基址,组内号就是偏移;
10,翻译过来,我调用内存的时候就是 段地址+偏移量 = 逻辑地址,当然CPU调用的时候还是直接读写物理地址,因为需要因此需要转换一下;
11,物理地址 = 逻辑地址 * 10H + 偏移地址(这个CPU会自己转换);

好了,我的问题来了
1,段地址是不是唯一的?
2,假设段地址是唯一的,那么 (段地址 + 偏移量) 这个值应该也是唯一的吧,又为什么说逻辑地址不是唯一的,说多个逻辑地址可能指向同一个物理地址?
...全文
1156 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
www_adintr_com 2014-04-13
  • 打赏
  • 举报
回复
因为偏移地址的范围可以达到 0x10000, 而段的边界只按照 0x10 对齐的 如果是 物理地址 = 段地址 * 10000H + 偏移地址 就能保证唯一了.
fly 100% 2014-04-13
  • 打赏
  • 举报
回复
虚拟地址唯一 物理地址要经过映射 可以多处映射到一个地方
WJN92 2014-04-11
  • 打赏
  • 举报
回复
开了分页啊. 当我们访问一个内存地址的时候,CPU会查询CR3,然后查表,找出物理地址,读取
傌鹊 2014-04-05
  • 打赏
  • 举报
回复
将一段内存当做段,仅仅是编程时的一种安排 cpu可以用不同的段地址和偏移地址形成同一个物理地址
傌鹊 2014-04-05
  • 打赏
  • 举报
回复
段地址是唯一的?
lm_whales 2014-04-05
  • 打赏
  • 举报
回复
实模式,段地址不是按照段长划分的,段地址按照16Bytes划分,段长却可以达到64K; 1M内存,最多可以划分64K个段。 段长最少16Bytes,最长655366Bytes(64K) 这样,可以使用不通过段地址,通过不同偏移量访问同一绝对地址 其中,绝对地址 = off +(seg<<4) 这是这块内存的唯一的地址。 相对地址,可以不同 例如 seg =0 可以访问 0~64K,seg=1 可以访问 16~ 64K+16 绝对地址 16 可以通过seg =0,off =16访问,也可以通过seg =1,off =0 访问。 保护模式,段寄存器加长了,不过加长部分是不可见的,只有seg 寄存器是可见的,seg 内容称为段选择子,段选择子只有一部分是地址部分。 段地址相当部分,放在描述附表中,描述附表可以加载到寄存器中,不过该寄存器,不可见,不能通过mov指令使用,需要特殊指令加载。 实模式,可用段的数目为64K个段,保护模式,可以直接通过切换段寄存器使用的段,却没有这么多,但是可以通过其他手段,使用更多的段,更多的内存。保护模式有一个GDT,可以加载若干全局段描述符,同时每个任务还可以有许多LDT 每个LDT有若干局部描述符。实际可用段,可用内存更多。 虚拟86模式,是特殊的保护模式,是对实模式的模拟。
三杨 2014-04-05
  • 打赏
  • 举报
回复
为什么程序的基址是不变的?而且为什么会有多级偏移?四层五层甚至更多。
三杨 2014-04-04
  • 打赏
  • 举报
回复
另外 ,请问 段与段之前是相互独立的吗?

21,459

社区成员

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

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