0

首先,我不是引导方面的专家,但想更好地理解它。

1) 系统引导进入 BIOS,BIOS 进入第一个引导扇区,即前 512 个字节,然后从那里读取前 440 个字节。这称为引导加载程序或引导带,此代码依次为我们做所有事情,它跳转(用于下一阶段),读取分区表,如有必要,遵循 fdisk 签名(引导标志)等。我有一个非常基本的问题。也许这将是一个愚蠢的问题:(

2)为什么 BIOS 只能读取第一个扇区(512 字节),因为这个空间很小,引导加载程序无法容纳在那里,它们必须逐级跳转。为什么 BIOS 不能读取超过 512 字节?暂时说 BIOS 能够读取前 100MB。100MB 足以容纳那里的引导加载程序,无需跳转,我们可以为它编写漂亮的全功能引导加载程序,可以为最终用户提供漂亮的 GUI。(通过创建单独的分区,UEFI 完全相同)

3) 为什么只有 512Bytes ?为什么BIOS不能超越?

4)我听说 BIOS 是为 8 位处理器设计的(也许我完全错了)。你能解释一下吗?

很抱歉描述太长,但我是stackoverflow的新手。我想添加漂亮的磁盘布局图,但它说我应该至少有 10 个声誉。提前致谢。

4

1 回答 1

1

当 PC 首次出现时,它们的内存不超过 640k,而且是豪华型号。

第一个 IBM XT(被亲切地命名为“坦克”,因为它是浅军绿色并有一个坚固的钢外壳)只有一个 8k BIOS 芯片,当兼容战争开始时,512k(半兆字节)成为标准。

有了这些第一台 PC,就没有硬盘的概念,硬盘上的大型多拼盘东西看起来像一个带玻璃盖的蛋糕架(就像你在咖啡店里看到的那样),而且通常很重,以至于它们需要 2 个或 3 个人抬起它们。

通常这些大型盘片盒当时只连接到大型机,而且太大而无法考虑为台式机提供,因此使用软盘代替。

这些软盘的第一轮可容纳不超过约 300k,大小为 5.25 英寸见方,厚约 2.5 毫米,有些是双面的,因此可以容纳 600k。还有一系列不同类型的软件和磁盘编码器芯片可以读/写不同的密度,但底线是它们的空间非常非常有限。

再加上一个事实,当时大多数 BIOS 的大小只有大约 16k 到 32k 左右,您必须尽可能多地安装以使机器启动并运行,并且在 IBM 的情况下,安装基于 rom 的基本解释器也在那里,因此在没有外部操作系统的情况下,计算机仍然可以用于一般计算任务。

所有这些限制意味着越小越好。

与其使用大型单片加载程序的扁平磁盘大小,不如“格式化”这些软盘,以便大部分空间是用户空间,并允许最终用户有效地自定义启动软件(EG:删除部分他们没有使用的操作系统)所以启动一切的初始加载程序被限制在磁盘的前 512 个字节。

另一个主要原因是当时可用的不同磁盘系统的绝对真实性(请记住,这是在行业标准化之前的方式)所以无论运行的操作系统多么奇怪,都可以保证在磁盘的开头放置一些东西将磁盘的其余部分设置为自己使用,因为不涉及搜索,您不必查看格式标记并尝试理解一些奇怪的目录格式。您只需将驱动器头移动到其静止位置,然后读取 512 个字节,就这么简单。

一旦 phoenix 生产出 IBM Bios 的第一个克隆,并在 IBM 试图以盗窃知识产权为由起诉 IBM 时在法庭上胜诉,闸门就打开了。几乎在一夜之间,每个人都开始制作 BIOS 系统,而我们今天所知道的 PC 市场在各种不同类型的接口中爆炸成一堆乱七八糟的标准。

很快,供应商锁定开始了,因此 IEE/ANSI/ISO 和其他标准机构开始制定法律,制定关于每个人必须如何与其他人保持兼容的规范,这些标准一直适用今天的现代计算时代也是如此。

当我们在现场获得大量硬盘驱动器和可启动 CD、USB 和各种其他东西时,这些标准(其中 512b 引导扇区是其中的一部分)在更宏大的计划中如此根深蒂固,这是不可能的改变它们。

只有少数勇敢的公司敢于涉足该领域并且取得的成功有限,例如 Sun Micro Systems 就是其中的勇敢者之一。如果你看一下 Sun Raq3(你可以在 Ebay 上几乎一无所获),它们有一个引导加载程序,可以完全模仿基于 PC 磁盘的加载程序所做的事情,但它会从 rom 引导到第二阶段,在那里它会立即在基于标准 Linux 的磁盘布局上查找 /boot 分区,因此即使这些机器中的磁盘仍然具有标准的 512 字节引导块,它实际上并没有被使用。

希望能给你你想要的洞察力,因为我经历了很多,我也能记住很多,包括不使用 512 字节引导块的机器。

于 2014-05-27T21:07:28.957 回答