作業系統學習筆記:裝置管理

坤輿湖畔的萬某某發表於2020-12-15

目錄:

一、概述:

裝置的分類:

裝置管理的目標和功能:

二、I/O硬體特點:

裝置介面:

裝置控制器:

通道:

I/O控制方式:

緩衝技術:

三、I/O軟體的組成:

軟體的目標:

中斷處理程式:

裝置驅動程式:

獨立於裝置的軟體:

使用者空間的I/O軟體:

四、裝置分配:

裝置分配中的資料結構:

裝置獨立性:

裝置分配:

五、虛擬裝置:

Spooling技術:

共享印表機:

Spooling系統的優缺點:


一、概述:

裝置的分類:

按所屬關係分類:

——系統裝置:作業系統生成時已登記的標準裝置,如鍵盤等。

——使用者裝置:作業系統生成時未登記的非標裝置,如繪圖儀。

從資源分配角度分類:

——獨佔裝置:一段時間內只允許一個程式訪問的裝置。

——共享裝置:一段時間內允許多個程式訪問的裝置。

——虛擬裝置:通過虛擬技術處理後裝置,如:Spooling技術,從獨佔裝置變為了共享裝置

 從用途分類:

——儲存裝置(或檔案裝置):用於儲存資訊,如磁碟、磁帶。

——輸入輸出裝置:用於資訊的輸入輸出,如鍵盤、印表機。

按資訊交換方式分類:

——塊裝置:以資料塊為單位進行資訊存取,如磁碟、磁帶。

——字元裝置:以字元為單位進行資訊存取,如印表機。


裝置管理的目標和功能:

裝置管理的目標:

——方便性:使用者可以不用關心裝置的物理特性。

——並行性:使I/O裝置與CPU、I/O裝置之間並行工作。

——均衡性:避免忙閒不均勻現象。

——獨立性(或無關性):程式使用的裝置為邏輯裝置,與具體的裝置無關,提高使用的靈活性。

裝置管理的功能:

——監視所有裝置的狀態:

  • 將裝置資訊保留在裝置控制表中,動態地記錄狀態的變化及有關資訊

——制定裝置分配策略:

  • 在多使用者環境中,系統根據使用者要求和裝置的有關狀態,給出裝置分配演算法。

——裝置的分配:

  • 給程式分配相應的裝置,而且必須分配相應的控制器、通道

——裝置的回收:

  • 當程式執行完之後,裝置被釋放,系統必須回收,以便於分配給其他程式使用

 

二、I/O硬體特點:

裝置的組成:

——物理裝置:為執行規定操作所必須的物理裝置。

——電子部件:物理裝置與計算機之間進行聯絡的電子部件,如裝置控制器。


裝置介面:

介面的功能:

——按照計算機主機和裝置的約定格式接收或傳送資料及訊號。

介面的分類:

介面的標準化:

——串列埠標準:RS-232

——印表機:USB

——顯示器:VGA

——硬碟:IDE、SCSI、SATA

實際舉例

裝置控制器:

裝置控制器分類:

裝置控制器主要功能:

——接收和識別命令:來自CPU。

——資料交換:CPU與裝置控制器、裝置控制器與裝置之間。

——地址識別:每個裝置一個地址。識別自己控制的裝置。

——標識和報告裝置的狀態:如就緒、忙、故障等。

——資料緩衝:緩和裝置與CPU、記憶體間速度不匹配的矛盾。

——差錯控制:發生差錯時,向CPU報告,以便重發。


通道:

現代計算機I/O系統的結構由通道、裝置控制器和裝置三級組成。

因為通道、裝置控制器都是獨立的功能部件,它們可以並行操作,所以可以構成I/O系統多通路情況。一個裝置連線到幾個控制器,一個控制器也可以連線到幾個通道上,以提高裝置的利用率和靈活性。

通道的型別:根據資訊交換方式,通道可分成三種型別。

