日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

16 FreeBSD連載:設備文件

設備文件對于每種硬件設備,系統(tǒng)內(nèi)核有相應的設備驅動程序負責對它的處理 。而在Unix中,使用設備文件的方式來表示硬件設備,每種設備驅動程序都被抽象為設備文件的形式,這樣就給應用程序一個一致的文件界面,方便應用程序和操作系統(tǒng)之間的通信 。所有的設備文件都放置在/dev目錄下 。
$ ls -l /dev/rfd0 /dev/fd0
brw-r-----9 root operator 2, 0 Nov 12 13:32 /dev/fd0
crw-r-----9 root operator 9, 0 Nov 12 13:32 /dev/rfd0
在上面的列表中可以看到原來顯示文件大小的地方,現(xiàn)在改為顯示兩個用逗號分隔的數(shù)字 。這是系統(tǒng)用來表示設備的兩個重要的序號,第一個為主設備號(major number),用來表示設備使用的硬件驅動程序在系統(tǒng)中的序號;第二個為從設備號(minor number),硬件驅動程序使用它來區(qū)分不同的設備和判斷如何進行處理 。FreeBSD下主設備號用8位表示,而從設備號用24位來表示 。事實上設備文件的名字并不重要,重要的是這兩個設備號,操作系統(tǒng)使用它確定硬件驅動程序,并與硬件驅動程序進行通信 。
磁盤和塊設備文件
在Unix下將設備分為兩種,塊設備和字符設備,其中塊設備主要用于隨機存取的目的,磁盤為這一類設備的代表,而字符設備用于順序存取的目的,例如磁帶或終端設備 。
磁盤設備的命名方式在前一章中提到過,磁盤設備由磁盤名、磁盤的序號、分區(qū)的序號、以及FreeBSD子分區(qū)的序號來表示,例如在設備wd0s1a中,wd為驅動程序,此后為設備序號,0表示為這個驅動程序的第一個設備,Unix習慣上從0開始計數(shù),第三部分的分區(qū)序號為s1,注意這里為第一個分區(qū),因為s1是從1開始向下排列的,與一般Unix的習慣不同,這是因為分區(qū)的概念是一個Dos概念,因此這里也使用與DOS相對應的順序,最后一個a為FreeBSD子分區(qū)的順序,每個UFS基本分區(qū)可以有8個子分區(qū),這8個分區(qū)按照習慣用于不同的目的,例如wd0s1a用于根文件系統(tǒng),wd0s1b用做交換分區(qū),使用wd0s1c表示整個硬盤分區(qū)wd0s1 。因此可以將fd0c用于對整個軟盤fd0進行存取,wcd0c用于對整個光盤wcd0進行存取等 。
傳統(tǒng)名字,例如wd0a,可以用于表示第一個UFS分區(qū)上的a子分區(qū),如wd0s1a 。一般一個硬盤上只有一個UFS分區(qū),因此可以直接使用傳統(tǒng)名字標識磁盤分區(qū) 。
在使用ls命令列表時,系統(tǒng)使用c(character)標識一個字符設備文件,使用b(block)標識塊設備文件 。
$ ls -l /dev/*wd0s1
crw-r----- 1 root operator 3, 131072 Oct 31 19:59 /dev/rwd0s1
brw-r----- 1 root operator 0, 131072 Oct 31 19:59 /dev/wd0s1
雖然硬盤設備為塊設備,用于隨機存取的目的 。但它也可以被順序存取,這種方式稱為raw方式 。使用raw方式存取硬盤,就需要一個對應的字符類型的設備文件,對應wd0s1硬盤設備的字符類型硬盤設備為rwd0s1,設備名中第一個字母使用r表示對硬盤的raw方式順序存取 。
由于設備文件就代表了整個設備,就可以使用FreeBSD的標準命令以raw方式直接操作設備文件,從而直接訪問硬件設備 。利用這種方式,能完成很多有用的工作,但是這種方式也非常危險,例如對硬盤設備文件的操作失誤會破壞整個硬盤的數(shù)據(jù) 。幸好大部分直接訪問設備的操作都為讀取相應數(shù)據(jù)的操作,而不需要寫入磁盤設備 。
當某個設備不可使用,則其對應的設備文件也不能正常訪問,因此直接訪問設備文件可以判斷對應的設備是否真正正常 。例如,判斷連接到第一個串口,ttyd0上的鼠標是否正常工作,使用命令 “cat

推薦閱讀