当前位置: 代码迷 >> 汇编语言 >> 为何说逻辑地址不是唯一的
  详细解决方案

为何说逻辑地址不是唯一的

热度:219   发布时间:2016-05-02 04:37:34.0
为什么说逻辑地址不是唯一的
我个人理解啊,如果有错还望大牛指正:
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,假设段地址是唯一的,那么 (段地址 + 偏移量) 这个值应该也是唯一的吧,又为什么说逻辑地址不是唯一的,说多个逻辑地址可能指向同一个物理地址?
------解决方案--------------------
虚拟地址唯一  物理地址要经过映射   可以多处映射到一个地方
  相关解决方案