Chinaunix首页 | 论坛 | 博客
  • 博客访问: 467659
  • 博文数量: 134
  • 博客积分: 3056
  • 博客等级: 中校
  • 技术积分: 1150
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-14 15:53
文章分类
文章存档

2013年(1)

2010年(133)

我的朋友

分类: LINUX

2010-06-05 22:21:57

刚开始看赵炯博士的《linux内核完全注释》在有关引导启动程序的章节里有“在PC 机加电ROM BIOS 自检后,引导扇区由BIOS 加载到内存0x7C00 处,然后将自己移动到内存0x90000 处”,对0x7c00怎么来的很是迷惑。Google了一下,有一种说法是0x7C00x86 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
| Interrupts vectors
+--------------------- 0x400
| BIOS data area
+--------------------- 0x5??
| OS load area
+--------------------- 0x7C00
| Boot sector
+--------------------- 0x7E00
| Boot data/stack
+--------------------- 0x7FFF
| (not used)
+--------------------- (...)

 

 

 

阅读(4011) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~