在谈论计算机的启动过程时,你可能听说过BIOS(基本输入输出系统)。这是一种固化到计算机中的程序,用于启动计算机,加载操作系统。然而,随着技术的发展,BIOS的局限性开始显现,特别是其缺乏扩展性的问题。于是,英特尔提出了一个新的概念,那就是UEFI,全称是统一的可扩展固件接口(Unified Extensible Firmware Interface)。那么,UEFI究竟是什么呢?我们为什么需要它?又是如何工作的呢?这就是本文要探讨的问题。
在早期的计算机系统中,英特尔的8086处理器工作在1M实模式下,也就是说,它最多只能访问1MB的内存。这个限制主要是由于8086处理器的地址总线宽度只有20位,最多只能寻址到2的20次方,也就是1MB的内存。
然而,随着技术的发展,计算机的内存容量已经远远超过了1MB。新的处理器也能够访问更大的内存空间。但是,由于传统的BIOS仍然基于8086的1M实模式,这就意味着新的处理器在启动过程中,必须首先进入1M实模式,然后再切换到保护模式或者长模式,才能访问更大的内存空间。
这个过程不仅复杂,而且也会浪费处理器的性能。因为处理器在启动过程中,必须在不同的模式之间切换,这就像是一辆跑车在高速公路上却只能以慢速行驶,显然是对性能的一种浪费。
此外,由于BIOS是固定的,缺乏文档,完全基于经验和晦涩约定的一个事实标准,这就导致了其扩展性非常不好。例如,BIOS不能直接支持新的硬件设备,每当需要支持新的硬件设备时,都必须更新BIOS。而且,由于缺乏标准,不同的BIOS可能会有不同的实现方式,这就使得硬件制造商需要为不同的BIOS提供不同的驱动程序,增加了开发的复杂性。因此,英特尔提出了EFI(可扩展固件接口),并逐渐发展为UEFI。
可以这么理解,如果说BIOS是一部老旧的黑白电视,那么UEFI就像是一台智能彩电。它不仅具备了播放电视节目的基本功能,还能够接入网络,播放网络视频,甚至还能安装各种应用,功能强大,扩展性极强。
UEFI的工作过程可以分为几个阶段,每个阶段都有其特定的任务和功能。
UEFI和BIOS在许多方面都存在着明显的区别。
首先,UEFI是一个标准平台,接口开放,厂家可以编写符合UEFI标准的驱动来拓展UEFI的能力,因此其扩展性极强。而传统的BIOS则不统一,封闭的,具体某个BIOS是由单个公司负责的模块。因此其规模、扩展性等都有很大限制。
其次,UEFI的99%是用C语言编写的,更像软件。而BIOS则是用汇编语言写的,更接近硬件。
再次,UEFI的基础程序在主板ROM,磁盘上的EFI系统分区可以存储更多内容。而BIOS的所有的程序和数据都在主板ROM。
此外,UEFI从文件系统(FAT格式)读取\efi\boot\bootx64.efi文件,启动这个程序,让此程序做想做的事。而BIOS从硬盘分区读取MBR(第一个扇区的前512个字节)交给CPU执行,做MBR想做的事。
最后,UEFI还有许多其他的优点,比如没有1M情节,可以通过GPT分区格式使用超过2TB的磁盘分区,有图形界面,交互体验好,可以实现安全引导,可以在UEFI UI界面和用户操作系统中更改启动配置等。而BIOS则在这些方面都做不到。
总的来说,UEFI是一种全新的计算机启动方式,它弥补了BIOS的许多不足,具有更强的扩展性和更好的用户体验。随着技术的发展,UEFI将越来越广泛地应用于各种计算机系统中。
关注微/信/公/众\号:萤火架构,提升技术不迷路!
作者:萤火架构
链接:https://juejin.cn/post/7304261849385730087
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。