【正文】
OLing技術(shù) 磁盤 虛擬設(shè)備 1 虛擬設(shè)備 2 虛擬設(shè)備 3 虛擬設(shè)備 4 進程 A 進程 B 進程 C 進程 D 輸入設(shè)備 輸出設(shè)備 虛擬設(shè)備及其虛擬分配 輸入井 輸出井 虛擬分配 linux操作系統(tǒng) 華軟軟件學(xué)院電子系 P33 I/O系統(tǒng)的軟件組織 操作系統(tǒng) I/O硬件管理 I/O軟件管理 上層用戶程序(應(yīng)用層) 設(shè)備 控制器 命令寄存器 底層硬件設(shè)備(物理層) 鍵 盤中斷處理程序 設(shè)備驅(qū)動程序 與設(shè)備無關(guān)的 I/O軟件 用戶空間的 I/O軟件 狀態(tài)寄存器 數(shù)據(jù)寄存器 linux操作系統(tǒng) 華軟軟件學(xué)院電子系 P34 Linux 的設(shè)備管理 ?Linux 系統(tǒng)把每一個 I/O設(shè)備看成一個 文件,即設(shè)備文件 。 ?Linux 設(shè)備管理: n 向上(面向用戶)提供設(shè)備文件的系統(tǒng)調(diào)用 n 向下(面向設(shè)備)內(nèi)核將控制權(quán)交給設(shè)備驅(qū)動,由其完成底層的設(shè)備驅(qū)動。 ?Linux 系統(tǒng)用主設(shè)備號和從設(shè)備號來標(biāo)識設(shè)備。 n 主設(shè)備號( major number)描述控制這個設(shè)備的驅(qū)動程序,驅(qū)動程序和主設(shè)備號一一對應(yīng),主設(shè)備號相同的設(shè)備使用同一個驅(qū)動程序。 n 從設(shè)備號( minor number)用來區(qū)分同一個驅(qū)動程序控制的不同設(shè)備。 ?設(shè)備驅(qū)動程序接口 n Linux 設(shè)備管理向其他子系統(tǒng)提供了一個統(tǒng)一的接口,即通過結(jié)構(gòu) file_operations 來完成。 linux操作系統(tǒng) 華軟軟件學(xué)院電子系 P35 Linux 的設(shè)備驅(qū)動程序的框架 ?設(shè)備驅(qū)動程序與外界的接口分為三部分 n 驅(qū)動程序與操作系統(tǒng)內(nèi)核的接口 n 驅(qū)動程序與系統(tǒng)引導(dǎo)的接口 n 驅(qū)動程序與設(shè)備的接口 ?設(shè)備驅(qū)動設(shè)備的程序結(jié)構(gòu)分為如下幾部分 n 驅(qū)動程序的注冊與注銷; n 設(shè)備的打開與釋放; n 設(shè)備的讀寫操作; n 設(shè)備的控制操作; n 設(shè)備的中斷和輪詢處理。 linux操作系統(tǒng) 華軟軟件學(xué)院電子系 P36 Linux 的塊設(shè)備驅(qū)動程序 ?接口 n IDE 硬盤為塊設(shè)備,因此采用了緩沖技術(shù) linux操作系統(tǒng) 華軟軟件學(xué)院電子系 P37 Linux 的塊設(shè)備驅(qū)動程序 ?接口的注冊與注銷 n 通過 ide_init()進行初始化,包括設(shè)置硬盤的初值init_ide_data(),設(shè)置 PCI_IDE 接口參數(shù)probe_for_hwifs()等。最終調(diào)用塊設(shè)備注冊函數(shù)register_blkdev()來完成向內(nèi)核得的注冊。 ?讀寫請求隊列 n 當(dāng)內(nèi)核要求數(shù)據(jù)傳輸時,他將請求發(fā)送到請求隊列,請求隊列再傳給設(shè)備的請求函數(shù)。 ?處理讀寫請求 n IDE 硬盤驅(qū)動程序通過 request 結(jié)構(gòu)向硬盤發(fā)送讀寫請求。 linux操作系統(tǒng) 華軟軟件學(xué)院電子系 P38 Linux 的字符設(shè)備驅(qū)動程序 linux操作系統(tǒng) 華軟軟件學(xué)院電子系 P39 小 結(jié) ?設(shè)備分類 n 字符設(shè)備、塊設(shè)備 n 獨占型設(shè)備、共享型設(shè)備、虛擬設(shè)備 ?外設(shè)與主機的 I/O控制方式 n 循環(huán) I/O測試方式、程序中斷 I/O方式、直接內(nèi)存存取方式、通道方式 ?I/O系統(tǒng)的軟件組織 n 中斷處理程序、設(shè)備驅(qū)動程序、與設(shè)備無關(guān)的 I/O軟件、用戶空間的 I/O軟件 ?Linux系統(tǒng)把 I/O設(shè)備當(dāng)做文件(設(shè)備文件)進行管理 linux操作系統(tǒng) 華軟軟件學(xué)院電子系 P40 ?下周總復(fù)習(xí) 預(yù)習(xí)內(nèi)容