2014-02-23 47 views

回答

0

BIOS为您提供基本输入/输出,而硬件具有远远超越基本功能的功能。没有驱动程序,使用这些功能是不可能的。

此外,有些硬件根本不是基本的,在安装驱动程序之前不可能使用它们的功能。

+0

@xxbbcc是的,我意识到我得到了它 - 我咨询了所说的链接,并去“哎呀”! – user2864740

+0

感谢您的快速响应。请多一些解释!我想在技术上更详细的回答 – user3139987

+0

@ user2864740哈哈,没问题。我出于同样的原因迟到了。 – xxbbcc

5

假设你是在谈论传统的x86 BIOS,有几个大问题:

  1. 该BIOS只代码引导系统所需设备的有限子集(存储控制器进行通信,以太网,USB键盘/鼠标,USB大容量存储器)。 BIOS没有USB打印机或网络摄像头的驱动程序。它也不实际。有数以千计的设备需要驱动程序。 BIOS不能全部包含它们。这也意味着每个新的硬件设备都需要BIOS更新。

  2. 对于现代硬件,BIOS INT调用是流行和不切实际的。它们设置为读取/写入小块数据(从磁盘读取几个字节,在屏幕上打印一个字符)。他们没有一种机制可以使用DMA将数兆字节的数据从磁盘读取到缓冲区中。请记住原始的BIOS INT调用是为软驱和文本模式显示开发的。

  3. BIOS INT层处于实模式。任何现代OS都是保护模式。要在现代操作系统中执行BIOS调用,您必须切换到实模式,执行此操作,然后返回到保护模式。这是一个非常昂贵的操作。

但是UEFI呢?新PC(几乎任何设计用于Windows 7 x64及更高版本的设备)都使用UEFI固件,而不是旧版x86汇编语言BIOS。尽管UEFI固件通常仍被称为“BIOS”。

当UEFI第一次出现时,有人希望它会导致独立于操作系统的驱动程序。 UEFI提供了一个更简单的基于C语言的现代化API。它有一个可安装驱动程序的概念。有mechanisms for a modern OS to call UEFI services。但是,这并没有获得太多的牵引力。 UEFI“司机”非常适合预启动的东西。一旦操作系统接管它,它自己的事情。

在操作系统中使用UEFI驱动程序仍然会导致性能开销。另外,将“不透明”的UEFI驱动程序集成到现有的操作系​​统中将很困难。每个操作系统都有多层磁盘/文件系统驱动程序,网络堆栈,USB等等。它们都做得有点不同,并且很难获得UEFI驱动程序。 (在10年左右再次询问。)

注意,有一个其他的操作系统无关的“驱动程序”所使用相当多的现代笔记本电脑层:ACPI。许多平台的ASL/AML code中都有“驱动程序”,可以为您的操作系统提供简单的事件通知。最常见的例子是键盘上方的“特殊”按钮,用于启动应用程序或控制音量。这些按钮通常会触发操作系统响应的event handler。不过,这是一个非常简单的通知系统。

相关问题