第1部分:在哪裏執行設備驅動程序代碼?內核空間還是用戶空間?
到linux/unix專家那裏,請你幫我理解設備驅動程序。據我所知,驅動程序是一段代碼,直接與硬件交互,並暴露一些apis訪問設備。我的問題是這段代碼在哪裏運行,用戶空間還是內核空間?
我知道在內核空間中執行的代碼有一些額外的特權,如訪問任何內存位置(如果我錯了,請更正)。如果我們安裝第三方驅動程序,並且它在內核空間運行,這對整個系統是否有害?任何操作系統如何處理?
第2部分:
讓我們的USB設備的一個例子(攝像頭,鍵盤..),系統如何識別這些設備?系統如何知道要安裝哪個驅動程序?驅動程序如何知道設備的地址以讀取和寫入數據?
(如果這是太大了,這裏回答,請提供一些好的文檔或教程鏈接..,我試過,但沒有找到這些答案。請幫助)
你應該把這個問題分成兩個單獨的問題。 – SomeWittyUsername
在我的Linux設備驅動程序開發的舊日子裏,設備驅動程序在內核中編譯並執行100%的內核空間。如今內核似乎保護自己免受多餘的設備驅動程序攻擊,甚至中斷它們。但是如果這是一個關於學術考試的問題,我會以「核心空間」作爲答案。 –
關於USB設備檢測,VID和PID用於識別設備。 –