分类: LINUX
2010-06-05 22:21:57
刚开始看赵炯博士的《linux内核完全注释》在有关引导启动程序的章节里有“在PC 机加电ROM BIOS 自检后,引导扇区由BIOS 加载到内存0x7C00 处,然后将自己移动到内存0x90000 处”,对0x7c00怎么来的很是迷惑。Google了一下,有一种说法是0x7C00是x86 PC操作系统启动的位置,那
① 为什么是加载到内存0x7C00处而不是别的地方?
② 如果这种说法对的话,这是约定俗成的还是当初设计的时候有某个特殊的原因?
在发帖询问,有篇文章终于对0X7C这个地址的由来做了详细的说明()。总结一下原因有以下几点:
① "0x7C00" First appeared in首次出现在IBM PC 5150 ROM BIOS INT 19h handler(中断处理程序的地址),IBM PC 5150 BIOS Developer Team决定使用这个地址的。
② "0x7C00"这个数字属于BIOS 的规范范畴的
③ "0x7C00 = 32KiB - 1024B" 原因在于操作系统的需求和CPU内存布局
+--------------------- 0x0 |