内存地址的线性,为什么一个内存地址偏偏用线性来修饰呢?
比如intel的开发文档里有点一个例子:
地址空间,任何IA-32处理器上运行的程序,可以最多可以寻址4GBytes的线性地址。
Address space — Any task or program running on an IA-32 processor can address a linear address space of up to 4 GBytes and a physical address space of up to 64 GBytes。 See Section 3.3.6, “Extended Physical Addressing in Protected Mode,” for more information about addressing an address space greater than 4 GBytes.
地址空间就地址空间,为什么非要说成线性地址呢?
这要从科学角度看,数学与计算机之间的关系说起,计算机技术的成形,不是独独就只有计算机,还牵扯到许许多多的其他学科。尤其是数学,比如:二进制,离散数学,线性代数,数据结构。在研究的长河中,内存地址和线性强关联了。
从用户的角度看:
最终用户: 所有计算机有关的设备,到了最终用户手中时,都是成形的产品,不需要去研究它内部的实现,只是让它帮我们实现所需的功能。
程序员,相关专业的人:
传递到最终的程序员的时候,有些必备的知识已经丢失了,(或者根本不知如果获得)要求我们程序员只能硬性记住,就是这么个概念。维基百科也不能用,如果可以使用,里面有很多历史,参考资料,对于知识的连贯性学习非常的重要。有些概念不知道怎么来的,就如同练习上乘武功,秘籍里少了那么一两页,就很容易走火入魔。
有些概念是绕不过去,必须理解。
线性,这个是一个对所有类似于直线的事物的描述性词。比如二元一次函数,在二维空间表达的一条直线;又比如一维空间里的一条射线,如果我们定义好刻度,就可以在这条射线-直线上标记,0,1,2,3,。。。。。
这个射线的标记就是地址,标记当前处于这个射线的哪一个位置。其实内存地址空间类似于这条射线。如果射线的开口方向相反的话,又会产生大小端的问题,这是一个习惯性问题,如同左撇子,右撇子。
如果脑海里还有线性地址的连续性的疑问,说这个1和2之间还有无数的无理数和有理数,导致理解困难的时候。就要使用离散数学的知识来突破这种困难。