2011-05-28 132 views
2

這可能是這個網站的一個蹩腳的問題,但在這裏。駕駛員便攜性

驅動程序可以移植嗎?例如,是否可以爲Mac的鍵盤背光寫驅動程序,並將其移植到另一個unix系統,也許是Solaris?

或者是驅動程序可移植性的矛盾?

涵蓋此主題的任何文章將不勝感激。

+1

不,這不是博客。 – 2011-05-28 19:56:13

回答

4

設備驅動程序需要服務抽象的兩層這使得便攜至少硬:

1)當然駕駛員需要特定設備被寫入。您可以理解的假設是,現在一旦我根據適當的設備規範(數據表,...)實施了驅動程序,爲什麼不能在每臺需要訪問該設備的計算機上運行。

進來點

2)驅動程序被寫入適合某個操作系統。每個OS具有其自己的裝置:a)訪問設備,例如用於讀取/寫入I/O端口的功能可以被不同地調用或具有不同的簽名。此外,驅動程序的最終目標是讓用戶可以訪問設備 - 無論是通過文件系統接口還是網絡套接字或X輸入協議。爲了達到這些目的,每個操作系統都有自己的驅動程序所需的抽象集合。

這些是移植驅動程序的原因很難。儘管如此,有一些方法試圖實現這一目標,大部分時間通過用膠水代碼封裝原始驅動程序,將預期的驅動程序/操作系統接口轉換爲目標接口。

  • NDISWrapper是一個庫,允許在Linux上運行的Windows的WiFi驅動程序,
  • 從卡爾斯魯厄一些人建議用device-driver virtual machines
  • 幾個OS框架我所知道的使用設備驅動程序包裝器庫運行Linux/BSD設備驅動程序在他們的環境中。參見例如GenodeL4Re,Minix3
0

是的,他們可以。 假設驅動程序是爲設備規範編寫的,唯一阻止驅動程序可移植性的是底層操作系統,因爲不同的操作系統具有不同的體系結構和不同的控件來調用和加載設備驅動程序。但是已經有已知的實現方式,其中底層OS可以被抽象並且可以提供統一的平臺。這可能會導致驅動程序的可移植性。