SPOOLing技術

SPOOLing技術

虛擬性是OS的四大特性之一。如果說可以通過多道程序技術將一台物理CPU虛擬為多台邏輯CPU,從而允許多個用戶共享一台主機,那麼,通過SPOOling技術便可將一台物理I/O設備虛擬為多台邏輯I/O設備,同樣允許多個用戶共享一台物理I/O設備。

技術介紹


SPOOLing技術是低速輸入輸出設備與主機交換的一種技術,通常也稱為“假離線真聯機”,他的核心思想是以聯機的方式得到離線的效果。低速設備經通道和外設在主機內存的緩衝存儲器與高速設備相聯,該高速設備通常是輔存。為了存放從低速設備上輸入的信息,或者存放將要輸出到低速設備上的信息(來自內存),在輔存分別開闢一固定區域,叫“輸出井”(對輸出),或者“輸入井”(對輸入)。簡單來說就是在內存中形成緩衝區,在高級設備形成輸出井和輸入井,傳遞的時候,從低速設備傳入緩衝區,再傳到高速設備的輸入井,再從高速設備的輸出井,傳到緩衝區,再傳到低速設備。
SPOOLing是Simultaneous Peripheral Operation On-Line (即外部設備聯機并行操作)的縮寫,它是關於慢速字元設備如何與計算機主機交換信息的一種技術,通常稱為“假離線技術”。
SPOOLing系統既不同於離線方式,也不同於直接藕合方式,SPOOLing技術實際上是一種外圍設備同時聯機操作技術,又稱為排隊轉儲技術。它在輸入和輸出之間增加了“輸入井”和“輸出井”的排隊轉儲環節,以消除用戶的“聯機”等待時間。在系統輸入模塊收到作業輸入請求信號后,輸入管理模塊中的讀過程負責將信息從輸入裝置中讀入輸入井緩衝區。當緩衝區滿時,由寫過程將信息從緩衝區寫到外存的輸入井中,讀過程和寫過程反覆循環,直到一個作業輸入完畢。當讀過程讀到一個硬體結束標誌之後,系統再次驅動寫過程把最後一批信息寫入外存輸入井並調用中斷處理程序結束該次輸入。然後,系統為該作業建立作業控制塊,從而使輸入井中的作業進入作業等待隊列,等待作業調度程序選中後進入內存運行。系統在管理輸入井過程中可以“不斷”讀入輸入的作業,直到輸入結束或輸入井滿而暫停。若系統的某台台行式印表機採用了虛擬設備技術,那麼若有進程要求對它列印輸出時,SPOOLing系統並不是將這台印表機直接分配給進程,而是在共享設備(磁碟)上的輸出,SPOOLing存儲區中為其分配一塊存儲空間,進程的輸出數據以文件形式表示的。各進程的數據輸出文件形成了一個輸出隊列,由輸出POOLing系統控制這台印表機進程,依次將隊列中的輸出文件實際列印輸出。在SPOOLing系統中,實際上並沒有為任何進程分配,而只是在輸入井和輸出井中,為進程分配一存儲區和建立一章I/O請求表。這樣,便把獨佔設備改造為共享設備。
將一台獨享印表機改造為可供多個用戶共享的印表機,是應用SPOOLing技術的典型實例。具體做法是:系統對於用戶的列印輸出,但並不真正把印表機分配給該用戶進程,而是先在輸出井中申請一個空閑盤塊區,並將要列印的數據送入其中;然後為用戶申請並填寫請求列印表,將該表掛到請求列印隊列上。若印表機空閑,輸出程序從請求列印隊首取表,將要列印的數據從輸出井傳送到內存緩衝區,再進行列印,直到列印隊列為空。
SPOOLing技術的特點:
(1)提高了I/O速度。從對低速I/O設備進行的I/O操作變為對輸入井或輸出井的操作,如同離線操作一樣,提高了I/O速度,緩和了CPU與低速I/O設備速度不匹配的矛盾。
(2)設備並沒有分配給任何進程。在輸入井或輸出井中。分配給進程的是一存儲區和建立一張I/O請求表。
(3)實現了虛擬設備功能。多個進程同時使用一獨享設備,而對每一進程而言,都認為自己獨佔這一設備,從而實現了設備的虛擬分配。不過,該設備是邏輯上的設備。
SPOOLing除了是一種速度匹配技術外,也是一種虛擬設備技術。用一種物理設備模擬另一類物理設備,使各作業在執行期間只使用虛擬的設備,而不直接使用物理的獨佔設備。這種技術可使獨佔的設備變成可共享的設備,使得設備的利用率和系統效率都能得到提高。