裝置驅動簡介

2021-10-10 22:38:27 字數 2741 閱讀 5662

系統呼叫是作業系統核心應用程式之間的介面

裝置驅動程式是作業系統核心機器硬體之間的介面

裝置驅動程式為應用程式遮蔽了硬體的細節,這樣在應用程式看來,硬體只是個裝置檔案,應用程式可以象操作普通檔案一樣對硬體裝置進行操作。

裝置驅動與使用者程式的區別

1、應用程式以main 開始;驅動程式沒有main,它以乙個模組初始化函式作為入口。

2、應用程式從頭到尾執行乙個任務;驅動程式完成初始化之後不再執行,等待系統呼叫。

3、應用程式可以使用glibc 等標準c 函式庫;驅動程式不能使用標準c庫。

4、裝置驅動提供什麼能力,應用程式提供策略即如何使用這些能力。

裝置驅動程式是核心的一部分,它主要完成4個功能:

1、對裝置初始化和釋放;

2、把資料從核心傳送到硬體,從硬體讀取資料;

3、讀取應用程式傳送給裝置檔案的資料和回送應用程式請求的資料;

4、檢測和處理裝置出現的錯誤。

使用者態和核心態

1、系統執行時一般情況下,分使用者態和核心態,這兩種執行態下的資料互不可見的。

2、驅動程式是核心的一部分,工作在核心態;應用程式工作在使用者態。

3、這樣就存在資料空間訪問的問題: 無法通過指標直接將二者的資料位址進行傳遞。

系統提供一系列函式幫助完成資料空間轉移如:

get_user 、put_user 、copy_from_user 、copy_to_user等函式

關係圖:(1)、硬體、驅動、作業系統和應用程式的關係:

(2)、裝置驅動與軟硬體系統

(3)、應用程式與庫函式、核心、驅動

(1)、字元裝置是面向資料流的裝置,請求緩衝區,對裝置的訪問只能按順序按位元組的訪問而不能隨機訪問。

(2)、linux下的大多裝置都是字元裝置。應用程式是通過字元裝置節點來訪問字元裝置的。通常至少需要實現 open, close, read, 和 write 等系統呼叫。

(3)、裝置節點一般都由mknod命令都建立在/dev目錄下,包含了裝置的型別、主/次裝置號以及裝置的訪問許可權控制等,如:

crw-rw----  1 root  root 4, 64 feb 18 23:34 /dev/ttys0
(4)\常見的字元裝置有滑鼠、鍵盤、串列埠、控制台等。

當然,也有可以隨機訪問的字元裝置,比如磁帶驅動器,但訪問隨機資料所需要的時間很大程度上依賴於資料在裝置內的位置。

(1)、儲存裝置一般屬於塊裝置,塊裝置有****請求緩衝區,並且支援隨機訪問而不必按照順序去訪問資料,比如你可以先訪問後面的資料,然後在訪問前面的資料,這對字元裝置來說是不可能的。

(2)、儘管在linux下有塊裝置節點,但應用程式一般是通過檔案系統及其快取記憶體來訪問塊裝置的,而不是直接通過裝置節點來讀寫塊裝置上的資料。

(3)、每個塊裝置在/dev/目錄下都有乙個對應的裝置檔案,即裝置節點,它們包含了裝置的型別、主/次裝置號以及裝置的訪問許可權控制等 ,如

brw-rw----  1 root  root  3, 1 jul  5  2000 /dev/hda1
(4)\塊裝置既可以作為普通的裸裝置用來存放任意資料,也可以將塊裝置按某種檔案系統型別的格式進行格式化,然後按照該檔案系統型別的格式來讀取塊裝置上的資料。

常見的塊裝置有各種硬碟、flash磁碟、ram磁碟等。

(1)、不同於字元裝置和塊裝置,它是面向報文的而不是面向流的,它不支援隨機訪問,也沒有請求緩衝區。

(2)、在linux裡乙個網路裝置也可以叫做乙個網路介面,它沒有像字元裝置和塊裝置一樣的裝置號,只有乙個唯一的名字如eth0、 eth1等,這個名字也不需要與裝置檔案節點對應,應用程式是通過socket而不是裝置節點來訪問網路裝置,在系統裡根本就不存在網路裝置節點。

1裝置驅動簡介

核心劃分 程序管理 記憶體管理 檔案系統 裝置控制 網路1.2.1可載入模組 每塊可以在執行時新增到核心的 被稱為乙個模組。insmod動態連線程式,rmmod程式連線 1.3裝置和模組的分類 三種基本裝置型別 字元模組,塊模組,網路模組。1.4安全問題 在官方的核心發布裡,只有乙個有授權的使用者可...

字元裝置驅動簡介

通過字元裝置檔案,應用程式可以使用相應的字元裝置驅動程式來控制字元裝置。建立字元裝置檔案的方法 字元裝置在核心中使用struct cdev來描述。struct cdevlinux核心中使用dev t型別來定義裝置號,dev t這種型別其實質為32位的unsigned int,其中高12位為主裝置號,...

裝置驅動(1) 驅動程式簡介

裝置驅動是幹什麼用的?linux裝置驅動程式使得特定的硬體響應乙個定義良好的內部程式設計介面 系統呼叫open read write close 這些介面完全隱藏了裝置的工作細節。使得使用者通過呼叫標準的系統呼叫來完成對於硬體的操作。字元裝置是一種按位元組順序訪問的裝置,因此字元裝置通常至少要實現o...