回答
BIOS为您提供基本输入/输出,而硬件具有远远超越基本功能的功能。没有驱动程序,使用这些功能是不可能的。
此外,有些硬件根本不是基本的,在安装驱动程序之前不可能使用它们的功能。
@xxbbcc是的,我意识到我得到了它 - 我咨询了所说的链接,并去“哎呀”! – user2864740
感谢您的快速响应。请多一些解释!我想在技术上更详细的回答 – user3139987
@ user2864740哈哈,没问题。我出于同样的原因迟到了。 – xxbbcc
假设你是在谈论传统的x86 BIOS,有几个大问题:
该BIOS只代码引导系统所需设备的有限子集(存储控制器进行通信,以太网,USB键盘/鼠标,USB大容量存储器)。 BIOS没有USB打印机或网络摄像头的驱动程序。它也不实际。有数以千计的设备需要驱动程序。 BIOS不能全部包含它们。这也意味着每个新的硬件设备都需要BIOS更新。
对于现代硬件,BIOS INT调用是流行和不切实际的。它们设置为读取/写入小块数据(从磁盘读取几个字节,在屏幕上打印一个字符)。他们没有一种机制可以使用DMA将数兆字节的数据从磁盘读取到缓冲区中。请记住原始的BIOS INT调用是为软驱和文本模式显示开发的。
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。不过,这是一个非常简单的通知系统。
- 1. 当我们有内核时,为什么我们需要驱动程序?
- 2. 我们什么时候需要设备驱动程序
- 3. 当我们已经有向量时,为什么我们需要同步ArrayList?
- 4. 当我们已经有mapDispatchToProps时,为什么我们需要使用redux-thunk
- 5. 当我们已经有一阶逻辑时,为什么我们需要PDDL?
- 6. 为什么我们需要一个数据库驱动程序?
- 7. 为什么我们需要Maven或Ant,如果我们已经有Eclipse?
- 8. 我们已经有了nodejs,为什么我们需要nginx或apache?
- 9. 为什么我们已经有CSS时需要ASP.NET主题?
- 10. 为什么我们需要IEDriver和ChromeDriver,但没有Firefox驱动程序?
- 11. 为什么我们需要设置SONAR_RUNNER_OPTS?
- 12. 为什么我们需要序列化的Web服务
- 13. 为什么我需要=(class)...当我已经宣布课程时?
- 14. 虽然我们有Swing,但为什么我们需要JavaFX?
- 15. 当HTTP代理已经缓存内容时,为什么我们需要CDN?
- 16. 当我们有.java文件可用时,为什么我们需要JSP文件?
- 17. DavLockDB:我们需要什么?
- 18. 为什么我们需要Apache Harmony项目,而已经有一个OpenJDK项目
- 19. 为什么我们在java中需要switch-case语句,如果我们已经有if-else if-else语句
- 20. 为什么我们在Selenium Webdriver中不需要服务器?
- 21. 为什么我们需要通用服务定位器库?
- 22. Nodejs vs SignalR:为什么我们需要服务器端的JavaScript?
- 23. 为什么我们在部署rails应用程序时需要apache服务器?
- 24. 什么是仿函数,为什么我们需要它们?
- 25. 装配需要什么?为什么我们使用它们?
- 26. 为什么我们需要fieldset标签?
- 27. 为什么我们需要RIA?
- 28. 为什么我们需要extern?
- 29. 为什么我们需要.htaccess的worpdress?
- 30. 为什么我们需要IAudioRenderClient接口
如果只有BIOS可用,花式视频卡如何告诉GPU如何运行所有漂亮的OpenGL/DX操作? – user2864740