裝置管理——spooling技術原理
2010-01-02
spooling是 simultaneous peripheral operation on-line (即外部裝置聯機並行操作)的縮寫,它是關於慢速字元裝置如何與計算機主機交換資訊的一種技術,通常稱為「假離線技術」。
spooling系統既不同於離線方式,也不同於直接藕合方式,spooling 技術實際上是一種外圍裝置同時聯機操作技術,又稱為排隊轉儲技術。它在輸入和輸出之間增加了「輸入井」和「輸出井」的排隊轉儲環節,以消除使用者的「聯機」等待時間。在系統輸入模組收到作業輸入請求訊號後,輸入管理模組中的讀過程負責將資訊從輸入裝置中讀入輸入井緩衝區。當緩衝區滿時,由寫過程將資訊從緩衝區寫到外存的輸入井中,讀過程和寫過程反覆迴圈,直到乙個作業輸入完畢。當讀過程讀到乙個硬體結束標誌之後,系統再次驅動寫過程把最後一批資訊寫入外存輸入井並呼叫中斷處理程式結束該次輸入。然後,系統為該作業建立作業控制塊,從而使輸入井中的作業進入作業等待佇列,等待作業排程程式選中後進入記憶體執行。系統在管理輸入井過程中可以「不斷」讀入輸入的作業,直到輸入結束或輸入井滿而暫停。若系統的某台臺行式印表機採用了虛擬裝置技術,那麼若有程序要求對它列印輸出時,spooling系統並不是將這台印表機直接分配給程序,而是在共享裝置(磁碟或磁鼓)上的輸出spooling儲存區中為其分配一塊儲存空間,程序的輸出資料以檔案形式此。各程序的資料輸出檔案形成了乙個輸出佇列,由輸出pooling系統控制這台印表機程序,依次將佇列中的輸出檔案實際列印輸出。在spooling 系統中,實際上並沒有為任何程序分配,而只是在輸入井和輸出井中,為程序分配一儲存區和建立一章i/o請求表。這樣,便把獨佔裝置改造為共享裝置。
巨集觀上,雖然是多個程序在同時使用一**立裝置,而對每乙個程序而言,它們都認為自己是獨佔了乙個裝置。當然,該裝置只是邏輯上的裝置。spooling系統實現了將獨佔裝置變換為若干臺對應的邏輯裝置的功能。
spooling技術實質上是使用者程序利用一共享裝置的乙個儲存區,並不是真正占有這一裝置,使用者程序把要完成的任務以檔案的形式存入儲存區,在儲存區中排隊並等待spooling系統排程,只有被spooling系統排程並輸出,此項任務才真正完成,通過這一技術可以大大提高了共享裝置的使用率,節約了硬體資源。
spooling技術是在通道技術和多道程式設計基礎上產生的,它由主機和相應的通道共同承擔作業的輸入輸出工作,利用磁碟作為後援儲存器,實現外圍裝置同時聯機操作。
spooling系統由專門負責i/o的常駐記憶體的程序以及輸入井、輸出井組成;它將獨佔裝置改造為共享裝置,實現了虛擬裝置功能。
將一**享印表機改造為可供多個使用者共享的印表機,是應用spooling技術的典型例項。具體做法是:系統對於使用者的列印輸出,但並不真正把印表機分配給該使用者程序,而是先在輸出井中申請乙個空閒盤塊區,並將要列印的資料送入其中;然後為使用者申請並填寫請求列印表,將該錶掛到請求列印佇列上。若印表機空閒,輸出程式從請求列印隊首取表,將要列印的資料從輸出井傳送到記憶體緩衝區,再進行列印,直到列印隊列為空。
spooling技術實現裝置管理時的工作特徵:
1、提高了i/o速度
2、將獨佔裝置改造為共享裝置
在spooling 系統中,實際上並沒有為任何程序分配,而只是在輸入井和輸出井中,為程序分配一儲存區並建立一張i/o請求表。這樣,便把獨佔裝置改造為共享裝置。
巨集觀上,雖然是多個程序在同時使用一**立裝置,而對每乙個程序而言,它們都認為自己是獨佔了乙個裝置。當然,該裝置只是邏輯上的裝置。spooling系統實現了將獨佔裝置變換為若干臺對應的邏輯裝置的功能
裝置管理 裝置管理概述
i o裝置是作業系統龐大複雜的主要原因之一,不同外部裝置之間,速度差異很大,控制介面複雜,資料表示各異,與其它功能聯絡緊密,特別是檔案系統。在這種情況下,難以針對裝置做統一的規劃與設計。對i o裝置的直接控制,是通過特定的裝置控制器進行的,主機只需要對控制器進行操作即可,無需理會具體裝置的引數細節。...
裸裝置管理
裸裝置 raw device,就是不被作業系統直接管理的裝置。這種裝置少了作業系統一層,i o效率更高。資料庫一般會用到。常與lvm聯用。建立裸裝置 mkdir raw mknod dev rawctl c 162 0 mknod dev raw raw1 c 162 1 mknod dev raw...
linux裝置管理
linux 的裝置管理 6.1 裝置管理概述 linux 裝置的分類 linux 使用套介面 socket 以檔案i o 方式提供了對網路資料的訪問。裝置驅動程式 三 裝置的識別 而多個scsi 硬碟及其各個分割槽分別賦予次裝置號1 2 3 root localhost ls dev sda l b...