2010-09-06 93 views
1

我知道操作系統內核是由驅動程序組成的,但驅動程序如何成爲操作系統的一部分?內核是否自己反編譯,然後添加驅動程序並重新編譯自己?或者是驅動程序插件內核?有人告訴我,對於大多數操作系統,驅動程序實際上已經成爲內核的一部分,但每當我編譯C程序,它會變成一個普通的可執行驅動程序如何成爲操作系統的一部分?

+0

如果您構建操作系統內核,則編譯器設置與構建可執行文件時使用的設置不同。基本原理是一樣的,但是如果你創建一個足夠原始的「映像」來啓動一臺機器,編譯器會做一些特殊的事情。 – 2010-09-06 22:58:00

回答

4

的驅動器架構完全取決於您的操作系統。對於大多數運行在計算機上的操作系統(而不是嵌入式設備),將驅動程序視爲內核的「插件」非常準確。也就是說,有很多較老的,較小的和不太複雜的操作系統,它們需要你在內核中構建驅動程序 - 不需要動態加載。現在,幾個操作系統都支持「用戶模式」驅動程序,這些驅動程序是永遠不會在內核內存空間中運行的設備驅動程序。

+0

當然,在微內核操作系統中,驅動程序只是普通的用戶空間程序(比如網頁瀏覽器或文本編輯器)。 – 2010-09-07 00:47:25

1

在操作系統如Linux驅動程序可以實際編譯進內核映像。儘管即使靜態鏈接,他們也可能展現出一種插件式架構,允許用戶輕鬆包含所需的驅動程序。

或者,它們是動態鏈接,並可以在啓動時或在需要的時候通過一些系統級軟件按需加載。

2

它取決於o/s。

經典,內核卻是,所有的司機單片可執行 - 又重修時要添加需要新的驅動程序,其中包括所有的舊沿着新驅動程序的代碼。

在現代的Linux,以及可能還有其它O/S過,車手動態內核在需要時加載。驅動程序是以允許內核執行加載的形式創建的;通常,這意味着以共享對象或動態鏈接庫格式。

相關問題