——位元組多路通道:

  • 通道以分時方式同時執行幾個通道程式,每個通道程式通過裝置控制器控制一個裝置。一個時間片執行一條通道指令,交換一個位元組。一般用於連線印表機等低中速字元裝置。

——陣列選擇通道:

  • 通道一次僅執行一個通道程式,實現記憶體與外設之間的呈批資料傳送。因此,陣列選擇通道一次僅控制1臺裝置工作,主要用於連線高速塊裝置,如磁碟、磁鼓等。

——陣列多路通道:

  • 通道以分時方式同時執行幾個通道程式,每個通道程式通過裝置控制器控制一個裝置。一個時間片執行一條通道指令,交換一批資料。一般用於連線磁帶。

通道程式:

——通道是通過執行通道程式,並與裝置控制器共同實現對I/O裝置的控制。通道程式是由一系列通道指令(或稱為通道命令)所構成。

——通道指令中包含如下資訊:操作碼、記憶體地址、計數、記錄控制標誌R、通道程式結束位P 。通道程式如:


I/O控制方式:

程式查詢方式:(個人理解:用你之前看看你)

採用程式查詢方式,每當程式要使用某一外設進行I/O操作時,CPU要執行一段迴圈測試程式,以實現在外設準備好時執行一條輸入/輸出指令進行一個位元組或字的資料傳送操作

I/O中斷方式:(個人理解:你準備好了叫我)

每當裝置完成I/O操作時,便向CPU發出中斷請求訊號,通知CPU外設已準備好,可以進行資料傳送操作。這樣,CPU一旦啟動I/O裝置後便可執行其它程式,僅在收到I/O中斷請求時才執行其中斷服務程式,進行I/O處理和I/O操作。

直接儲存器訪問(DMA):(個人理解:另外派一個小助手去專門負責)

採用DMA方式時,不僅允許CPU控制地址線,進行CPU與記憶體貯器的資料交換,而且允許DMA控制器接管地址線的控制權,直接控制DMA控制器與記憶體的資料交換。從而使磁碟裝置與存貯器之間的資料傳送不需要CPU介入,因而減輕了CPU的負擔 。

I/O通道方式:(個人理解:派一個更為能幹的小助手去專門負責)

I/O通道有自己的指令系統,即通道程式,可以和CPU並行操作,獨立管理外設和實現記憶體與外設之間的資訊傳輸,使得CPU擺脫了繁忙的I/O操作。

中斷方式一次傳送一個位元組,DMA方式一次傳送一個資料塊,通道方式一次傳送一組資訊(取決於通道的型別)。

通道方式進一步解放了CPU,提高了整個系統的使用效率。


緩衝技術:

凡資料到達速度和離去速度不匹配的地方都可以採用緩衝技術!

作業系統中引入緩衝的主要原因:

——緩和CPU與I/O裝置間速度不匹配的矛盾。

——減少對CPU的中斷頻率,放寬對中斷響應時間的限制。

——提高CPU和I/O裝置的並行性。

緩衝的型別:

按照緩衝區存在的位置分類:

按照緩衝區的個數以及緩衝區的組織形式分類:

緩衝池的組成:

——在緩衝池中存在由三類緩衝區組成的三條佇列:空緩衝佇列emq 、輸入佇列inq 、輸出佇列outq。

——系統(或者使用者程式)可以從這三種佇列中申請和取出緩衝區,用得到的緩衝區進行存數、取數操作,在存數、取數操作完成之後,再將緩衝區掛到相應的佇列,這些緩衝區被稱為工作緩衝區

——緩衝池中有四種工作緩衝區:

  • 用於收容裝置輸入資料的收容輸入緩衝區hin。
  • 用於提取裝置輸入資料的提取輸入緩衝區sin。
  • 用於收容CPU輸出資料的收容輸出緩衝區hout。
  • 用於提取CPU輸出資料的提取輸出緩衝區sout。
緩衝區的工作緩衝區

