18 操作系统第五章 设备管理 IO设备的基本概念和分类 IO控制器 IO控制方式 IO软件层次结构 IO核心子系统 假脱机技术 设备的分配与回收 缓冲区管理
文章目錄
- 1 IO設(shè)備的基本概念和分類
- 1.1 什么是I/O設(shè)備
- 1.2 I/O設(shè)備分類
- 2 IO控制器
- 2.1 I/O設(shè)備組成
- 2.2 I/O控制器功能
- 2.3 I/O控制器的組成
- 2.4 寄存器編址方式
- 2.5 IO控制器小結(jié)
- 3 IO控制方式
- 3.1 程序直接控制方式
- 3.2 中斷驅(qū)動(dòng)方式
- 3.3 DMA方式
- 3.3.1 DMA控制器
- 3.3.2 DMA方式
- 3.4 通道控制方式
- 3.5 IO控制方式小結(jié)
- 4 IO軟件層次結(jié)構(gòu)
- 4.1 用戶層軟件
- 4.2 設(shè)備獨(dú)立性軟件
- 4.3 設(shè)備驅(qū)動(dòng)程序
- 4.4 中斷處理程序
- 4.5 IO軟件層次結(jié)構(gòu)小結(jié)
- 5 IO核心子系統(tǒng)與假脫機(jī)技術(shù)
- 5.1 IO調(diào)度
- 5.2 設(shè)備保護(hù)
- 5.3 假脫機(jī)技術(shù)
- 5.4 共享打印機(jī)原理分析
- 5.5 假脫機(jī)技術(shù)小結(jié)
- 6 設(shè)備分配
- 6.1 設(shè)備分配時(shí)應(yīng)考慮的因素
- 6.2 靜態(tài)分配和動(dòng)態(tài)分配
- 6.3 設(shè)備分配管理中的數(shù)據(jù)結(jié)構(gòu)
- 6.4 設(shè)備分配的步驟
- 6.5 設(shè)備分配的步驟的改進(jìn)
- 6.6 設(shè)備分配與回收小結(jié)
- 7 緩沖區(qū)管理
- 7.1 緩沖區(qū)定義及作用
- 7.2 單緩沖
- 7.3 雙緩沖
- 7.4 使用單/雙緩沖在通信時(shí)的區(qū)別
- 7.5 循環(huán)緩沖區(qū)
- 7.6 緩沖池
- 7.7 緩沖區(qū)小結(jié)
1 IO設(shè)備的基本概念和分類
1.1 什么是I/O設(shè)備
- “I/O”就是“輸入/輸出”(Input/Output)
- I/O設(shè)備就是可以將數(shù)據(jù)輸入到計(jì)算機(jī),或者可以接收計(jì)算機(jī)輸出數(shù)據(jù)的外部設(shè)備,屬于計(jì)算機(jī)中的硬件部件。
UNIX系統(tǒng)將外部設(shè)備抽象為一種特殊的文件,用戶可以使用與文件操作相同的方式對(duì)外部設(shè)備進(jìn)行操作。
1.2 I/O設(shè)備分類
I/O設(shè)備按使用特性分類:
I/O設(shè)備按傳輸速率分類:
I/O設(shè)備按傳輸速率分類:
2 IO控制器
2.1 I/O設(shè)備組成
I/O設(shè)備由機(jī)械部件和電子部件組成,電子部件包括(I/O控制器、設(shè)備控制器)
- I/O設(shè)備的機(jī)械部件主要用來(lái)執(zhí)行具體I/O操作。
如我們看得見摸得著的鼠標(biāo)/鍵盤的按鈕;顯示器的LED屏;移動(dòng)硬盤的磁臂、磁盤盤面。 - I/O設(shè)備的電子部件通常是一塊插入主板擴(kuò)充槽的印刷電路板。
- CPU無(wú)法直接控制l/O設(shè)備的機(jī)械部件,因此I/0設(shè)備還要有一個(gè)電子部件作為CPU和I/O設(shè)備機(jī)械部件之間的“中介”,用于實(shí)現(xiàn)CPU對(duì)設(shè)備的控制。
- 這個(gè)電子部件就是I/O控制器,又稱設(shè)備控制器。CPU可控制I/O控制器,又由I/O控制器來(lái)控制設(shè)備的機(jī)械部件。
2.2 I/O控制器功能
2.3 I/O控制器的組成
值得注意的小細(xì)節(jié):
(如:每個(gè)控制/狀態(tài)寄存器對(duì)應(yīng)一個(gè)具體的設(shè)備),且這些寄存器都要有相應(yīng)的地址,才能方便CPU操作。有的計(jì)算機(jī)會(huì)讓這些寄存器占用內(nèi)存地址的一部分,稱為內(nèi)存映像I/0;另一些計(jì)算機(jī)則采用I/O專用地址,即寄存器獨(dú)立編址。
2.4 寄存器編址方式
內(nèi)存映像I/O VS 寄存器獨(dú)立編址:
2.5 IO控制器小結(jié)
3 IO控制方式
IO控制總覽:
3.1 程序直接控制方式
Key word:輪詢
完成一次讀/寫操作的流程(以讀操作為例):
很頻繁,I/O操作開始之前、完成之后需要CPU介入,并且在等待l/0完成的過(guò)程中CPU需要不斷地輪詢檢查。
每次讀/寫一個(gè)字
讀操作(數(shù)據(jù)輸入):I/O設(shè)備→CPU(CPU寄存器)→內(nèi)存
寫操作(數(shù)據(jù)輸出):內(nèi)存→CPU→I/0設(shè)備
每個(gè)字的讀/寫都需要CPU的幫助
優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)單。在讀/寫指令之后,加上實(shí)現(xiàn)循環(huán)檢查的一系列指令即可(因此才稱為“程序直接控制方式”)
缺點(diǎn):CPU和I/O設(shè)備只能串行工作,CPU需要一直輪詢檢查,長(zhǎng)期處于“忙等”狀態(tài),CPU利用率低。
3.2 中斷驅(qū)動(dòng)方式
- 引入中斷機(jī)制。由于I/O設(shè)備速度很慢,因此在CPU發(fā)出讀/寫命令后,可將等待I/O的進(jìn)程阻塞,先切換到別的進(jìn)程執(zhí)行。
- 當(dāng)I/O完成后,控制器會(huì)向CPU發(fā)出一個(gè)中斷信號(hào),CPU檢測(cè)到中斷信號(hào)后,會(huì)保存當(dāng)前進(jìn)程的運(yùn)行環(huán)境信息,轉(zhuǎn)去執(zhí)行中斷處理程序處理該中斷。處理中斷的過(guò)程中,CPU從I/O控制器讀一個(gè)字的數(shù)據(jù)傳送到CPU寄存器,再寫入主存。接著,CPU恢復(fù)等待I/O的進(jìn)程(或其他進(jìn)程)的運(yùn)行環(huán)境,然后繼續(xù)執(zhí)行。
注意:
每次I/O操作開始之前、完成之后需要CPU介入。
等待I/O完成的過(guò)程中CPU可以切換到別的進(jìn)程執(zhí)行。
每次讀/寫一個(gè)字
讀操作(數(shù)據(jù)輸入):I/O設(shè)備→CPU→內(nèi)存
寫操作(數(shù)據(jù)輸出):內(nèi)存→CPU→I/0設(shè)備
優(yōu)點(diǎn):與“程序直接控制方式”相比,在“中斷驅(qū)動(dòng)方式”中,I/0控制器會(huì)通過(guò)中斷信號(hào)主動(dòng)報(bào)告I/0已完成,CPU不再需要不停地輪詢。
CPU和I/O設(shè)備可并行工作,CPU利用率得到明顯提升。
缺點(diǎn):每個(gè)字在I/0設(shè)備與內(nèi)存之間的傳輸,都需要經(jīng)過(guò)CPU。而頻繁的中斷處理會(huì)消耗較多的CPU時(shí)間。
3.3 DMA方式
與“中斷驅(qū)動(dòng)方式”相比,DMA方式(Direct Memory Access,直接存儲(chǔ)器存取。主要用于塊設(shè)備的I/0控制)有這樣幾個(gè)改進(jìn):
1. 數(shù)據(jù)的傳送單位是“塊”。不再是一個(gè)字、一個(gè)字的傳送;
2. 數(shù)據(jù)的流向是從設(shè)備直接放入內(nèi)存,或者從內(nèi)存直接到設(shè)備。不再需要CPU作為“快遞小哥”。
3. 僅在傳送一個(gè)或多個(gè)數(shù)據(jù)塊的開始和結(jié)束時(shí),才需要CPU干預(yù)。
3.3.1 DMA控制器
3.3.2 DMA方式
CPU干預(yù)的頻率
僅在傳送一個(gè)或多個(gè)數(shù)據(jù)塊的開始和結(jié)束時(shí),才需要CPU干預(yù)。
數(shù)據(jù)傳送的單位
每次讀/寫一個(gè)或多個(gè)塊(注意:每次讀寫的只能是連續(xù)的多個(gè)塊,且這些塊讀入內(nèi)存后在內(nèi)存中也必須是連續(xù)的)
讀操作(數(shù)據(jù)輸入):I/O設(shè)備→內(nèi)存
寫操作(數(shù)據(jù)輸出):內(nèi)存→I/O設(shè)備
優(yōu)點(diǎn):數(shù)據(jù)傳輸以“塊”為單位,CPU介入頻率進(jìn)一步降低。數(shù)據(jù)的傳輸不再需要先經(jīng)過(guò)CPU再寫入內(nèi)存,數(shù)據(jù)傳輸效率進(jìn)一步增加。CPU和I/O設(shè)備的并行性得到提升。
缺點(diǎn):CPU每發(fā)出一條I/O指令,只能讀/寫一個(gè)或多個(gè)連續(xù)的數(shù)據(jù)塊。
如果要讀/寫多個(gè)離散存儲(chǔ)的數(shù)據(jù)塊,或者要將數(shù)據(jù)分別寫到不同的內(nèi)存區(qū)域時(shí),CPU要分別發(fā)出多條I/O指令,進(jìn)行多次中斷處理才能完成。
3.4 通道控制方式
- 通道:一種硬件,可以理解為是“弱雞版的CPU”。通道可以識(shí)別并執(zhí)行一系列通道指令
- 弱雞版的CPU:與CPU相比,通道可以執(zhí)行的指令很單一,并且通道程序是放在主機(jī)內(nèi)存中的,也就是說(shuō)通道與CPU共享內(nèi)存
極低,通道會(huì)根據(jù)CPU的指示執(zhí)行相應(yīng)的通道程序,只有完成一組數(shù)據(jù)塊的讀/寫后才需要發(fā)出中斷信號(hào),請(qǐng)求CPU干預(yù)。
每次讀/寫一組數(shù)據(jù)塊
讀操作(數(shù)據(jù)輸入):I/O設(shè)備→內(nèi)存
寫操作(數(shù)據(jù)輸出):內(nèi)存→I/0設(shè)備
缺點(diǎn):實(shí)現(xiàn)復(fù)雜,需要專門的通道硬件支持
優(yōu)點(diǎn):CPU、通道、l/O設(shè)備可并行工作,資源利用率很高。
3.5 IO控制方式小結(jié)
4 IO軟件層次結(jié)構(gòu)
4.1 用戶層軟件
4.2 設(shè)備獨(dú)立性軟件
設(shè)備獨(dú)立性軟件,又稱設(shè)備無(wú)關(guān)性軟件。與設(shè)備的硬件特性無(wú)關(guān)的功能幾乎都在這一層實(shí)現(xiàn)。
設(shè)備獨(dú)立性軟件主要實(shí)現(xiàn)的功能:
原理類似于文件保護(hù)。設(shè)備被看做是一種特殊的文件,不同用戶對(duì)各個(gè)文件的訪問權(quán)限是不一樣的,同理,對(duì)設(shè)備的訪問權(quán)限也不一樣。
可以通過(guò)緩沖技術(shù)屏蔽設(shè)備之間數(shù)據(jù)交換單位大小和傳輸速度的差異
用戶或用戶層軟件發(fā)出I/O操作相關(guān)系統(tǒng)調(diào)用的系統(tǒng)調(diào)用時(shí),需要指明此次要操作的I/O設(shè)備的邏輯設(shè)備名。
(eg:去學(xué)校打印店打印時(shí),需要選擇打印機(jī)1/打印機(jī)2/打印機(jī)3,其實(shí)這些都是邏輯設(shè)備名)
設(shè)備獨(dú)立性軟件需要通過(guò)“邏輯設(shè)備表(LUT,Logical Unit Table)”來(lái)確定邏輯設(shè)備對(duì)應(yīng)的物理設(shè)備,并找到該設(shè)備對(duì)應(yīng)的設(shè)備驅(qū)動(dòng)程序
操作系統(tǒng)系統(tǒng)可以采用兩種方式管理邏輯設(shè)備表(LUT):
思考:為何不同的設(shè)備需要不同的設(shè)備驅(qū)動(dòng)程序?
不同設(shè)備的內(nèi)部硬件特性也不同,這些特性只有廠家才知道,因此廠家須提供與設(shè)備相對(duì)應(yīng)的驅(qū)動(dòng)程序,CPU執(zhí)行驅(qū)動(dòng)程序的指令序列,來(lái)完成設(shè)置設(shè)備寄存器,檢查設(shè)備狀態(tài)等工作
4.3 設(shè)備驅(qū)動(dòng)程序
主要負(fù)責(zé)對(duì)硬件設(shè)備的具體控制,將上層發(fā)出的一系列命令(如read/write)轉(zhuǎn)化成特定設(shè)備“能聽得懂”的一系列操作。包括設(shè)置設(shè)備寄存器;檢查設(shè)備狀態(tài)等
不同的I/0設(shè)備有不同的硬件特性,具體細(xì)節(jié)只有設(shè)備的廠家才知道。
因此廠家需要根據(jù)設(shè)備的硬件特性設(shè)計(jì)并提供相應(yīng)的驅(qū)動(dòng)程序。
注:驅(qū)動(dòng)程序一般會(huì)以一個(gè)獨(dú)立進(jìn)程的方式存在。
4.4 中斷處理程序
當(dāng)I/0任務(wù)完成時(shí),I/0控制器會(huì)發(fā)送一個(gè)中斷信號(hào),系統(tǒng)會(huì)根據(jù)中斷信號(hào)類型找到相應(yīng)的中斷處理程序并執(zhí)行。
中斷處理程序的處理流程如下:
4.5 IO軟件層次結(jié)構(gòu)小結(jié)
理解并記住I/0軟件各個(gè)層次之間的順序,要能夠推理判斷某個(gè)處理應(yīng)該是在哪個(gè)層次完成的(最常考的是設(shè)備獨(dú)立性軟件、設(shè)備驅(qū)動(dòng)程序這兩層。只需理解一個(gè)特點(diǎn)即可:直接涉及到硬件具體細(xì)節(jié)、且與中斷無(wú)關(guān)的操作肯定是在設(shè)備驅(qū)動(dòng)程序?qū)油瓿傻?#xff1b;沒有涉及硬件的、對(duì)各種設(shè)備都需要進(jìn)行的管理工作都是在設(shè)備獨(dú)立性軟件層完成的)
5 IO核心子系統(tǒng)與假脫機(jī)技術(shù)
注:假脫機(jī)技術(shù)(SPOOLing技術(shù))需要請(qǐng)求“磁盤設(shè)備”的設(shè)備獨(dú)立性軟件的服務(wù),因此一般來(lái)說(shuō)假脫機(jī)技術(shù)是在用戶層軟件實(shí)現(xiàn)的。但是408大綱又將假脫機(jī)技術(shù)歸為“I/0核心子系統(tǒng)”的功能,因此考試時(shí)還是以大綱為準(zhǔn)。
5.1 IO調(diào)度
I/O調(diào)度:用某種算法確定一個(gè)好的順序來(lái)處理各個(gè)I/O請(qǐng)求。
如:磁盤調(diào)度(先來(lái)先服務(wù)算法、最短尋道優(yōu)先算法、SCAN算法、C-SCAN算法、LOOK算法、C-LOOK算法)。當(dāng)多個(gè)磁盤I/O請(qǐng)求到來(lái)時(shí),用某種調(diào)度算法確定滿足I/O請(qǐng)求的順序。
5.2 設(shè)備保護(hù)
操作系統(tǒng)需要實(shí)現(xiàn)文件保護(hù)功能,不同的用戶對(duì)各個(gè)文件有不同的訪問權(quán)限(如:只讀、讀和寫等)。
在UNIX系統(tǒng)中,設(shè)備被看做是一種特殊的文件,每個(gè)設(shè)備也會(huì)有對(duì)應(yīng)的FCB。當(dāng)用戶請(qǐng)求訪問某個(gè)設(shè)備時(shí),系統(tǒng)根據(jù)FCB中記錄的信息來(lái)判斷該用戶是否有相應(yīng)的訪問權(quán)限,以此實(shí)現(xiàn)“設(shè)備保護(hù)”的功能。(參考“文件保護(hù)”)
5.3 假脫機(jī)技術(shù)
引入脫機(jī)技術(shù)后,緩解了CPU與慢速I/0設(shè)備的速度矛盾。另一方面,即使CPU在忙碌,也可以提前將數(shù)據(jù)輸入到磁帶;即使慢速的輸出設(shè)備正在忙碌,也可以提前將數(shù)據(jù)輸出到磁帶。
“假脫機(jī)技術(shù)”,又稱“SPOOLing技術(shù)”是用軟件的方式模擬脫機(jī)技術(shù)。SPOOLing系統(tǒng)的組成如下:
要實(shí)現(xiàn)SPOOLing技術(shù),必須要有多道程序技術(shù)的支持。系統(tǒng)會(huì)建立“輸入進(jìn)程”和“輸出進(jìn)程”。
5.4 共享打印機(jī)原理分析
當(dāng)多個(gè)用戶進(jìn)程提出輸出打印的請(qǐng)求時(shí),系統(tǒng)會(huì)答應(yīng)它們的請(qǐng)求,但是并不是真正把打印機(jī)分配給他們,而是由假脫機(jī)管理進(jìn)程為每個(gè)進(jìn)程做兩件事:
當(dāng)打印機(jī)空閑時(shí),輸出進(jìn)程會(huì)從文件隊(duì)列的隊(duì)頭取出一張打印請(qǐng)求表,并根據(jù)表中的要求將要打印的數(shù)據(jù)從輸出井傳送到輸出緩沖區(qū),再輸出到打印機(jī)進(jìn)行打印。用這種方式可依次處理完全部的打印任務(wù)
雖然系統(tǒng)中只有一個(gè)臺(tái)打印機(jī),但每個(gè)進(jìn)程提出打印請(qǐng)求時(shí),系統(tǒng)都會(huì)為在輸出井中為其分配一個(gè)存儲(chǔ)區(qū)(相當(dāng)于分配了一個(gè)邏輯設(shè)備),使每個(gè)用戶進(jìn)程都覺得自己在獨(dú)占一臺(tái)打印機(jī),從而實(shí)現(xiàn)對(duì)打印機(jī)的共享。
SPOOLing技術(shù)可以把一臺(tái)物理設(shè)備虛擬成邏輯上的多臺(tái)設(shè)備,可將獨(dú)占式設(shè)備改造成共享設(shè)備。
5.5 假脫機(jī)技術(shù)小結(jié)
6 設(shè)備分配
6.1 設(shè)備分配時(shí)應(yīng)考慮的因素
設(shè)備分配時(shí)應(yīng)考慮的因素:設(shè)備的固有屬性、設(shè)備分配算法、設(shè)備分配中的安全性
- 獨(dú)占設(shè)備:一個(gè)時(shí)段只能分配給一個(gè)進(jìn)程(如打印機(jī))
- 共享設(shè)備:可同時(shí)分配給多個(gè)進(jìn)程使用(如磁盤),各進(jìn)程往往是宏觀上同時(shí)共享使用設(shè)備,而微觀上交替使用。
- 虛擬設(shè)備:采用SPOOLing技術(shù)將獨(dú)占設(shè)備改造成虛擬的共享設(shè)備,可同時(shí)分配給多個(gè)進(jìn)程使用(如采用SPOOLing技術(shù)實(shí)現(xiàn)的共享打印機(jī))
先來(lái)先服務(wù)
優(yōu)先級(jí)高者優(yōu)先
短任務(wù)優(yōu)先
…
- 安全分配方式:為進(jìn)程分配一個(gè)設(shè)備后就將進(jìn)程阻塞,本次I/0完成后才將進(jìn)程喚醒。(eg:考慮進(jìn)程請(qǐng)求打印機(jī)打印輸出的例子)
- 特點(diǎn):一個(gè)時(shí)段內(nèi)每個(gè)進(jìn)程只能使用一個(gè)設(shè)備
- 優(yōu)點(diǎn):破壞了“請(qǐng)求和保持”條件,不會(huì)死鎖
- 缺點(diǎn):對(duì)于一個(gè)進(jìn)程來(lái)說(shuō),CPU和I/O設(shè)備只能串行工作
- 不安全分配方式:進(jìn)程發(fā)出I/O請(qǐng)求后,系統(tǒng)為其分配I/O設(shè)備,進(jìn)程可繼續(xù)執(zhí)行,之后還可以發(fā)出新的I/O請(qǐng)求。只有某個(gè)I/O請(qǐng)求得不到滿足時(shí)才將進(jìn)程阻塞。
- 特點(diǎn):一個(gè)進(jìn)程可以同時(shí)使用多個(gè)設(shè)備
- 優(yōu)點(diǎn):進(jìn)程的計(jì)算任務(wù)和I/O任務(wù)可以并行處理,使進(jìn)程迅速推進(jìn)
- 缺點(diǎn):有可能發(fā)生死鎖(死鎖避免、死鎖的檢測(cè)和解除)
6.2 靜態(tài)分配和動(dòng)態(tài)分配
- 靜態(tài)分配:進(jìn)程運(yùn)行前為其分配全部所需資源,運(yùn)行結(jié)束后歸還資源
破壞了“請(qǐng)求和保持”條件,不會(huì)發(fā)生死鎖
- 動(dòng)態(tài)分配:進(jìn)程運(yùn)行過(guò)程中動(dòng)態(tài)申請(qǐng)?jiān)O(shè)備資源
6.3 設(shè)備分配管理中的數(shù)據(jù)結(jié)構(gòu)
“設(shè)備、控制器、通道”之間的關(guān)系:
一個(gè)通道可控制多個(gè)設(shè)備控制器,每個(gè)設(shè)備控制器可控制多個(gè)設(shè)備。(樹形關(guān)系)
設(shè)備控制表(DCT):系統(tǒng)為每個(gè)設(shè)備配置一張DCT,用于記錄設(shè)備情況
控制器控制表(COCT):每個(gè)設(shè)備控制器都會(huì)對(duì)應(yīng)一張COCT。操作系統(tǒng)根據(jù)COCT的信息對(duì)控制器進(jìn)行操作和管理。
通道控制表(CHCT):每個(gè)通道都會(huì)對(duì)應(yīng)一張CHCT。操作系統(tǒng)根據(jù)CHCT的信息對(duì)通道進(jìn)行操作和管理。
系統(tǒng)設(shè)備表(SDT):記錄了系統(tǒng)中全部設(shè)備的情況,每個(gè)設(shè)備對(duì)應(yīng)一個(gè)表目。
6.4 設(shè)備分配的步驟
注:只有設(shè)備、控制器、通道三者都分配成功時(shí),這次設(shè)備分配才算成功,之后便可啟動(dòng)I/O設(shè)備進(jìn)行數(shù)據(jù)傳送
6.5 設(shè)備分配的步驟的改進(jìn)
原先的缺點(diǎn):
改進(jìn)方法:建立邏輯設(shè)備名與物理設(shè)備名的映射機(jī)制,用戶編程時(shí)只需提供邏輯設(shè)備名
邏輯設(shè)備表(LUT)建立了邏輯設(shè)備名與物理設(shè)備名之間的映射關(guān)系。
- 某用戶進(jìn)程第一次使用設(shè)備時(shí)使用邏輯設(shè)備名向操作系統(tǒng)發(fā)出請(qǐng)求,操作系統(tǒng)根據(jù)用戶進(jìn)程指定的設(shè)備類型(邏輯設(shè)備名)查找系統(tǒng)設(shè)備表,找到一個(gè)空閑設(shè)備分配給進(jìn)程,并在LUT中增加相應(yīng)表項(xiàng)。
- 如果之后用戶進(jìn)程再次通過(guò)相同的邏輯設(shè)備名請(qǐng)求使用設(shè)備,則操作系統(tǒng)通過(guò)LUT表即可知道用戶進(jìn)程實(shí)際要使用的是哪個(gè)物理設(shè)備了,并且也能知道該設(shè)備的驅(qū)動(dòng)程序入口地址。
邏輯設(shè)備表的設(shè)置問題:
- 整個(gè)系統(tǒng)只有一張LUT:各用戶所用的邏輯設(shè)備名不允許重復(fù),適用于單用戶操作系統(tǒng)
- 每個(gè)用戶一張LUT:不同用戶的邏輯設(shè)備名可重復(fù),適用于多用戶操作系統(tǒng)
6.6 設(shè)備分配與回收小結(jié)
7 緩沖區(qū)管理
7.1 緩沖區(qū)定義及作用
- 緩沖區(qū)是一個(gè)存儲(chǔ)區(qū)域,可以由專門的硬件寄存器組成,也可利用內(nèi)存作為緩沖區(qū)。
- 使用硬件作為緩沖區(qū)的成本較高,容量也較小,一般僅用在對(duì)速度要求非常高的場(chǎng)合(如存儲(chǔ)器管理中所用的聯(lián)想寄存器,由于對(duì)頁(yè)表的訪問頻率極高,因此使用速度很快的聯(lián)想寄存器來(lái)存放頁(yè)表項(xiàng)的副本)
- 一般情況下,更多的是利用內(nèi)存作為緩沖區(qū),“設(shè)備獨(dú)立性軟件”的緩沖區(qū)管理就是要組織管理好這些緩沖區(qū)
7.2 單緩沖
假設(shè)某用戶進(jìn)程請(qǐng)求某種塊設(shè)備讀入若干塊的數(shù)據(jù)。若采用單緩沖的策略,操作系統(tǒng)會(huì)在主存中為其分配一個(gè)緩沖區(qū)(若題目中沒有特別說(shuō)明,一個(gè)緩沖區(qū)的大小就是一個(gè)塊)。
注意:當(dāng)緩沖區(qū)數(shù)據(jù)非空時(shí),不能往緩沖區(qū)沖入數(shù)據(jù),只能從緩沖區(qū)把數(shù)據(jù)傳出;當(dāng)緩沖區(qū)為空時(shí),可以往緩沖區(qū)沖入數(shù)據(jù),但必須把緩沖區(qū)充滿以后,才能從緩沖區(qū)把數(shù)據(jù)傳出。
結(jié)論:采用單緩沖策略,處理一塊數(shù)據(jù)平均耗時(shí)Max(C,T)+M
7.3 雙緩沖
假設(shè)某用戶進(jìn)程請(qǐng)求某種塊設(shè)備讀入若干塊的數(shù)據(jù)。若采用雙緩沖的策略,操作系統(tǒng)會(huì)在主存中為其分配兩個(gè)緩沖區(qū)(若題目中沒有特別說(shuō)明,一個(gè)緩沖區(qū)的大小就是一個(gè)塊)
雙緩沖題目中,假設(shè)初始狀態(tài)為:工作區(qū)空,其中一個(gè)緩沖區(qū)滿,另一個(gè)緩沖區(qū)空
結(jié)論:采用雙緩沖策略,處理一個(gè)數(shù)據(jù)塊的平均耗時(shí)為Max(T,C+M)
7.4 使用單/雙緩沖在通信時(shí)的區(qū)別
兩臺(tái)機(jī)器之間通信時(shí),可以配置緩沖區(qū)用于數(shù)據(jù)的發(fā)送和接收。
顯然,若兩個(gè)相互通信的機(jī)器只設(shè)置單緩沖區(qū),在任一時(shí)刻只能實(shí)現(xiàn)數(shù)據(jù)的單向傳輸。
若兩個(gè)相互通信的機(jī)器設(shè)置雙緩沖區(qū),則同一時(shí)刻可以實(shí)現(xiàn)雙向的數(shù)據(jù)傳輸。
注:管道通信中的“管道”其實(shí)就是緩沖區(qū)。要實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,必須設(shè)置兩個(gè)管道
7.5 循環(huán)緩沖區(qū)
將多個(gè)大小相等的緩沖區(qū)鏈接成一個(gè)循環(huán)隊(duì)列。
注:以下圖示中,橙色表示已充滿數(shù)據(jù)的緩沖區(qū),綠色表示空緩沖區(qū)。
7.6 緩沖池
緩沖池由系統(tǒng)中共用的緩沖區(qū)組成。這些緩沖區(qū)按使用狀況可以分為:空緩沖隊(duì)列、裝滿輸入數(shù)據(jù)的緩沖隊(duì)列(輸入隊(duì)列)、裝滿輸出數(shù)據(jù)的緩沖隊(duì)列(輸出隊(duì)列)。
另外,根據(jù)一個(gè)緩沖區(qū)在實(shí)際運(yùn)算中扮演的功能不同,又設(shè)置了四種工作緩沖區(qū):
從空緩沖隊(duì)列中取出一塊作為收容輸入數(shù)據(jù)的工作緩沖區(qū)(hin)。沖滿數(shù)據(jù)后將緩沖區(qū)掛到輸入隊(duì)列隊(duì)尾
從輸入隊(duì)列中取得一塊沖滿輸入數(shù)據(jù)的緩沖區(qū)作為“提取輸入數(shù)據(jù)的工作緩沖區(qū)(sin)。緩沖區(qū)讀空后掛到空緩沖區(qū)隊(duì)列
從空緩沖隊(duì)列中取出一塊作為“收容輸出數(shù)據(jù)的工作緩沖區(qū)(hout)。數(shù)據(jù)沖滿后將緩沖區(qū)掛到輸出隊(duì)列隊(duì)尾
從輸出隊(duì)列中取得一塊沖滿輸出數(shù)據(jù)的緩沖區(qū)作為“提取輸出數(shù)據(jù)的工作緩沖區(qū)(sout)。緩沖區(qū)讀空后掛到空緩沖區(qū)隊(duì)列
7.7 緩沖區(qū)小結(jié)
總結(jié)
以上是生活随笔為你收集整理的18 操作系统第五章 设备管理 IO设备的基本概念和分类 IO控制器 IO控制方式 IO软件层次结构 IO核心子系统 假脱机技术 设备的分配与回收 缓冲区管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一类新算法研究智能飞行器航迹规划问题
- 下一篇: 单链表介绍及其实现