我当时正在阅读一篇关于 Windows 操作系统启动过程的文章,在阅读的过程中,我不禁想知道——
当计算机开机时,为什么它不能在启动过程的早期就开始加载操作系统?
关于计算机从开机到加载操作系统的逐步启动过程,为什么启动过程中要经过这么多“环节”?似乎 BIOS 必须指向这个位置,然后这个位置可以读取那个位置,然后那个位置可以加载这个位置,这个位置运行这个来加载那个位置等等,级别越来越高。即使是访问硬盘,似乎也有多个“驱动程序”需要使用,直到操作系统中最高级别的驱动程序可以接管。
我可以理解为什么一台没有生命的机器必须能够从无能为力、非常低级的功能转变为更高级的功能(类似于需要从低速档开始才能加速到高速档),但就计算机而言,我并不特别理解为什么它不能在更少的“麻烦”中完成。我猜这很大程度上是 BIOS->UEFI 转换的目的——无能为力的低级硬件和更高级的操作系统能力之间的高级中介……?
我认为我可以通过类比来理解其中的意思,但如果有人能提供具体细节,我将不胜感激。
答案1
因为您的操作系统存储在磁盘上。
你需要从中读取数据并将其放入内存中。与硬件交互并不容易。与高性能硬件交互是难的。因此,您笨拙而缓慢地使用 BIOS 服务,然后加载自己的驱动程序以进行磁盘访问,然后在内存中设置其余的操作系统内容。与此同时,您需要显示器,用于查看正在发生的事情并调试任何问题。因此,您需要为此使用 BIOS 服务。键盘也一样。如果您想从网络上的安装映像启动,则需要网络。如果您的启动盘已连接到 SCSI 控制器,则需要 SCSI 控制器。如果您想从 CD/DVD 驱动器启动,则需要 CD/DVD 驱动器。等等……
如果有办法直接地把内核+驱动程序放入内存,那么启动将立即成为历史。而那一天不会太远,因为我们现在有非挥发性记忆体。
有了 UEFI,我们就有了一个更标准的平台来构建。在第一个插槽中安装非易失性内存条,在其他插槽中安装普通 DDR SDRAM 并不难。处理器可以重定向到任何内存位置以供固件执行。内核初始化代码可以保存在特定位置。如果寄存器、中断和驱动程序已经在内存中,则整个设置只需几分之一秒。
我期盼这一天。