緩衝池的操作:

  • 從指定緩衝區佇列中取出一個緩衝區的過程:Take_buf(type)
  • 把緩衝區插入到相應的緩衝區佇列的過程:Add_buf(type,  buf)
  • 程式申請一個指定型別緩衝區的過程:Get_buf(type)
  • 程式將工作緩衝區插入到相應緩衝區佇列的過程:Put_buf(type, work_buf)

——type表示緩衝佇列的型別。

——work_buf表示工作緩衝區型別。

 

在學到這裡的時候,可能會奇怪,上面的幾個函式的功能有些許重疊!這是為什麼呢?

 

因為緩衝池中的佇列本身是一種臨界資源,當多個程式在訪問同一個佇列時,既應當互斥,又需同步。所以不能直接使用Take_buf和Add_buf對緩衝池中的佇列進行操作,而是使用對這兩個過程改造加工之後的Get_buf和Put_buf.

Get_buf和Put_buf的構建:

為了使得各個程式能互斥的訪問緩衝池佇列,可以為每一佇列設定一個互斥訊號量MS(type),初始值為1。此時,為了保證各個程式同步地使用緩衝區,為每一個緩衝佇列設定一個資源訊號量RS(type)初始值為 n (n為type佇列長度)。

緩衝池的工作過程:

——收容輸入:

  • 在輸入程式需要輸入資料時,呼叫Get_buf(emq)過程,從空緩衝佇列emq的隊首摘下一空緩衝,把它作為收容輸入工作緩衝區hin,把資料輸入其中,裝滿後再呼叫Put_buf(inq, hin)過程,將該緩衝區掛在輸入佇列inq上。

——提取輸入:

  • 當計算程式需要輸入資料時,呼叫Get_buf(inq)過程,從輸入佇列inq的隊首取得一緩衝區作為提取輸入工作緩衝區sin,計算程式從中提取資料。計算程式用完該資料後,再呼叫Put_buf(emq, sin)過程,將該緩衝區掛到空緩衝佇列emq上。

——收容輸出:

  • 當計算程式需要輸出時,呼叫Get_buf(emq)過程,從空緩衝佇列emq的隊首取得一空緩衝作為收容輸出工作緩衝區hout。當其中裝滿輸出資料後,又呼叫Put_buf(outq, hout)過程,將該緩衝區掛在輸出佇列outq末尾。

——提取輸出:

  • 輸出程式呼叫Get_buf(outq)過程,從輸出佇列的隊首取得一裝滿輸出資料的緩衝區作為提取輸出工作緩衝區sout。在資料提取完後,再呼叫Put_buf(emq, sout)過程,將該緩衝區掛在空緩衝佇列末尾

 

三、I/O軟體的組成:

I/O裝置管理軟體結構的基本思想層次化,也就是把裝置管理軟體組織成為一系列的層次,低層與硬體相關,它把硬體與較高層次的軟體隔離開來;而最高層的軟體則嚮應用提供一個友好的、清晰而統一的I/O裝置介面。

軟體的目標:

裝置獨立性:

——除了直接與裝置打交道的低層軟體之外,其他部分的軟體使用邏輯裝置名,並不直接依賴於硬體

——I/O軟體獨立於裝置,就可以提高裝置管理軟體的設計效率

——I/O軟體一般分為4層,它們分別是中斷處理程式,裝置驅動程式,與裝置無關的系統軟體和使用者級軟體

統一命名:

——統一命名是指在系統中採取預先設計的、統一的邏輯名稱,對各類裝置進行命名,並且應用在與裝置有關的全部軟體模組中。

——對裝置統一命名是與裝置獨立性密切相關的。通常使用一個序列字元或者一個整數來表徵一個I/O裝置的名字,這個統一命名不依賴於裝置,也就是說在一個裝置的名稱之下,對應的物理裝置可能發生了改變,但是這並不在該名稱上體現,使用者並不知曉。


中斷處理程式:

什麼是中斷?

