“逻辑地址” 的产生背景
追根求源,早期Intel的8位处理器8080 CPU,数据总线(DB)为8位,地址总线(AB)为16位。那么这个16位地址信息也是要通过8位数据总线来传送,也是要在数据通道中的暂存器以及在CPU中的寄存器中存放的,但由于AB正好是DB的整数倍,故不会产生矛盾!但上升到16位机后,Intel8086/8088CPU的设计由于当年IC集成技术和外封装及引脚技术的限制,不能超过40个引脚。但8位机原来的地址寻址能力2^16=64KB太少了,直接增加到16的整数倍即令AB=32位又是达不到的,故而只能把AB暂时增加4条成为20条,则2^20=1MB的寻址能力已经增加了16倍。此举却造成了AB的20位和DB的16位之间的矛盾,20位地址信息既无法在DB上传送,又无法在16位的CPU寄存器存放,于是应运而生就产生了CPU段结构的原理。
这样该存储单元的地址就可以用段基值和段内偏移量来表示,段基值确定它所在的段居于整个存储空间的位置,偏移量确定它在段内的位置,这种地址表示方式称为逻辑地址,通常表示为“段基值:偏移量”的形式
CPU将一个虚拟内存空间中的地址转换为物理地址,需要进行两步:首先将给定一个逻辑地址,CPU要利用其段式内存管理单元,先将为个逻辑地址转换成一个线程地址,再利用其页式内存管理单元,转换为最终物理地址。
转载于:https://blog.51cto.com/bjyulq/660948