SPOOLing假脱机技术详细介绍
技術(shù)目的
這就得先提到設(shè)備的分類了:設(shè)備分為獨(dú)占式設(shè)備,共享使用設(shè)備和虛擬設(shè)備(即為以spooling使用的外部設(shè)備)。獨(dú)占設(shè)備申請后只有到被釋放才能被其他進(jìn)程申請使用,為了讓獨(dú)占設(shè)備能邏輯上像共享設(shè)備一樣使用,是一種將獨(dú)占式設(shè)備改造成共享設(shè)備的技術(shù)(邏輯上)。
(參考操作系統(tǒng)發(fā)展中的脫機(jī)輸入輸出方式,它的目的是解決速度不匹配問題,假脫機(jī)是將獨(dú)占設(shè)備共享)
組成
1.輸入輸出井:在磁盤上開辟的兩個存儲空間,輸入井用于收容I/O設(shè)備輸入的數(shù)據(jù),輸出井用于收容用戶程序輸出的數(shù)據(jù)。
2.輸入輸出緩沖區(qū):內(nèi)存開辟的兩個緩沖區(qū)。輸入緩沖區(qū)用于暫存由輸入設(shè)備送來的數(shù)據(jù),以后再送到輸入井。輸出緩沖區(qū)用于暫存從輸出井送來的數(shù)據(jù),以后再送到輸出設(shè)備。(結(jié)合圖看)
3.輸入輸出進(jìn)程:輸入進(jìn)程將用戶要求的數(shù)據(jù)從輸入機(jī)通過輸入緩沖區(qū)送到輸入井,當(dāng)CPU需要輸入數(shù)據(jù)時,直接將數(shù)據(jù)從輸入井讀到內(nèi)存。輸出進(jìn)程把用戶要求輸出的數(shù)據(jù)先從內(nèi)存送到輸出井,待輸出設(shè)備空閑時,將輸出井?dāng)?shù)據(jù)經(jīng)過緩沖區(qū)送到輸出設(shè)備。
以共享打印機(jī)舉例
1.共享打印機(jī)提出打印輸出請求,阻塞用戶進(jìn)程,喚醒打印機(jī)守護(hù)進(jìn)程(假設(shè)打印任務(wù)是其實現(xiàn))
2.打印機(jī)守護(hù)進(jìn)程在輸出井申請一個空閑盤塊區(qū)(注意上圖輸入輸出經(jīng)分了很多小格),將需要打印的數(shù)據(jù)放在其中。
3.打印守護(hù)進(jìn)程申請用戶請求打印表,將打印要求等填入其中,把該表掛到打印請求隊列上(spooling目的就是為實現(xiàn)共享)
4.若打印機(jī)空閑,則守護(hù)進(jìn)程取一張請求打印表,按要求將打印數(shù)據(jù)從輸出井送到內(nèi)存緩沖區(qū),開始打印。
4.當(dāng)沒有打印請求了,守護(hù)進(jìn)程阻塞。
難點(diǎn)
Q.為什么spooling可以提高I/O速度?
spooling其實是以空間換時間實現(xiàn)I/O速度提升。(開辟了輸入輸出井)
以上面打印機(jī)解釋。磁盤是一種高速設(shè)備,與內(nèi)存交換速度明顯優(yōu)于打印機(jī)等中低速設(shè)備。若沒有spooling技術(shù),當(dāng)要打印數(shù)據(jù)時,CPU要向打印機(jī)輸出要打印的數(shù)據(jù),打印機(jī)速度慢。有spooling時,cpu先將數(shù)據(jù)送到磁盤輸出井,然后去做其他事。當(dāng)打印機(jī)被占用,spooling系統(tǒng)將打印請求掛到等待隊列上,等待條件滿足,然后執(zhí)行。
后續(xù)還會寫一些操作系統(tǒng)文章,需要的可以關(guān)注一下,有問題的可以留言。
總結(jié)
以上是生活随笔為你收集整理的SPOOLing假脱机技术详细介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [新思路]Online DVD Rent
- 下一篇: 知乎高赞:有哪些你看了以后大呼过瘾的数据