——中斷是指計算機在執行期間系統內發生任何非尋常的或者非預期的急需處理事件,使得CPU暫時中斷當前正在執行的的程式,轉而去執行相應的事件處理程式,待處理完畢之後又返回原來被中斷處繼續執行或者排程新的程式執行的過程

中斷的相關概念:

——內部中斷、外部中斷:

  • 內部中斷是有計算機內部硬體故障或運算出錯導致的不可遮蔽中斷;外部中斷一般是指由I/O裝置發出的中斷請求,是可遮蔽的

——硬中斷、軟中斷:

  • 硬中斷:通過硬體產生相應的中斷請求。

  • 軟中斷:在通訊程式之間,通過模擬硬中斷而實現的一種通訊方式。在中斷源發出中斷訊號後,CPU或者接收程式在“適當的時機”進行中斷處理或完成軟中斷訊號所對應的功能。

適當的時機是指:接收軟中斷訊號的程式需要等到該程式得到處理機之後才能進行,如果該接收程式是佔據著處理機的,則該程式在接收到軟中斷訊號之後,就可立即執行。

裝置管理與中斷方式:

為了提高整體效率,減少在程式直接控制方式中CPU等待時間,採用中斷方式來控制I/O裝置和記憶體與CPU之間的資料傳送,是很必要的。(個人理解:對於CPU來說,I/O裝置及記憶體的速度太慢了,CPU對其下達一次操作之後不可能一直等著它弄完,別的程式還要用呢,所以讓I/O裝置和記憶體執行完CPU下達的任務之後去“叫”CPU,這樣CPU解放雙手去做別的事了。這套機制需要通過中斷來實現!)

中斷方式的實現:

——在硬體結構上,這種中斷方式要求CPU與I/O裝置(或裝置控制器)之間有相應的中斷請求線,而且在裝置控制器的控制狀態暫存器上有相應的中斷允許位

在中斷方式下,CPU與I/O裝置之間資料的傳輸大致步驟如下:

  • ①在某個程式需要資料時,發出指令啟動I/O裝置準備資料。同時該指令還通知其裝置控制狀態暫存器中的中斷允許位置位。

  • ②在程式發出指令啟動裝置之後,該程式放棄處理機,等待相關I/O操作完成。

  •  ③當I/O操作完成時,裝置控制器通過中斷請求線向處理機發出中斷訊號。處理機收到中斷訊號之後,轉向預先設計好的中斷處理程式,對資料傳送工作進行相應的處理。

  • ④程式得到資料後,轉入就緒狀態

中斷方式的優缺點:

——優點:中斷方式使處理器的利用率提高,支援多道程式和I/O裝置的並行操作

——缺點:有的情況下可能造成中斷頻率過高,以致使CPU無法響應中斷,耗去大量的CPU處理時間(因此在I/O控制方式中才有後來的DMA控制器方式和通道方式)。

DMA控制器方式和通道方式相關講解見於:本文前面的二、I/O硬體特點:I/O控制方式


裝置驅動程式:

什麼是裝置驅動程式?

——裝置處理程式通常又稱為裝置驅動程式,它是I/O程式與裝置控制器之間的通訊程式;又由於它常以程式的形式存在,所以簡稱之為裝置驅動程式。

裝置驅動程式的功能:

裝置驅動程式特點:

——驅動程式主要是在請求I/O的程式與裝置控制器之間的一個通訊程式。

  • 它將程式的I/O請求傳送給控制器,再把裝置控制器中所記錄的裝置狀態、I/O操作完成情況反映給請求I/O的程式。

——驅動程式與I/O裝置的特性緊密相關。

  • 因此對於不同型別的裝置應當配置不同的驅動程式。

——驅動程式與I/O控制方式緊密相關。

  • 常用的裝置控制方式是中斷處理和DMA方式。

——驅動程式與硬體緊密相關 ,很多驅動程式其基本部分已經固化,放在ROM中。


獨立於裝置的軟體:

