亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關(guān)注微信公眾號

概述Linux系統(tǒng)的驅(qū)動框架及驅(qū)動加載2
2007-07-28   網(wǎng)絡(luò)

2.設(shè)備文件

當(dāng)我們加載了設(shè)備驅(qū)動模塊后,應(yīng)該怎樣訪問這些設(shè)備呢?Linux是一種類Unix系統(tǒng),Unix的一個(gè)基本特點(diǎn)是“一切皆為文件”,它抽象了設(shè)備的處理,將所有的硬件設(shè)備都像普通文件一樣看待,也就是說硬件可以跟普通文件一樣來打開、關(guān)閉和讀寫。

系統(tǒng)中的設(shè)備都用一個(gè)設(shè)備特殊文件代表,叫做設(shè)備文件,設(shè)備文件又分為Block(塊)型設(shè)備文件、Character(字符)型設(shè)備文件和Socket(網(wǎng)絡(luò)插件)型設(shè)備文件。Block設(shè)備文件常常指定哪些需要以塊(如512字節(jié))的方式寫入的設(shè)備,比如IDE硬盤、SCSI硬盤、光驅(qū)等。

而Character型設(shè)備文件常指定直接讀寫,沒有緩沖區(qū)的設(shè)備,比如并口、虛擬控制臺等。Socket(網(wǎng)絡(luò)插件)型設(shè)備文件指定的是網(wǎng)絡(luò)設(shè)備訪問的BSD socket 接口。

#ls -l /dev/hda /dev/video0 /dev/log
brw-rw---- 1 root disk 3, 0 Sep 15 2003 /dev/hda
srw-rw-rw- 1 root root 0 Jun 3 16:55 /dev/log
crw------- 1 root root 81, 0 Sep 15 2003 /dev/video0

上面顯示的是三種設(shè)備文件,注意它們最前面的字符,Block型設(shè)備為b,Character型設(shè)備為c,Socket設(shè)備為s。

由此可以看出,設(shè)備文件都放在/dev目錄下,比如硬盤就是用/dev/hd*來表示,/dev/hda表示第一個(gè)IDE接口的主設(shè)備,/dev/hda1表示第一個(gè)硬盤上的第一個(gè)分區(qū);而/dev/hdc 表示第二個(gè)IDE接口的主設(shè)備??梢允褂孟旅婷睿?

#dd if=/dev/hda of=/root/a.img bs=446 count=1

把第一個(gè)硬盤上前446個(gè)字節(jié)的MBR信息導(dǎo)入到a.img文件中。

對于Block和Character型設(shè)備,使用主(Major)和輔(minor)設(shè)備編號來描述設(shè)備。主設(shè)備編號來表示某種驅(qū)動程序,同一個(gè)設(shè)備驅(qū)動程序模塊所控制的所有設(shè)備都有一個(gè)共同的主設(shè)備編號,而輔設(shè)備編號用于區(qū)分該控制器下不同的設(shè)備,比如,/dev/hda1(block 3/1)、/dev/hda2(block 3/2 )和/dev/hda3( block3/3 )都代表著同一塊硬盤的三個(gè)分區(qū),他們的主設(shè)備號都是3,輔設(shè)備號分別為1、2、3。 這些設(shè)備特殊文件用mknod命令來創(chuàng)建:

# mknod harddisk b 3 0

我們就在當(dāng)前位置創(chuàng)建出一個(gè)與 /dev/hda一樣的、可以訪問第一個(gè)IDE設(shè)備主硬盤的文件,文件名叫做harddisk。

使用下面命令可以查看設(shè)備編號:

#file /dev/hda
/dev/hda: block special (3/0)

其中Block代表/dev/hda是系統(tǒng)的Block型(塊型)設(shè)備文件,它的主設(shè)備編號為3,輔設(shè)備編號為0。

#ls -l /dev/hda /dev/hdb 
brw-rw---- 1 root disk 3, 0 Sep 15 2003 /dev/hda
brw-rw---- 1 root disk 3, 64 Sep 15 2003 /dev/hdb

使用ls -l也可以看到設(shè)備編號,/dev/hdb代表第一個(gè)IDE接口的從設(shè)備(Slave)也是Block設(shè)備,編號為(3/64),還有另外一種設(shè)備文件是/dev/tty*。使用如下命令:

#echo "hello tty1" > /dev/tty1

將字符串“hello tty1”輸出到/dev/tty1代表的第一個(gè)虛擬控制臺上,此時(shí)按“Alt + F1”可以看到該字符出現(xiàn)在屏幕上,這個(gè)特殊的文件就代表著我們的第一虛擬控制臺。

#file /dev/tty1
/dev/tty1: character special (4/1)

由上可以看到,它的類型為Character 型(字符型)設(shè)備文件,主設(shè)備號為4,輔設(shè)備號為1。同樣,/dev/tty2代表著第二個(gè)虛擬控制臺,是Character設(shè)備,編號為 (4/2)。

當(dāng)將/dev/cdrom加載到/mnt/cdrom中時(shí),只要訪問/mnt/cdrom系統(tǒng)就會自動引入到/dev/cdrom對應(yīng)的驅(qū)動程序中,訪問實(shí)際的數(shù)據(jù)。

有關(guān)設(shè)備文件的編號可以看內(nèi)核文檔/usr/src/linux-2.*/Documentation/devices.txt 文件(在Kernel的源文件解包后的Documentation目錄中),其中詳細(xì)敘述了各種設(shè)備文件編號的意義。

熱詞搜索:

上一篇:概述Linux系統(tǒng)的驅(qū)動框架及驅(qū)動加載1
下一篇:概述Linux系統(tǒng)的驅(qū)動框架及驅(qū)動加載3

分享到: 收藏