操作系统—— I/O 相关知识
文章目錄
- 前言
- 一、I/O 設備的概念和分類
- 二、I/O 控制器
- 三、I/O 控制方式
- 1、程序直接控制方式
- 2、中斷驅動方式
- 3、DMA 方式
- 4、通道控制方式
- 四、I/O 軟件層次結構
- 五、I/O 核心子系統
- 1、假脫機技術
- 2、設備的分配與回收
- ⑴設備分配時應當考慮的因素
- ⑵靜態分配和動態分配
- ⑶設備分配管理中的數據結構
- ⑷設備分配的步驟
- 3、緩沖區管理
- ⑴緩沖區的作用
- ⑵單緩沖
- ⑶雙緩沖
- ⑷循環緩沖區和緩沖池
- 總結
前言
本文的主要內容是操作系統中與 I/O 相關的一些基礎知識,包括 I/O 設備的概念和分類、I/O 控制器、I/O 控制方式、I/O 軟件層次結構以及 I/O 核心子系統,重點理解 I/O 控制方式和 I/O 核心子系統中完成工作。
一、I/O 設備的概念和分類
I/O 就是 Input/Output 的縮寫,即輸入/輸出。I/O 設備就是可以將數據輸入到計算機,或者可以接收計算機輸出數據的外部設備,I/O 設備屬于計算機中的硬件部件。例如鼠標、鍵盤就是輸入設備,顯示器就是一個輸出設備,而移動硬盤是既可輸入又可輸出設備。
UNIX 系統中將外部設備抽象為一種特殊的文件,用戶可以使用與文件操作相同的方式對外部設備進行操作。Read 操作就是從外部設備讀入數據,Write 操作就是向外部設備寫出數據。
I/O 設備按照使用特性分類可以分為:人機交互類外部設備(鍵盤、鼠標、打印機等)、存儲設備(移動硬盤、光盤等)和網絡通信設備(調制解調器等)。其中,存儲設備的數據傳輸速度在三者中最快,網絡通信設備次之,人機交互類外部設備最慢。
I/O 設備按照傳輸速率分類可以分為:低速設備、中速設備和高速設備。低速設備傳輸速率為每秒幾個到幾百個字節,例如鼠標、鍵盤等;中速設備傳輸速率為每秒數千至上萬個字符,例如打印機等;高速設備傳輸速率為每秒數千字節至千兆字節,例如硬盤、磁盤等。
I/O 設備按照信息交換的單位分類可以分為:塊設備和字符設備。塊設備例如移動硬盤、磁盤等,其數據的傳輸單位是塊,傳輸速率較高,可尋址,也就是對它可以隨機地讀或寫任意一塊。字符設備例如鼠標、鍵盤等,其數據的傳輸單位是字符,傳輸速率較慢,不可尋址,在輸入輸出時常采用中斷驅動方式。
對 I/O 設備的概念和分類這部分的內容簡單的總結一下,如下圖所示。
二、I/O 控制器
I/O 設備由機械部件和電子部件組成,電子部件就是 I/O 控制器,也稱為設備控制器。
I/O 設備的機械部件主要用來執行具體的 I/O 操作,比如鼠標和鍵盤的按鈕,顯示器的屏幕等。I/O 設備的電子部件通常是一塊插入主板擴充槽的印刷電路板。
由于 CPU 無法直接控制 I/O 設備的機械部件,因此 I/O 設備需要一個電子部件作為 CPU 和 I/O 設備機械部件之間的媒介,用于實現 CPU 對設備的控制。這個電子部件就是 I/O 控制器,CPU 可以控制 I/O 控制器, I/O 控制器來控制設備的機械部件。
I/O 控制器的功能:
①接收和識別 CPU 發出的命令。如CPU發來的read/write命令,I/O控制器中會有相應的控制寄存器來存放命令和參數。
②向 CPU 報告設備的狀態。I/O控制器中會有相應的狀態寄存器,用于記錄I/O設備的當前狀態。比如1表示空閑,0表示忙碌。
③數據交換。I/O控制器中會設置相應的數據寄存器,輸出時,數據寄存器用于暫存CPU發來的數據,之后再由控制器傳送設備;輸入時,數據寄存器用于暫存設備發來的數據,之后CPU從數據寄存器中取走數據。
④地址識別。類似于內存的地址,為了區分設備控制器中的各個寄存器,也需要給各個寄存器設置一個特定的“地址”,I/O控制器通過CPU提供的“地址”來判斷CPU要讀或寫的是哪個寄存器。
I/O 控制器由 CPU 與控制器接口、I/O 邏輯和控制器與設備的接口等部分組成,具體的介紹如下圖所示。
需要注意的是,一個 I/O 控制器可能會對應多個設備,數據寄存器、控制寄存器、狀態寄存器可能有多個,并且這些寄存器都要有相應的地址,這樣才能方便 CPU 操作。其中,有些計算機會讓這些寄存器占用內存地址的一部分,稱為內存映像 I/O,另一些計算機則采用 I/O 專用地址,也就是寄存器獨立編址。
內存映像 I/O 和寄存器獨立編址的區別如下圖所示。
兩者主要的不同是:內存映像 I/O 方式下,控制器中的寄存器與內存地址是統一編址的,這樣就簡化了指令,而且可以采用對內存進行操作的指令來對控制器進行操作;寄存器獨立編址方式下,控制器中的寄存器使用單獨的地址,這樣就需要設置專門的指令來實現對控制器的操作,不僅需要指明寄存器的地址,還要指明控制器的編號。
對 I/O 控制器這部分的內容簡單的總結一下,如下圖所示。
三、I/O 控制方式
I/O 控制方式也就是用什么樣的方式來控制 I/O 設備數據的讀和寫操作,I/O 控制方式有程序直接控制方式、中斷驅動方式、DMA 方式和通道控制方式。在這些方式中需要注意完成依次讀寫操作的流程、CPU 干預的頻率、數據傳送的單位、數據的流向以及優缺點。
1、程序直接控制方式
程序直接控制方式的核心就是輪詢,其流程圖如下圖所示。
以讀操作為例,程序直接控制方式的具體步驟如下:
①CPU 向控制器發出讀指令,然后設備啟動,并且將狀態寄存器設為1,也就是未就緒態;
②輪詢檢查控制器的狀態,如果狀態寄存器的值一直為1,說明設備還沒準備好要輸入的數據,CPU 會不斷的輪詢直到狀態寄存器的值為0;
③輸入設備準備好數據后將數據傳給控制器,并報告自身的狀態;
④控制器將輸入的數據放到數據寄存器中,并將狀態改為0,也就是已就緒;
⑤CPU 發現設備已就緒,就可以將數據寄存器中的內容讀入 CPU 的寄存器中,再把 CPU 寄存器中的內容放入內存;
⑥若要繼續讀取數據,則 CPU 繼續發出讀指令。
CPU 干預的頻率:很頻繁,I/O 操作開始之前、完成之后都需要 CPU 的介入,并且在等待 I/O 完成的過程中 CPU 需要不斷地輪詢檢查。
數據傳送的單位:每次讀/寫一個字。
數據的流向:數據輸入/讀操作下:I/O 設備—>CPU—>內存;數據輸出/寫操作下:內存—>CPU—>I/O 設備。
優點:實現簡單,在讀或者寫指令之后,加上實現循環檢查的一系列指令即可。
缺點:CPU 和 I/O 設備只能串行工作,CPU 需要一直輪詢檢查,長期處于忙等狀態,因此 CPU 和 I/O 設備的利用率低。
2、中斷驅動方式
中斷驅動方式的核心就是中斷,其流程圖如下圖所示。
中斷驅動方式引入中斷機制,由于 I/O 設備速度很慢,因此在 CPU 發出讀或寫指令后 ,可將等待 I/O 的進程阻塞,先切換到別的進程執行,當 I/O 完成后,控制器會向 CPU 發出一個中斷信號,CPU 檢測到中斷信號后會保存當前進程的運行環境信息,轉去執行中斷處理程序處理該中斷,處理中斷的過程中,CPU 從 I/O 控制器讀一個字的數據傳送到 CPU 寄存器,再寫入主存,然后,CPU 恢復等待 I/O 的進程的運行環境,繼續執行。
需要注意的是:①CPU 會在每個指令周期的末尾檢查中斷;②中斷處理過程中需要保存、恢復進程的運行環境,這個過程需要一定的時間開銷,因此,如果中斷發生的頻率太高,也會降低系統的性能。
CPU 干預的頻率:每次 I/O 操作開始之前、完成之后都需要 CPU 的介入,而在等待 I/O 完成的過程中 CPU 可以切換到別的進程執行。
數據傳送的單位:每次讀/寫一個字。
數據的流向:數據輸入/讀操作下:I/O 設備—>CPU—>內存;數據輸出/寫操作下:內存—>CPU—>I/O 設備。
優點:與程序直接控制方式相比,該方式下 I/O 控制器會通過中斷信號主動報告 I/O 已完成,CPU 不再需要不停地輪詢,此外 CPU 和 I/O 設備可并行工作,CPU 的利用率明顯的提升。
缺點:每個字在 I/O 設備與內存之間的傳輸都需要經過 CPU,而頻繁的中斷處理會消耗較多的 CPU 時間。
3、DMA 方式
DMA(Direct Memory Access)方式也稱為直接存儲器存取,主要用于塊設備的 I/O 控制,相比于中斷驅動方式的改進有以下幾點:
①數據的傳送單位不再是一個字,而是塊;
②數據的流向是從設備直接放入內存,或者從內存直接到設備,不再需要 CPU 作為中間的橋梁;
③只在傳送一個或多個數據塊的開始和結束時,才需要 CPU 的干預。
DMA 控制器的組成如下圖所示。
對上圖中的一些內容解釋如下:
DR(Data Register,數據寄存器):暫存一些從設備到內存或者從內存到設備的數據。
MAR(Memory Address Register,內存地址寄存器):輸入時 MAR 表示數據應該放到內存中的什么位置;輸出時 MAR 表示輸出的數據放在內存中的什么位置。
DC(Data Counter,數據計數器):表示剩余要讀/寫的字節數。
CR(Command Register,命令/狀態寄存器):存放 CPU 發來的 I/O 命令,或者設備的狀態信息。
DMA 方式的簡要流程如下圖所示。
CPU 干預的頻率:只在傳送一個或多個數據塊的開始和結束時才需要 CPU 的干預。
數據傳送的單位:每次讀/寫一個塊或多個塊,如果是讀多個塊,這些塊必須是連續的,且讀入內存中也必須是連續的。
數據的流向:數據輸入/讀操作下:I/O 設備—>內存;數據輸出/寫操作下:內存—>I/O 設備。
優點:數據傳輸以塊為單位, CPU 的介入頻率進一步降低,數據傳輸不再需要先經過 CPU 再寫入內存,數據傳輸效率進一步增加,CPU 和 I/O 設備的并行性得到提升。
缺點:CPU 每發出一條 I/O 指令,只能讀或者寫一個或多個連續的數據塊。如果需要讀或者寫多個離散存儲的數據塊,或者要將數據分別寫到不同的內存區域時,CPU 要分別發出多條 I/O 指令,進行多次中斷處理才能完成。
4、通道控制方式
通道是一種硬件,可以將其理解為弱化版的 CPU,它可以識別并執行一系列的通道指令。與 CPU 相比,通道可以執行的指令很單一,并且通道程序是放在主機內存中的,也就是說通道和 CPU 共享內存。
通道控制方式的執行步驟如下圖所示。
上面圖中的通道程序可以理解為任務清單,里面存放著需要完成的具體任務。
一個通道可以控制多個 I/O 控制器,而一個 I/O 控制器又可以控制多個 I/O 設備。
通道控制方式的簡要流程如下圖所示。
CPU 干預的頻率:極低,通道會根據 CPU 的指示執行相應的通道程序,只有完成一組數據塊的讀或者寫后才需要發出中斷信號,請求 CPU 干預。
數據傳送的單位:每次讀/寫一組數據塊。
數據的流向:數據輸入/讀操作下:I/O 設備—>內存;數據輸出/寫操作下:內存—>I/O 設備。
優點:CPU、通道、I/O 設備可以并行工作,資源利用率很高。
缺點:實現復雜,需要專門的通道硬件支持。
對 I/O 控制方式這部分的內容簡單的總結一下,如下表所示。
四、I/O 軟件層次結構
I/O 軟件層次包括用戶層軟件、設備獨立性軟件、設備驅動程序和中斷處理程序,其示意圖如下圖所示。
用戶層軟件實現了與用戶交互的接口,用戶可直接使用該層提供的、與 I/O 操作相關的庫函數對設備進行操作。用戶層軟件將用戶請求翻譯成格式化的 I/O 請求,并通過系統調用請求操作系統內核的服務。
設備獨立性軟件又稱為設備無關性軟件,與設備的硬件特性無關的功能幾乎都在這一層實現。其實現的主要功能有:
①向上層提供統一的調用接口,如 read/write 系統調用;
②對設備的保護,設備可以看作特殊的文件,不同用戶對各個文件的訪問權限不一樣,因此對設備的訪問權限也不一樣;
③差錯處理;
④設備的分配與回收;
⑤數據緩沖區管理;
⑥建立邏輯設備名到物理設備名的映射關系,根據設備類型選擇調用相應的驅動程序。
設備驅動軟件需要通過邏輯設備表(LUT,Logical Unit Table)來確定邏輯設備對應的物理設備,并找到該設備對應的設備驅動程序。
操作系統可以采用兩種方式管理邏輯設備表,第一種就是整個系統只設置一張 LUT,這種情況下所有用戶不能使用相同的邏輯設備名,其只適用于單用戶操作系統;第二種就是為每個用戶設置一張 LUT,各個用戶使用的邏輯設備名可以重復,適用于多用戶操作系統,系統會在用戶登錄時為其建立一個用戶管理進程,而 LUT 就存放在用戶管理進程的 PCB 中。
設備驅動程序主要負責對硬件設備的具體控制,將上層發出的一系列命令轉化成特定設備能夠識別的一系列操作,包括設置設備寄存器、檢查設備狀態等。
驅動程序一般會以一個獨立的進程的方式存在。
不同的設備需要不同的設備驅動程序,就像不同品牌的打印機,其驅動程序也各不相同。因為不同設備的內部硬件特性不同,而這些特性只有廠家才知道,因此廠家須提供與設備相對應的驅動程序,CPU 執行驅動程序的指令序列來完成各項設置。
中斷處理程序:當 I/O 任務完成時,I/O 控制器會發送一個中斷信號,系統會根據中斷信號的類型找到相應的中斷處理程序并執行,中斷處理程序的處理流程如下圖所示。
設備驅動程序和中斷處理程序是直接和硬件打交道的。
五、I/O 核心子系統
設備獨立性軟件、設備驅動程序和中斷處理程序屬于操作系統內核部分,這三部分也稱為 I/O 系統或 I/O 核心子系統。
假脫機技術需要請求磁盤設備的設備獨立性軟件的服務,因此一般來說假脫機技術是在用戶層軟件實現的。
設備獨立性軟件中包括 I/O 調度、設備保護、設備的分配與回收以及緩沖區管理等工作。
I/O 調度就是用某種算法確定一個好的順序來處理各個 I/O 請求。
設備保護類似于文件保護,在 UNIX 系統中,設備被看做是一種特殊的文件,每個設備會有對應的 FCB,當用戶請求訪問某個設備時,系統會根據 FCB 中記錄的信息來判斷該用戶是否有相應的訪問權限,以此實現設備保護的功能。
1、假脫機技術
假脫機技術也叫 SPOOLing 技術,這里的脫機就是脫離主機的控制進行的輸入和輸出操作。
在手工操作階段,主機直接從 I/O 設備獲得數據,由于設備速度慢,主機速度很快,人機速度矛盾明顯,主機要浪費很多時間來等待設備。
在批處理階段引入了脫機輸入/輸出技術,這個過程是借助磁帶完成的,如下圖所示。
在外圍控制機的控制下,慢速輸入設備的數據先被輸入到更快速的磁帶上,之后主機可以從快速的磁帶上讀入數據,從而緩解了速度矛盾。
引入脫機技術后緩解了 CPU 與慢速 I/O 設備的速度矛盾,即使 CPU 在忙碌,也可以提前將數據輸入到磁帶,即使慢速的輸出設備正在忙碌,也可以提前將數據輸出到磁帶。
假脫機技術是用軟件的方式模擬脫機技術,假脫機技術的系統組成如下圖所示。
上面圖中的輸入/輸出緩沖區分別用于暫存輸入設備輸入到輸入井的數據和輸出井輸出到輸出設備的數據。
SPOOLing 技術可以把一臺物理設備虛擬成邏輯上的多臺設備,可將獨占式設備改造成共享設備。
共享打印機原理的示意圖如下圖所示。
打印機是獨占式資源,那么怎么用 SPOOLing 技術將其改造成共享資源呢?
當多個用戶進程提出輸出打印的請求時,系統會答應這些請求,但是并不是真正把打印機分配給它們,而是由假脫機管理進程為每個進程做以下兩件事:①在磁盤輸入井中為進程申請一個空閑緩沖區,這個緩沖區是在磁盤上的,并將要打印的數據送入其中;②為用戶進程申請一張空白的打印請求表,并將用戶的打印請求填入表中, 主要用來說明用戶的打印數據存放位置等信息,再將該表掛到假脫機文件隊列上。
當打印機空閑時,輸出進程會從文件隊列的隊頭取出一張打印申請表,并根據表中的要求將要打印的數據從輸出井傳送到輸出緩沖區,再輸出到打印機進行打印,然后用這種方式依次處理完全部的打印任務。
這樣來看,雖然系統中只有一臺打印機,但每個進程提出打印請求時,系統都會為進程在輸出井中分配一個存儲區,相當于分配了一個邏輯設備,使每個用戶進程都覺得自己在獨占一臺打印機,從而實現了對打印機的共享。
對假脫機技術這部分的內容簡單的總結一下,如下圖所示。
2、設備的分配與回收
⑴設備分配時應當考慮的因素
設備分配時應當考慮的因素有:設備的固有屬性、設備分配算法和設備分配中的安全性。
設備的固有屬性可分為三種:獨占設備、共享設備和虛擬設備。
獨占設備在一個時段只能分配給一個進程;共享設備可同時分配給多個進程使用,各進程往往宏觀上同時共享使用設備,而微觀上在交替使用;虛擬設備是采用 SPOOLing 技術將獨占設備改造成虛擬的共享設備,可同時分配給多個進程使用。
設備分配算法有先來先服務、優先級高者優先、短任務優先等算法。
設備分配中的安全性有兩種設備分配方式:
第一種:安全分配方式:為進程分配一個設備后就將進程阻塞,本次 I/O 完成后才將進程喚醒。這種方式下,一個時間段內每個進程只能使用一個設備,其優點是破壞了請求與保持條件,不會產生死鎖,缺點是對于一個進程來說,CPU 和 I/O 設備只能串行的工作。
第二種:不安全分配方式:進程發出 I/O 請求后,系統為其分配 I/O 設備,進程可以繼續執行,之后還可以發出新的 I/O 請求,只有某個 I/O 請求得不到滿足時才將進程阻塞。這種方式下,一個進程可以同時使用多個設備,其優點是進程的計算任務和 I/O 任務可以并行的處理,使進程迅速推進,缺點是有可能發生死鎖。
⑵靜態分配和動態分配
靜態分配:進程運行前為其分配全部所需的資源,運行結束后歸還資源,其破壞了請求和保持條件,因此不會發生死鎖。
動態分配:進程運行過程中動態申請設備資源。
⑶設備分配管理中的數據結構
設備、控制器和通道之間的關系:一個通道可控制多個設備控制器,每個設備控制器可控制多個設備。
系統會為每個設備配置一張設備控制表(DCT,Device Control Table) ,用于記錄設備情況,設備控制表中的主要內容如下圖所示。
每個設備控制器都會對應一張控制器控制表(COCT,COntroller Control Table),操作系統根據控制器控制表的信息對控制器進行操作和管理,控制器控制表中的主要內容如下圖所示。
每個通道都會對應一張通道控制表(CHCT,CHannel Control Table),操作系統會根據通道控制表的信息對通道進行操作和管理,通道控制表中的主要內容如下圖所示。
系統設備表(SDT,System Device Table)記錄了系統中全部設備的情況,每個設備對應一個表目,系統設備表及表目示意圖如下。
⑷設備分配的步驟
設備分配的步驟如下:
①根據進程請求的物理設備名查找系統設備表,物理設備名是進程請求分配設備時提供的參數;
②根據系統設備表找到設備控制表,若設備忙碌則將進程 PCB 掛到設備等待隊列中,不忙碌則將設備分配給進程;
③根據設備控制表找到控制器控制表,若控制器忙碌則將進程 PCB 掛到控制器等待隊列中,不忙碌則將控制器分配給進程;
④根據控制器控制表找到通道控制表,若通道忙碌則將進程 PCB 掛到通道等待隊列中,不忙碌則將通道分配給進程;
只有設備、控制器和通道三者都分配成功時,這次設備分配才算成功,之后便可以啟動 I/O 設備進行數據傳送。
這種設備分配方式的缺點:用戶編程時必須使用物理設備名,底層細節對用戶不透明,不方便編程;若更換一個物理設備,則程序無法運行;若進程請求的物理設備正在忙碌,則即使系統中還有同類型的設備,進程也必須阻塞等待。
針對上面缺點的改進:建立邏輯設備名與物理設備名的映射機制,用戶編程時只需提供邏輯設備名。
改進后設備分配的步驟如下:
①根據進程請求的邏輯設備名查找系統設備表,用戶編程時提供的邏輯設備名其實就是設備類型;
②查找系統設備表,找到用戶進程指定類型的并且空閑的設備,將其分配給該進程,操作系統在邏輯設備表(LUT,Logical Unit Table)中新增一個表項;
③根據設備控制表找到控制器控制表,若控制器忙碌則將進程 PCB 掛到控制器等待隊列中,不忙碌則將控制器分配給進程;
④根據控制器控制表找到通道控制表,若通道忙碌則將進程 PCB 掛到通道等待隊列中,不忙碌則將通道分配給進程;
邏輯設備表建立了邏輯設備名與物理設備名之間的映射關系。在第一次設備分配完成后,如果之后用戶進程再次通過相同的邏輯設備名請求使用設備,則操作系統通過邏輯設備表即可知道用戶進程實際要使用的是哪個物理設備了,并且也能知道該設備的驅動程序入口地址。
對設備的分配與回收這部分的內容簡單的總結一下,如下圖所示。
3、緩沖區管理
緩沖區是一個存儲區域,可以由專門的硬件寄存器組成,也可以利用內存作為緩沖區。使用硬件作為緩沖區的成本較高,容量也較小,一般只用在對速度要求非常高的場合。一般情況下,更多的是利用內存作為緩沖區,設備獨立性軟件的緩沖區管理就是要組織管理好這些緩沖區。
⑴緩沖區的作用
緩沖區的作用主要有:
①緩和 CPU 與 I/O 設備之間速度不匹配的矛盾;
②減少對 CPU 的中斷頻率,放寬對 CPU 中斷響應時間的限制;
③解決數據粒度不匹配的問題;
④提高 CPU 與 I/O 設備之間的并行性。
CPU、緩沖區和 I/O 設備之間的示意圖如下圖所示。
⑵單緩沖
假設某用戶進程請求某種塊設備讀入若干塊的數據,若采用單緩沖的策略,操作系統會在主存中為其分配一個緩沖區,一個緩沖區的大小一般為一個塊。
需要注意的是,當緩沖區數據非空時,不能往緩沖區沖入數據,只能從緩沖區把數據傳出;當緩沖區為空時,可以往緩沖區沖入數據,但必須把緩沖區充滿以后,才能從緩沖區把數據傳出。
從輸入到 CPU 處理的這個過程中,輸入時間大于處理時間的情況如下圖所示。
輸入時間小于處理時間的情況如下圖所示。
采用單緩沖策略,處理一個數據塊的平均耗時為:Max(C,T) +M
⑶雙緩沖
假設某用戶進程請求某種塊設備讀入若干塊的數據,若采用雙緩沖的策略,操作系統會在主存中為其分配兩個緩沖區,一個緩沖區的大小一般為一個塊。
假設雙緩沖中的初始狀態為:工作區空,兩個緩沖區一個滿,另一個空。
輸入時間大于處理時間和傳送時間之和的情況如下圖所示。
輸入時間小于處理時間和傳送時間之和的情況如下圖所示。
采用雙緩沖策略,處理一個數據塊的平均耗時為:Max(T,C+M)
兩臺機器之間通信時,可以配置緩沖區用于數據的發送和接收,兩臺機器配置單緩沖區的示意圖如下圖所示。
若兩個相互通信的機器只設置單緩沖區,在任一時刻只能實現數據的單向傳輸。
兩臺機器配置雙緩沖區的示意圖如下圖所示。
若兩個相互通信的機器設置雙緩沖區,在同一時刻可以實現雙向的數據傳輸。
管道通信與其類似,管道其實就是緩沖區,要實現數據的雙向傳輸,必須設置兩個管道。
⑷循環緩沖區和緩沖池
將多個大小相等的緩沖區鏈接成一個循環隊列就形成了循環緩沖區。
下圖中就是一個循環緩沖區的示意圖,其中綠色的表示空緩沖區,橙色的表示已經充滿數據的緩沖區。
緩沖池由系統中共用的緩沖區組成,這些緩沖區按使用狀況可以分為:空緩沖隊列、裝滿輸入數據的緩沖隊列和裝滿輸出數據的緩沖隊列。此外,根據一個緩沖區在實際運算中扮演的功能不同,又設置了四種工作緩沖區:用于收容輸入數據的工作緩沖區(hin)、用于提取輸入數據的工作緩沖區(sin)、用于收容輸出數據的工作緩沖區(hout)以及用于提取輸出數據的工作緩沖區(sout)。
緩沖池的示意圖如下圖所示。
結合上圖,在緩沖池中可以進行以下操作:
①在輸入進程請求輸入數據時,從空緩沖隊列中取出一塊作為收容輸入數據的工作緩沖區(hin),沖滿數據后將緩沖區掛到輸入隊列隊尾。
②計算機進程相要取得一塊輸入數據時,從輸入隊列中取得一塊沖滿輸入數據的緩沖區作為提取輸入數據的工作緩沖區(sin),緩沖區讀空后掛到空緩沖區隊列。
③計算進程想要將準備好的數據沖入緩沖區時,從空緩沖隊列中取出一塊作為收容輸出數據的工作緩沖區(hout),數據沖滿后將緩沖區掛到輸出隊列隊尾。
④輸出進程請求輸出數據時,從輸出隊列中取得一塊沖滿輸出數據的緩沖區作為提取輸出數據的工作緩沖區(sout),緩沖區讀空后掛到空緩沖隊列隊尾。
對緩沖區管理這部分的內容簡單的總結一下,如下圖所示。
總結
以上就是操作系統—— I/O 相關知識的所有內容了,重點理解四種 I/O 控制方式,注意區分這些方式的不同之處以及每種方式針對前一種方式的改進,此外,I/O 核心子系統中的內容也要有一定的了解。
參考視頻:
I/O 設備的概念和分類
I/O 控制器
I/O 控制方式
I/O 軟件層次結構
I/O 核心子系統
假脫機技術
設備的分配與回收
緩沖區管理
總結
以上是生活随笔為你收集整理的操作系统—— I/O 相关知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html5 audio音频播放器
- 下一篇: 2007年个人回忆与总结