linux裝置管理

2021-06-19 06:01:29 字數 1944 閱讀 2108

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...