雖然I/O軟體中的一部分是裝置專用的,但是大部分軟體是裝置無關的。裝置驅動程式與裝置獨立軟體之間的確切界限是依賴於具體系統的。因為按照裝置獨立方式能實現的一些功能,出於效率和其他原因,實際上也可以在裝置驅動級實現的

獨立於裝置的軟體的基本任務實現所有裝置都需要的功能,並且向使用者級軟體提供一個統一的介面

裝置獨立的軟體層通常實現的功能:

獨立於裝置的I/O軟體的功能

使用者空間的I/O軟體:

大部分I/O軟體包含在作業系統中,但是在使用者程式中仍有一小部分是與I/O過程連線在一起的。通常的系統呼叫,包括I/O系統呼叫,由庫過程實現。例如,一個用C語言編寫的程式可以含有以下的系統呼叫:

Count = write(fd,buffer,nbytes);

在該程式執行期間,該程式將與庫過程write連結在一起,幷包含在執行時的二進位制程式程式碼中。通常這些庫過程所做的工作主要是把系統呼叫時所用的引數放在合適的位置,由其他I/O過程去實現真正的操作。

並非所有的使用者層I/O軟體都是由庫過程組成的Spooling系統(後面將會單獨講解)則是另一種重要的處理方法。

I/O系統的分層圖

舉一個硬碟的例子進行講解:

——當一個使用者程式試圖讀一個硬碟檔案時,需要通過作業系統實現這一操作。

——與裝置無關的系統軟體檢查快取記憶體中有無要讀的資料塊。若沒有,則呼叫硬碟裝置驅動程式,向硬碟裝置傳送一個請求。然後,使用者程式阻塞等待磁碟操作的完成。

——當磁碟操作完成時,硬體直接產生一箇中斷,轉入中斷處理程式。中斷處理程式檢查中斷的原因,認識到這時磁碟讀取操作已經完成,於是換醒使用者程式取回從磁碟讀取的資訊,從而結束此次I/O請求。

——使用者程式在得到所需的硬碟檔案內容之後,繼續執行。

 

四、裝置分配:

在多道程式環境中,系統中的裝置供所有的程式使用。為了防止諸多程式對於系統資源的無序競爭,規定系統裝置不允許使用者自行使用,必須由系統統一分配。每當程式向系統提出I/O要求時,只要是可能和安全的,裝置分配程式便按照一定的策略把裝置分配給請求程式

有的系統中,為了確保在CPU與裝置之間進行通訊,還應當分配相應的控制器和通道

 

為了實現裝置分配,必須在系統中設定相應的資料結構。

 

裝置分配中的資料結構:

裝置控制表DCT:

系統為每個裝置配置 了一張DCT。裝置控制表 DCT反映裝置的特性裝置和I/O控制器的連線情況

裝置控制表
  • 裝置佇列隊首指標:但凡因為本裝置而未得以滿足的程式的PCB都應按照一定的策略排列成一個佇列,該佇列稱為裝置請求佇列或簡稱裝置佇列。其隊首指標指向隊首PCB。但在有的系統中還設定了隊尾指標。

  • 重複執行次數或時間:由於外圍裝置在傳送資料的時,較容易發生資料傳送錯誤,因而在許多系統中,如果發生傳送錯誤,並不立即認為傳送失敗,而是令它重新傳送,並由系統規定裝置在工作中發生錯誤時,應重複執行次數。在重複執行時,若能恢復正常傳送,則仍認為傳送成功。僅當屢次失敗,致使重複執行達到規定值而傳送仍不成功時,才認為傳送失敗。(個人理解:給你固定的重試次數,你還屢次出錯就當你失敗了!)

  • 指向控制器表的指標:指標指向與裝置相連線的控制器的控制表。在裝置到主機之間具有多條通路的情況下,一個裝置將與多個控制器相連線。此時,在DCT中還應設定多個控制器表指標。

控制器控制表COCT:

COCT也是每個控制器一張,它反映控制器的使用狀態以及和通道的連線情況

通道控制表CHCT:

每個通道都配有一張通道控制表,以記錄通道的資訊。

