当您打开计算机时,究竟会发生什么情况?

当你打开一台电脑时,它会经历一个“启动”过程--这个术语来自于“引导”这个词。下面是后台正在发生的事情--无论你使用的是Windows PC、Mac还是Linux系统。

硬件通电

当您按下电源按钮时,计算机将为其组件供电-主板、CPU、硬盘、固态驱动器、图形处理器以及计算机中的其他所有组件。

供电的硬件被称为“电源”。在一台典型的台式PC内部,它看起来就像机箱角落里的一个盒子(上图中的黄色东西),它是你连接交流电源线的地方。

CPU加载UEFI或BIOS

既然有了电,CPU就会自行初始化并查找通常存储在主板芯片中的小程序。

在过去,PC加载了一种叫做BIOS(基本输入/输出系统)的东西。在现代PC上,CPU转而加载UEFI(统一可扩展固件接口)和固件。这是老式BIOS的现代替代品。但是,更令人困惑的是,一些个人电脑制造商仍然称他们的UEFI软件为“BIOS”。

相关:什么是UEFI,它与BIOS有什么不同?

UEFI或BIOS测试和初始化硬件

BIOS或UEFI固件从主板上的特殊位置加载配置设置-传统上,该位置由CMOS电池备份在内存中。如果您更改BIOS或UEFI设置屏幕中的一些低级别设置,则这是存储自定义设置的位置。

CPU运行UEFI或BIOS,它测试和初始化系统的硬件-包括CPU本身。例如,如果您的计算机没有任何RAM,它将发出蜂鸣声并向您显示错误,从而停止引导过程。这称为POST(开机自检)过程。

在此过程中,您可能会看到PC制造商的徽标出现在您的屏幕上,您通常可以从此处按一个按钮来访问您的BIOS或UEFI设置屏幕。然而,许多现代个人电脑完成这一过程的速度如此之快,以至于他们不需要费心显示徽标,而需要从Windows引导选项菜单访问他们的UEFI设置屏幕。

UEFI可以做的不仅仅是初始化硬件;它实际上只是一个很小的操作系统。例如,英特尔CPU具有英特尔管理引擎。这提供了多种功能,包括支持英特尔的主动管理技术,该技术允许远程管理商务PC。

UEFI或BIOS切换到引导设备

在完成硬件测试和初始化后,UEFI或BIOS将移交将您的PC引导到操作系统的引导加载程序的责任。

UEFI或BIOS查找用于引导操作系统的“引导设备”。这通常是计算机的硬盘或固态驱动器,但也可能是CD、DVD、USB驱动器或网络位置。可以从UEFI或BIOS设置屏幕中配置引导设备。如果您有多个引导设备,UEFI或BIOS会尝试按照它们列出的顺序将启动过程移交给它们。因此,例如,如果您的光驱中有一张可引导DVD,系统可能会先尝试从该DVD开始,然后再尝试从您的硬盘开始。

传统上,BIOS查看MBR(主引导记录),这是磁盘开头的一个特殊引导扇区。MBR包含加载操作系统其余部分的代码,称为“引导加载程序”。BIOS执行引导加载程序,它从那里获取引导程序并开始引导实际的操作系统-例如Windows或Linux。

使用UEFI的计算机仍然可以使用这种老式的MBR引导方法来引导操作系统,但是它们通常使用称为EFI可执行文件的东西。这些文件不必存储在磁盘的开头。相反,它们存储在称为“EFI系统分区”的东西上。

无论哪种方式,原理都是相同的-BIOS或UEFI检查系统上的存储设备以查找MBR或EFI系统分区中的小程序,并运行它。如果没有可引导的引导设备,引导过程将失败,并且您将在显示屏上看到这样一条错误消息。

在现代PC上,UEFI固件通常配置为“安全引导”。这可以确保它启动的操作系统没有被篡改,也不会加载低级恶意软件。如果启用了安全引导,UEFI会在启动引导加载程序之前检查其签名是否正确。

引导加载程序加载完整的操作系统

Bootloader是一个小程序,它有引导操作系统其余部分的大任务。Windows使用名为Windows Boot Manager(Bootmgr.exe)的引导加载程序,大多数Linux系统使用GRUB,而Mac使用名为boot.efi的引导加载程序。

如果引导加载器有问题-例如,如果其文件在磁盘上损坏-您将看到一条引导加载器错误消息,引导过程将停止。

引导加载程序只是一个小程序,它不会自己处理引导过程。在Windows上,Windows引导管理器查找并启动Windows OS Loader。操作系统加载程序加载运行内核(Windows操作系统的核心部分)所需的基本硬件驱动程序,然后启动内核。然后,内核将系统注册表加载到内存中,还会加载任何标记为“BOOT_START”的附加硬件驱动程序,这意味着它们应该在引导时加载。然后,Windows内核启动会话管理器进程(Smss.exe),该进程启动系统会话并加载其他驱动程序。此过程将继续,Windows会加载后台服务和欢迎屏幕,让您登录。

在Linux上,GRUB引导加载程序加载Linux内核。内核还启动init系统-在大多数现代Linux发行版上都是systemd。init系统处理启动服务和其他用户进程,这些进程一直通向登录提示。

这个涉及到的过程只是通过按正确的顺序执行操作来正确加载所有内容的一种方式。

顺便说一句,所谓的“启动程序”实际上是在您登录用户帐户时加载的,而不是在系统引导时加载的。但是一些后台服务(在Windows上)或守护进程(在Linux和MacOS上)在系统引导时在后台启动。

关机过程也相当复杂。以下是当你关闭或注销Windows PC时到底会发生什么。

图片来源:Suwan Waenler/Shutterstock.com,dr-image/Shutterstock.com,

相关文章