裝置節點(檔案)
在Linux系統下,裝置檔案是種特殊的檔案型別,其存在的主要意義是溝通使用者空間程式和核心空間驅動程式。換句話說,使用者空間的應用程式要想使用驅動程式提供的服務,需要經過裝置檔案來達成。當然,如果你的驅動程式只是為核心中的其他模組提供服務,則沒有必要生成對應的裝置檔案。
它被建立在/dev下,是連線核心與使用者層的樞紐,
首先,類unix系統對裝置的訪問都是基於檔案形式的。
在類unix系統中,你要訪問一個硬體裝置。一般和訪問一個普通檔案差不多。
因此,/dev下的裝置節點就被作為這樣的一類特殊檔案來存在。
在驅動程式中同樣需要實現各種檔案的操作呼叫,如open,release,read,write,ioctl等。
應用程式通過open("/dev/xxx",O_RDWR)這樣的程式碼來開啟裝置。
驅動程式通過這樣的節點嚮應用程式提供各種服務:如read,write,ioctl等
、驅動程式裡面的函式在一般情況下,應用程式是呼叫不到的。它被隱藏在VFS(虛擬檔案系統)的後面。
2、由於存在了VFS。所以,linux下的檔案(包括各種裝置)都是可以被多個應用程式開啟的,從而也可以被多個應用程式使用。
3、對於存在臨界資源的裝置,一般在驅動程式中需要對臨界資源進行保護。從而使得多個應用程式或程序能安全的操作裝置。
4、正是引入了VFS這個架構,使得在linux下對裝置的訪問方法基本相同。例如:向螢幕畫圖可以用write()系統呼叫。而向串列埠寫入資料也可以用write()系統呼叫。
4.11. 裝置和裝置節點
在一個系統裡,硬體描述通常用法就是一個裝置對應一個術語,包括磁碟、印表機、顯示卡和鍵盤。 當 FreeBSD 啟動過程中,大多數的裝置都能探測到並顯示出來, 您也可以查閱/var/run/dmesg.boot
, 引導時所有資訊都在裡面。
例如, acd0
就是 首個 IDE 光碟裝置, 而 kbd0
則代表鍵盤。
在UNIX®作業系統裡,大多數裝置存在的特殊訪問檔案就是叫做裝置節點, 他們都定位在/dev
目錄裡。
4.11.1. 建立裝置節點
當在系統中新增新裝置或將附加裝置的支援編譯進核心之後, 都必須為其建立裝置節點。