linux
的裝置管理
§6.1
裝置管理概述
linux
裝置的分類
linux
使用套介面
(socket)
以檔案i/o
方式提供了對網路資料的訪問。
裝置驅動程式
三.裝置的識別
而多個scsi
硬碟及其各個分割槽分別賦予次裝置號1、
2、3…。
[root@localhost /]# ls /dev/sda* -l
brw-r----- 1 root disk 8, 0 11-07 12:31
/dev/sda
brw-r----- 1 root disk 8, 1 11-07 12:31
/dev/sda1
brw-r----- 1 root disk 8, 2 11-07 12:31
/dev/sda2
四.裝置檔案
file_operations
結構體得到服務子程式的操作函式入口,然後呼叫其中的
read()
函式完成資料輸入操作。
分別完成對裝置的啟動、停止裝置執行,向裝置輸出資料的操作。
§6.2 linux
的i/o控制
linux
的i/o
控制方式有三種:查詢等待方式、
中斷方式和
dma(
記憶體直接訪問)方式
. 一.查詢等待方式
static inline intlp_char_polled(charlpchar, int minor)
while(!lp_ready(minor,status) && count < lp_char(minor));
if (count == lp_char(minor))
outb_p(lpchar, lp_b(minor)); /*
向裝置輸出字元*/
. .
二.中斷方式
static struct irqaction *irq_action[nr_irqs+1];
struct irqaction ; 的
irqaction
結構體,並把它登記到
irq_action
陣列中。
int request_irq(unsigned int irq,
void (*handler)(int, void *, struct pt_regs *),
unsigned long irqflags,
const char * devname,
void *dev_id);
§6.3
字元裝置與塊裝置管理
一.字元裝置管理
#define max_chrdev 128
static struct device_struct
chrdevs[max_chrdev];
struct device_struct ;
二.塊裝置管理
static struct device_struct blkdevs[max_blkdev]
struct blk_dev_struct blk_dev[max_blkdev];
struct blk_dev_struct ;
request_fn :指向裝置讀寫請求函式的指標
current_request
:指向request
結構的指標。
當緩衝區需要與裝置進行資料交換時,
緩衝機制就在
blk_dev_struct
中加入乙個request
結構。
每個request結構對應乙個緩衝區對裝置的讀寫請求。
在request結構中有乙個指向緩衝區資訊的指標,
由它決定緩衝區的位置和大小等。
Linux裝置管理
命令 意義ls l 第乙個字元 b block 塊裝置,c character 字元裝置 p pipe 管道裝置 s socket 套接字裝置 sys blocks 系統所有塊裝置的軟鏈結檔案 dd沿襲了ibm的jcl的風格,複製固定大小的資料塊,使用等號而不是減號來設定選項和引數值 dev sd ...
裝置管理 裝置管理概述
i o裝置是作業系統龐大複雜的主要原因之一,不同外部裝置之間,速度差異很大,控制介面複雜,資料表示各異,與其它功能聯絡緊密,特別是檔案系統。在這種情況下,難以針對裝置做統一的規劃與設計。對i o裝置的直接控制,是通過特定的裝置控制器進行的,主機只需要對控制器進行操作即可,無需理會具體裝置的引數細節。...
裸裝置管理
裸裝置 raw device,就是不被作業系統直接管理的裝置。這種裝置少了作業系統一層,i o效率更高。資料庫一般會用到。常與lvm聯用。建立裸裝置 mkdir raw mknod dev rawctl c 162 0 mknod dev raw raw1 c 162 1 mknod dev raw...