我知道操作系統內核是由驅動程序組成的,但驅動程序如何成爲操作系統的一部分?內核是否自己反編譯,然後添加驅動程序並重新編譯自己?或者是驅動程序插件內核?有人告訴我,對於大多數操作系統,驅動程序實際上已經成爲內核的一部分,但每當我編譯C程序,它會變成一個普通的可執行驅動程序如何成爲操作系統的一部分?
1
A
回答
4
的驅動器架構完全取決於您的操作系統。對於大多數運行在計算機上的操作系統(而不是嵌入式設備),將驅動程序視爲內核的「插件」非常準確。也就是說,有很多較老的,較小的和不太複雜的操作系統,它們需要你在內核中構建驅動程序 - 不需要動態加載。現在,幾個操作系統都支持「用戶模式」驅動程序,這些驅動程序是永遠不會在內核內存空間中運行的設備驅動程序。
+0
當然,在微內核操作系統中,驅動程序只是普通的用戶空間程序(比如網頁瀏覽器或文本編輯器)。 – 2010-09-07 00:47:25
1
在操作系統如Linux驅動程序可以實際編譯進內核映像。儘管即使靜態鏈接,他們也可能展現出一種插件式架構,允許用戶輕鬆包含所需的驅動程序。
或者,它們是動態鏈接,並可以在啓動時或在需要的時候通過一些系統級軟件按需加載。
2
它取決於o/s。
經典,內核卻是,所有的司機單片可執行 - 又重修時要添加需要新的驅動程序,其中包括所有的舊沿着新驅動程序的代碼。
在現代的Linux,以及可能還有其它O/S過,車手動態內核在需要時加載。驅動程序是以允許內核執行加載的形式創建的;通常,這意味着以共享對象或動態鏈接庫格式。
相關問題
- 1. AHCI驅動程序爲自己的操作系統
- 2. 驅動程序如何成爲內核的一部分?
- 3. 程序如何成爲一個過程。操作系統如何使程序成爲一個進程
- 4. WiX - 安裝依賴於操作系統的驅動程序
- 5. 什麼是Windows操作系統中的驅動程序堆棧?
- 6. PostgreSQL的:ODBC驅動程序在64位操作系統
- 7. 操作系統和驅動程序如何影響OpenCL內核時序?
- 8. 如何根據操作系統安裝不同的驅動程序版本?
- 9. 如何通過Android操作系統中的Java訪問設備驅動程序?
- 10. 服務器如何成爲分佈式系統的一部分?
- 11. 單程序操作系統
- 12. 如何找到使用java的操作系統驅動器?
- 13. linux如何成爲一個內核和一個操作系統
- 14. 如何讓啓動程序時,操作系統啓動
- 15. 如何啓動linux系統和設備驅動程序編程
- 16. 如何爲不同的操作系統製作移動應用程序
- 17. 事件驅動系統如何工作?
- 18. 驅動程序Bulid錯誤的Vistual Studio的64位操作系統2005
- 19. 源特定的多播操作系統/驅動程序的性能
- 20. 如何爲每個Windows操作系統和我的應用程序拆分RAM?
- 21. 8086無操作系統編程;分割
- 22. 操作系統中的加載程序如何工作?
- 23. 如何重置無線驅動程序中的系統?
- 24. C#程序知道在哪個驅動器中安裝了Windows操作系統?
- 25. 誰在CreateFile上強制執行dwShareMode?操作系統還是驅動程序?
- 26. 操作系統 - 分頁
- 27. 作爲操作系統的一部分或不包含的應用程序 - 有什麼區別?
- 28. 如何編程操作系統?
- 29. 什麼時候使用SeTcbPrivilege? (「作爲操作系統的一部分。)
- 30. libc和malloc是操作系統的一部分嗎?
如果您構建操作系統內核,則編譯器設置與構建可執行文件時使用的設置不同。基本原理是一樣的,但是如果你創建一個足夠原始的「映像」來啓動一臺機器,編譯器會做一些特殊的事情。 – 2010-09-06 22:58:00