回答
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. 當我們已經有一階邏輯時,爲什麼我們需要PDDL?
- 4. 當我們已經有mapDispatchToProps時,爲什麼我們需要使用redux-thunk
- 5. 當我們已經有向量時,爲什麼我們需要同步ArrayList?
- 6. 爲什麼Haskell需要Data.Sequence當我們已經有了列表?
- 7. 爲什麼我們需要一個數據庫驅動程序?
- 8. 我們已經有了nodejs,爲什麼我們需要nginx或apache?
- 9. 爲什麼我們需要Maven或Ant,如果我們已經有Eclipse?
- 10. 爲什麼我們已經有CSS時需要ASP.NET主題?
- 11. 如果我們已經有[HttpPost],爲什麼需要使用JsonRequestBehavior?
- 12. 爲什麼我們需要analysis_export當我們有analysis_port
- 13. 當我們有點子時,爲什麼我們需要Anaconda?
- 14. 爲什麼我們需要IEDriver和ChromeDriver,但沒有Firefox驅動程序?
- 15. 爲什麼我們需要設置SONAR_RUNNER_OPTS?
- 16. 爲什麼我們需要序列化的Web服務
- 17. 爲什麼我需要=(class)...當我已經宣佈課程時?
- 18. 爲什麼我們需要特殊的設備驅動程序來使用iSCSI HBA啓動操作系統?
- 19. 雖然我們有Swing,但爲什麼我們需要JavaFX?
- 20. 封裝 - 當setter已經公開時,爲什麼我們需要它?
- 21. 當HTTP代理已經緩存內容時,爲什麼我們需要CDN?
- 22. 爲什麼我們需要下載瀏覽器(IE,Chrome)驅動程序
- 23. 當我們有.java文件可用時,爲什麼我們需要JSP文件?
- 24. DavLockDB:我們需要什麼?
- 25. 爲什麼我們需要Apache Harmony項目,而已經有一個OpenJDK項目
- 26. 爲什麼我們在java中需要switch-case語句,如果我們已經有if-else if-else語句
- 27. 爲什麼我們需要通用服務定位器庫?
- 28. 爲什麼我們在Selenium Webdriver中不需要服務器?
- 29. Nodejs vs SignalR:爲什麼我們需要服務器端的JavaScript?
- 30. 爲什麼我們需要服務器來運行angular2應用程序?
如果只有BIOS可用,花式視頻卡如何告訴GPU如何運行所有漂亮的OpenGL/DX操作? – user2864740