Operating system 当我们已经有BIOS服务时,为什么需要设备驱动程序

Operating system 当我们已经有BIOS服务时,为什么需要设备驱动程序,operating-system,device-driver,bios,Operating System,Device Driver,Bios,在某个测验中,我有一个问题无法回答。谁能告诉我: 既然BIOS已经有了与硬件通信的代码,为什么还需要设备驱动程序?BIOS为您提供基本的输入/输出,而硬件的功能远远超出了基本功能。没有驱动程序,就不可能使用这些功能 此外,一些硬件根本不是基础的,在安装驱动程序之前无法使用它们的功能。假设您谈论的是传统的x86 BIOS,那么有两个大问题: BIOS只有与引导系统所需的有限设备子集(存储控制器、以太网、USB键盘/鼠标、USB大容量存储)通信的代码。BIOS没有USB打印机或网络摄像头的驱动程序。

在某个测验中,我有一个问题无法回答。谁能告诉我:


既然BIOS已经有了与硬件通信的代码,为什么还需要设备驱动程序?

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


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

假设您谈论的是传统的x86 BIOS,那么有两个大问题:

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

  • BIOS INT调用速度慢,对于现代硬件来说不切实际。它们被设置为读/写小块数据(从磁盘读取几个字节,在屏幕上打印一个字符)。它们没有一种机制,可以使用DMA从磁盘向缓冲区读取数兆字节。请记住,最初的BIOS INT调用是为软盘驱动器和文本模式显示器开发的

  • BIOS INT层处于实模式。任何现代操作系统都是受保护模式。要在现代操作系统中执行BIOS调用,您必须切换到实模式,完成工作,然后返回到受保护模式。这是一项耗资巨大的手术

  • 但是UEFI呢?新电脑(几乎所有为Windows 7 x64及更高版本设计的电脑)使用UEFI固件,而不是传统的x86汇编语言BIOS。虽然UEFI固件通常仍被称为“BIOS”

    当UEFI首次出现时,人们希望它能带来独立于操作系统的驱动程序。UEFI提供了一个现代的基于C的API,使用起来稍微容易一些。它有一个可安装驱动程序的概念。有。然而,这并没有获得多少动力。UEFI“驱动程序”基本上是用于启动前的东西。一旦操作系统接管,它就会做自己的事情

    在操作系统中使用UEFI驱动程序仍然会带来性能开销。此外,将一个“不透明”的UEFI驱动程序集成到现有的操作系统中是很困难的。每个操作系统都有多层磁盘/文件系统驱动程序、网络堆栈、USB等。它们的操作方式都略有不同,很难找到合适的UEFI驱动程序(大约10年后再询问。)


    请注意,现代笔记本电脑中经常使用的另一个独立于操作系统的“驱动程序”层是:ACPI。许多平台都有“驱动程序”,可以向操作系统提供简单的事件通知。最常见的例子是键盘上方笔记本电脑上的“特殊”按钮,用于启动应用程序或控制音量。这些按钮通常会触发操作系统响应的事件。不过,这是一个非常简单的通知系统。

    如果只有一个BIOS可用,一张精美的视频卡如何告诉GPU如何运行所有漂亮的OpenGL/DX操作?@xxbbcc是的,我意识到我是反向操作的-我查阅了上述链接并发出了“oops”!谢谢你的快速回复。请再解释一下!我想要更详细的技术资料answer@user2864740哈哈,没问题。我迟到也是出于同样的原因。@user3139987你说的技术性是什么意思?这是一个宽泛的问题,不知何故离题了。@SAM离题了什么?这是汇编中设备驱动程序编程的一个问题。我们已经介绍了汇编、BIOS和设备驱动程序的精细细节。请提供更多细节!你给出的答案也出现在我的脑海中,但我的导师已经拒绝了。他说:“这是一个外行的回答。”。现在我该怎么办?