系統裝置表SDT:

整個系統設定一張SDT,記錄當前系統中所有裝置的情況。每個裝置佔一個表目,其中包括有裝置型別、裝置識別符號、裝置控制表、驅動程式入口、正在使用裝置的程式等資訊。


裝置獨立性:

裝置獨立性的含義:

應用程式獨立於具體使用的物理裝置

為什麼引入?

為了提高作業系統的可適應性可擴充套件性

裝置獨立性的實現:

為了實現裝置的獨立性,在作業系統中引入了邏輯裝置名物理裝置名兩個概念。在實現了裝置獨立性的系統中,I/O程式申請裝置是以邏輯裝置名申請的;這樣系統可以根據當時裝置使用情況動態地為之分配該類中的任一物理裝置。

為了實現裝置獨立性,系統必須設定一張邏輯裝置表,用於將應用程式中所使用的邏輯裝置名對映為物理裝置名。在該表目中包含三項邏輯裝置名、物理裝置名和裝置驅動程式的入口地址


裝置分配:

裝置分配中應考慮的因素:

裝置的固有屬性:

——獨佔裝置:該裝置採用獨佔分配策略,即把裝置分配給一個程式之後,只能等它用完系統才可以回收該裝置再分配給其他程式使用。

  • 缺點就是:裝置得不到有效的利用,可能會發生死鎖。

——共享裝置:該裝置可以供多個程式使用,所以在使用該類裝置時應當對各個程式訪問裝置的先後次序進行合理地排程。

——虛擬裝置:該裝置屬於可共享裝置,因此也可以將它分配給多個程式使用,並對這些程式訪問該裝置的先後次序進行控制。

裝置分配演算法:

——先來先服務演算法:根據程式申請裝置的先後次序將這些程式排列成為一個裝置請求列表,裝置分配程式總是將裝置首先分配給隊首程式。

——優先權高者優先演算法:系統首先將裝置分配給優先權高的程式,使高優先權的程式能夠儘快完成。對於同等優先順序的程式,系統按照先來先服務的方法分配裝置。

裝置分配中的安全性:

——安全分配方式:在這種分配方式中,每當程式發出I/O程式後,便進入阻塞狀態,直到其I/O操作完成之後才被喚醒。這樣它就不能再請求任何資源,在它執行時又不保持任何資源;因此這種分配方式摒棄了造成死鎖的四個必要條件之一的“請求和保持”,因此這種分配是安全的。

  • 缺點就是程式進展緩慢,因為對於該程式來說CPU和I/O裝置是序列工作的。

——不安全分配方式:在這種分配方式中,程式在發出I/O請求之後仍然可以執行,當有需要時又可以發出第二個I/O請求、第三個... ...。僅僅當程式請求的裝置被另一個程式佔用時,該程式才會進入阻塞狀態。

  • 優點就是一個程式可以同時操縱多個裝置,從而使得程式推進迅速。

  • 缺點就是分配不安全,可能具備“請求和保持”條件,可能造成死鎖。因此在應用該方式時,在裝置分配程式中應當再增加一個功能——對於本次是否會發生死鎖進行安全性計算,僅當計算結果說明分配是安全的情況下才進行分配。

獨佔裝置的分配程式:

基本分配程式:

——分配裝置(根據物理裝置名查SDT找DCT)

  • 根據物理裝置名查詢系統裝置表(SDT),從中找出該裝置的裝置控制表(DCT),根據表中的裝置狀態欄位可以知道給裝置是否忙碌。

——分配控制器(根據DCT查COCT)

  • 在系統把裝置分配給請求I/O的程式後,再到其裝置控制表(DCT)中找到與該裝置連線的控制器的控制器控制表(COCT),從表內的狀態欄位可知該控制器是否忙碌。

——分配通道(根據COCT查CHCT)

  • 在該控制器控制表(COCT)中找到與該控制器連線的通道的通道控制表(CHCT),再根據通道控制表(CHCT)內的狀態資訊可以知道該通道是否忙碌。

 

