基本上, 一台计算机在启动或重新启动后才能开始运行以获取实例, 它需要有一个初始程序才能运行。这个初始程序称为Bootstrap需要简单。它必须初始化系统的所有方面, 从CPU寄存器到设备控制器以及主内存的内容, 然后启动操作系统。
为此, 引导程序基本上是在磁盘上找到操作系统内核, 然后将内核加载到内存中, 此后, 它会跳到初始地址以开始执行操作系统。
为什么ROM:
对于当今的大多数计算机, 引导程序都存储在只读存储器(ROM)中。
- 此位置非常适合存储, 因为该位置不需要初始化, 而且这里的位置是固定的, 因此处理器可以在加电或重置时开始执行。
- ROM基本上是只读存储器, 因此不会受到计算机病毒的影响。
问题在于更改引导程序代码基本上需要更改ROM硬件芯片。因此, 当今大多数系统在引导中都具有微小的引导程序加载程序, 其唯一的工作就是从磁盘上带走完整的引导程序。现在, 通过此操作, 我们可以轻松更改完整的引导程序, 并且可以轻松地将新版本写入磁盘。
完整的引导程序存储在引导块在磁盘上的固定位置。具有启动分区的磁盘称为启动磁盘。引导ROM中的代码基本上会指示读取控制器将引导块读入内存, 然后开始执行代码。完整的引导程序比引导ROM中的引导加载程序要复杂得多。它基本上能够从磁盘上的非固定位置加载完整的OS, 以启动操作系统运行。即使完整的引导程序很小。
例子:
让我们尝试使用Windows 2000中启动过程的示例来理解这一点。
Windows 2000基本上将其启动代码存储在硬盘的第一个扇区中。此外, Windows 2000允许将硬盘划分为一个或多个分区。在这个分区中, 基本上将其标识为引导分区, 该分区主要包含操作系统和设备驱动程序。
要启动Windows 2000, 首先需要运行系统ROM存储器中的代码。该代码指导系统直接从MBR读取代码。除此引导代码外, 还包含列出硬盘分区的表以及一个标志, 该标志指示要从系统引导的分区。一旦系统识别了引导分区, 它将从内存中读取第一个扇区(称为引导扇区), 并继续执行剩余的引导过程, 包括加载各种系统服务。
下图显示了Windows 2000中的从磁盘启动。