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