觀察上述的裝置分配程式之後,我們不難發現:

①程式是以物理裝置名來提出I/O請求的。

②採用的是單通路的I/O系統結構,容易產生“瓶頸”現象。

為此我們可以進行相應的改進!

 

改進後的分配程式:

  • 增加裝置的獨立性:程式應用邏輯裝置名請求I/O裝置。以邏輯裝置名申請時;這樣系統可以根據當時裝置使用情況動態地為之分配該類中的任一物理裝置。

  • 考慮多通路情況:為了防止在I/O系統出現“瓶頸”現象,通常都採用多通路的I/O系統結構。        

 

五、虛擬裝置:

什麼是虛擬裝置?

虛擬裝置是通過某種技術將一臺獨佔裝置改造為可以供多個使用者共享的共享裝置。

Spooling技術:

什麼是Spooling技術?

Spooling技術是一種虛擬裝置技術,它可以把一臺獨佔裝置改造為虛擬裝置,在程式所需的物理裝置不存在或被佔用的情況下,仍可使用該裝置。

  • 為了緩和CPU和I/O裝置之間的速度矛盾,引入了離線輸入和離線輸出技術。該技術是利用專門的外圍處理機,將低速I/O裝置上的資料傳送到高速磁碟上;或者相反。

  • 實際上,當系統引進多到程式設計之後,完全可以利用其中的兩道程式來分別模擬離線輸入時的外圍機和離線輸入時的外圍機的功能。這樣便在主機的直接控制下,實現離線輸入和輸出功能。

  • 此時的外圍操作與CPU對資料的處理同時進行,把這種在聯機情況下實現的同時外圍操作稱為Spooling,或稱為假離線操作。

(個人理解:原本用其他的物理裝置來緩解CPU和I/O裝置的速度矛盾,現在用程式就可以實現了,就叫Spooling)

Spooling系統的組成:

——輸入井和輸出井:

  • 這是在磁碟上開闢的兩個大儲存空間。

  • 輸入井是模擬離線輸入時的磁碟裝置,用於暫存I/O裝置輸入的資料

  • 輸出井是模擬離線輸出時的磁碟裝置,用於暫存使用者程式的輸出資料

——輸入緩衝區和輸出緩衝區:

  • 為了緩和CPU和磁碟之間的速度不匹配的矛盾,在記憶體中要開闢兩個緩衝區。

  • 輸入緩衝區:用於暫存由輸入裝置送入的資料,以後再傳送到輸入井

  • 輸出緩衝區:用於暫存從輸出井送來的資料,以後再傳送給輸出裝置

——輸入程式SPi和輸出程式SPo:

  • 利用這兩個程式來模擬離線I/O時的外圍控制機

  • 輸入程式SPi模擬離線輸入時的外圍控制機,將使用者要求的資料從輸入裝置通過輸入緩衝區再送到輸入井,當CPU需要該資料時,再從輸入井中讀出來直接送到記憶體

  • 輸出程式SPo模擬離線輸出時的外圍控制機,將CPU要輸出的資料由記憶體先送到輸入井中,待輸出裝置空閒時,再由輸入井中把資料送到輸出緩衝區,由輸出裝置輸出。


共享印表機:

共享印表機即利用Spooling技術,可將它改造為一臺可供多個使用者共享的虛擬裝置。

共享印表機的工作流程:

——當使用者程式請求列印輸出時:

  • 快取輸出—>填寫請求列印表—>掛到請求佇列上

——當印表機空閒時:

  • 從請求佇列的隊首取一個—>列印—>直到佇列空

Spooling系統的優缺點:

Spooling系統的優點:

——提高了I/O的速度。

——實現了虛擬裝置的功能。

Spooling系統的缺點:

——輸入緩衝區和輸出緩衝區佔用了大量的記憶體空間。

——輸出井和輸入井佔用了大量的磁碟空間。

——增加了系統的複雜性。

 

Ending... ...

相關文章