Answers:
当前所有与x86兼容的计算机(也包括来自Intel和AMD的x64体系结构,均来自Intel和AMD,但不包括Itanium)以x86实模式执行启动扇区代码,就像20年前的原始IBM PC一样。它不是内核模式,它是原始的分段模式,没有内存保护,多任务处理或代码特权级别。
如果您可以握住软盘驱动器,则将MS-DOS(或FreeDOS)放在其上,并卡在当今的计算机中,它将开始启动。
引导代码的任务是切换到保护模式,设置内存保护等。因此,您的猜测部分正确。引导加载程序以x86实模式开始执行,并切换到保护模式,以“内核”(ring 0)模式加载并开始实际执行OS内核。
有关更多信息,您可以访问Wikipedia上有关Windows NT启动过程的文章,该文章中有许多关于此主题的详细信息。
现代64位架构又如何呢?
这取决于具有现代64位体系结构的现代64位计算机上的固件。 haimg
大约五到六年前,对于x86世界来说,答案就是这样,但是对于今天的x86世界来说,已经过时了。
这些现代的64位计算机中,有些具有旧的PC / AT风格的固件。正如在其他答案中指出的那样,它们从光盘的扇区#0加载并运行引导程序,其方式与PC / AT几乎相同。 这是旧的PC / AT引导过程。
其他现代的64位计算机具有新的EFI固件。这些不从光盘的扇区#0加载一个引导程序在所有。它们由EFI Boot Manager引导并加载并运行EFI Boot loader应用程序。此类程序在保护模式下运行。 这是EFI引导过程。
在退出处理器重置的一些说明中,EFI固件通常会切换到保护模式。切换到保护模式是在EFI固件初始化的所谓“ SEC阶段”的早期完成的。从技术上讲,32位及更高版本的x86处理器甚至无法在实模式下正常启动,而是通俗地称为虚幻模式。(CS
寄存器的初始段描述符没有描述传统的实模式映射,而是使它“不真实”的原因。)
因此,可以说这些EFI系统在本机引导到EFI引导加载程序时(即,当它们不使用兼容性支持模块时)根本不会进入正确的实模式,因为它们从虚实模式直接切换到保护模式。并从那时起一直处于保护模式。
英特尔手册第3卷系统编程指南325384-053US 2015年1月:
2.2操作模式
上电或复位后,处理器将置于实地址模式。
只是为了踢一下,手册中的一个不错的图表:
GRUB在保护模式下启动多引导操作系统。Multiboot规范0.6.96机器状态:
必须设置“ CR0”位0(PE)。
不确定GRUB和x86_64。
multiboot
关键字。对于Linux,有专用的linux
,linux16
在UEFI版本的GRUB中,有linuxefi
关键字,告诉GRUB使用特定于Linux的启动协议。