这个奇怪的地址,是怎么来的,课本就不解释了。我一直有疑问,为什么不存入内存的头部、尾部、或者其他位置,而偏偏存入这个比 32KB 小1024字节的地方? 昨天,我读到一篇文章(http://www.glamenv-septzen.net/en/view/6),终于解开了这个谜。
首先,如果你不知道,主引导记录(Master boot record,缩写为MBR)是什么,可以先读《计算机是如何启动的?》(http://www.ruanyifeng.com/blog/2013/02/booting.html)。 简单说,计算机启动是这样一个过程。
所以,主引导记录就是引导"操作系统"进入内存的一段小程序,大小不超过1个扇区(512字节)。
0x7C00这个地址来自Intel的第一代个人电脑芯片8088(https://en.wikipedia.org/wiki/Intel_8088),以后的CPU为了保持兼容,一直使用这个地址。
1981年8月,IBM公司最早的个人电脑IBM PC 5150上市,就用了这个芯片。
当时,搭配的操作系统是86-DOS(https://en.wikipedia.org/wiki/86-DOS)。这个操作系统需要的内存最少是32KB。我们知道,内存地址从0x0000开始编号,32KB的内存就是 8088芯片本身需要占用 为了把尽量多的连续内存留给操作系统,主引导记录就被放到了内存地址的尾部。由于一个扇区是512字节,主引导记录本身也会产生数据,需要另外留出512字节保存。所以,它的预留位置就变成了:
0x7C00就是这样来的。 计算机启动后,32KB内存的使用情况如下。
(完) Vanilla社区发起晨读计划,每天坚持积累一点,今天的努力至少让我们比昨天更进一步。 晨读计划 期待你的加入... ... 我们的微信号:Vanilla-OpenResty 晨读计划2016/03/23 本文转载自:微信公众账号 - VanillaOpenResty开发,版权归原作者所有! |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|