计算机为什么要设置线性地址,从逻辑地址到线性地址再到物理地址?

作者:龚黎明
链接:https://www.zhihu.com/question/41431386/answer/91115537
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

逻辑地址是给操作系统之上的软件看的。他们不需要知道硬件是怎么设计的,只需要一台理想的虚拟机就可以了。这样是为了同样的软件应用于不同的硬件上。
线性地址是给CPU看的。CPU不需要知道有多少外设,什么种类的外设,反正它都是用地址来访问。打印机也好,硬盘也好,游戏手柄也好,内存也好,任何乱七八糟的外设也好,它都是分配个地址来访问。这叫做统一编址,也属于线性编址。让所有的外设,都可以像访问内存一样,线性访问。目的是为了让CPU可以接各种外设,不需要知道外设是怎么实现的。比如说硬盘,根本就不是线性地址,其有多个扇面,扇面又被划分成很多小块,磁头的移动绝对不是线性的。你不需要知道硬盘是怎么样的物理结构,你只需要把它想象成一排格子,每一格是一个sector。你甚至不需要知道硬盘只能以sector读写,你也可以只读写一字节,硬盘控制器会帮你搞定你想要的。简言之,线性地址能让CPU把任何设备当成内存。
物理地址是给实际的硬件看的。光驱控制器给读写头的控制信号,硬盘控制器给磁头发出的读写地址,内存总线上的地址是物理地址。硬件只对这个地址做响应。
逻辑地址要经过操作系统转换成线性地址给CPU,CPU发出线性地址给译码器,译码器根据线性地址找到合适的外设,外设自身的控制器再将线性地址进行译码得到物理地址送给实际的设备。
当然,真正的IC里面,地址比这个模型复杂多了。

猜你喜欢

转载自blog.csdn.net/u010325193/article/details/86560164