(3)I/O軟件
A、中斷處理程序:當(dāng)一個用戶程序需要某種I/O 服務(wù)時,它會去調(diào)用相應(yīng)的系統(tǒng)函數(shù),
而這個函數(shù)又會去調(diào)用相應(yīng)的設(shè)備驅(qū)動程序,在驅(qū)動程序中會啟動相應(yīng)的I/O 操作,并且被
阻塞起來,直到這個I/O 操作完成后,產(chǎn)生一個中斷程序,并跳到相應(yīng)的中斷處理程序,在
這里將會喚醒被阻塞的驅(qū)動程序。
B 設(shè)備驅(qū)動程序:直接同I/O 設(shè)備打交道,直接對它們進(jìn)行控制的軟件模塊。上層的I/O
軟件通過抽象的函數(shù)接口與設(shè)備驅(qū)動程序打交道,這些接口是標(biāo)準(zhǔn)的、穩(wěn)定不變的,而硬件
設(shè)備的具體細(xì)節(jié)被封裝在設(shè)備驅(qū)動程序里面。設(shè)備驅(qū)動程序的管理通過驅(qū)動程序地址表來實(shí)
現(xiàn)。驅(qū)動程序表中存放了各個設(shè)備驅(qū)動程序的入口地址,可以通過此表來實(shí)現(xiàn)設(shè)備驅(qū)動的動
態(tài)安裝與卸載。
C、設(shè)備獨(dú)立I/O軟件:這部分軟件在設(shè)備驅(qū)動程序的上面,是獨(dú)立的I/O軟件,也是系
統(tǒng)內(nèi)核的一部分,主要任務(wù)是實(shí)現(xiàn)所有設(shè)備都需要的一些通用I/O 功能,并向用戶級的軟件
提供一個統(tǒng)一的訪問接口。
D、用戶空間的I/O軟件:大部分的I/O軟件都是包含在操作系統(tǒng)當(dāng)中的,也有一小部
分運(yùn)行在系統(tǒng)內(nèi)核之外。主要可以分為下面兩種:
a、與用戶程序進(jìn)行鏈接的庫函數(shù):例如C 語言中與I/O 相關(guān)的庫函數(shù)。
b、完全運(yùn)行在用戶空間當(dāng)中的程序:例如Spooling 技術(shù)。
注:Spooling技術(shù)
Spooling 是“外圍設(shè)備聯(lián)機(jī)操作”的所寫,spooling 技術(shù)也叫假脫機(jī)技術(shù)或虛擬設(shè)備技術(shù),它可以把
一個獨(dú)占的設(shè)備轉(zhuǎn)變?yōu)榫哂泄蚕硖卣鞯奶摂M設(shè)備。在多道系統(tǒng)中,對于一個獨(dú)占設(shè)備,專門利用一道程序
來增強(qiáng)該設(shè)備的I/O 功能。優(yōu)點(diǎn)有二:能提供高速的虛擬I/O 服務(wù);能實(shí)現(xiàn)對獨(dú)占設(shè)備的共享。
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |