【操作系统总结】设备管理
管理所有外圍設(shè)備,包括完成用戶IO請求,為用戶進程分配IO設(shè)備,提高IO設(shè)備利用率,提高IO速度,方便IO使用
1. 什么是外部設(shè)備:
有一類設(shè)備是作為計算機系統(tǒng)與外界交互的工具使用的,它負責(zé)計算機與外部的輸入輸出(I/O工作)。我們稱這類設(shè)備為外部設(shè)備,簡稱外設(shè)。
2. 設(shè)備管理的目標:提高設(shè)備的利用率
3. 什么是I/O系統(tǒng):計算機中負責(zé)管理I/O的機構(gòu)(是硬件和軟件的組合)稱為I/O系統(tǒng)
4. I/O系統(tǒng)的結(jié)構(gòu):???
1)單總線結(jié)構(gòu)
2)多總線結(jié)構(gòu)
3)具有通道系統(tǒng)的I/O系統(tǒng)
5. 設(shè)備控制器:設(shè)備控制器處于CPU與I/O之間,接收來自CPU的命令,并控制I/O設(shè)備工作。設(shè)備控制器應(yīng)具備以下功能:①接收和識別來自CPU的各種指令;②實現(xiàn)CPU與設(shè)備控制器、設(shè)備控制器與設(shè)備之間的數(shù)據(jù)交換;③記錄設(shè)備的狀態(tài)供CPU查詢;④識別所控制的每個設(shè)備的地址。
大多數(shù)設(shè)備控制器由設(shè)備控制器與處理器的接口、設(shè)備控制器與設(shè)備的接口及I/O邏輯3部分組成,如下圖所示:
6. I/O系統(tǒng)的控制方式:
(1)程序控制I/O(輪詢):
由于CPU速度遠遠快于I/O設(shè)備,因此CPU需要不斷地測試I/O設(shè)備,這種控制方式又稱為輪詢或忙等。以數(shù)據(jù)輸入為例,當(dāng)用戶進程需要輸入數(shù)據(jù)時,由CPU向設(shè)備控制器發(fā)出一條I/O指令啟動設(shè)備進行輸入。當(dāng)設(shè)備輸入數(shù)據(jù)期間,處理器通過循環(huán)執(zhí)行測試指令不斷地檢測I/O設(shè)備狀態(tài)寄存器的值,當(dāng)狀態(tài)寄存器的值顯示設(shè)備輸入完成時,處理器將寄存器中的數(shù)據(jù)讀取出來并送入內(nèi)存指定單元,然后再啟動設(shè)備輸出并等待輸出操作完成。
- 優(yōu)點:簡單
- 缺點:CPU利用率低。CPU與外設(shè)串行工作,CPU必須等待外設(shè)處理完數(shù)據(jù)才能繼續(xù)執(zhí)行,在此期間CPU一直查詢外設(shè)是否準備好,直到外設(shè)準備好。由于CPU速度遠遠快于I/O設(shè)備,致使絕大部分時間都在測試I/O設(shè)備是否已經(jīng)完成數(shù)據(jù)傳輸,從而造成CPU的極大浪費。
(2)中斷驅(qū)動I/O(中斷):
以數(shù)據(jù)輸入為例,當(dāng)用戶進程需要輸入數(shù)據(jù)時,由處理器向設(shè)備控制器發(fā)出一條I/O指令啟動設(shè)備進行輸入。在輸入數(shù)據(jù)的同時,CPU可以做其他工作。當(dāng)輸入完成時,設(shè)備管理器向CPU發(fā)出一個中斷信號,CPU接收到中斷信號以后,轉(zhuǎn)去執(zhí)行設(shè)備中斷處理程序。設(shè)備中斷處理程序?qū)⑤斎霐?shù)據(jù)寄存器中的數(shù)據(jù)傳送到內(nèi)存的指定單元中,供要求輸入的進程使用,然后再啟動設(shè)備去讀下一個數(shù)據(jù)。
- 優(yōu)點:有了中斷硬件的支持后,CPU與I/O設(shè)備之間可以并行工作,CPU只需要收到中斷后處理即可,大大提高了CPU利用率。
- 缺點:數(shù)據(jù)仍然需要通過CPU進行傳輸,由于CPU每次處理的數(shù)據(jù)量較小,因此這種方式只適合數(shù)據(jù)傳輸率低的設(shè)備。
I/O完成時發(fā)出的中斷處理程序的處理過程是什么?
- 1、喚醒被阻塞的進程;
- 2、保護被中斷的進程的CPU環(huán)境;
- 3、轉(zhuǎn)入設(shè)備處理程序;
- 4、中斷處理,執(zhí)行中斷處理程序;
- 5、恢復(fù)被中斷進程的現(xiàn)場。
(3)直接存儲訪問(DMA)
- DMA控制方式的思想是在外設(shè)和內(nèi)存之間開辟直接的數(shù)據(jù)交換通路。在DMA控制方式中,設(shè)備控制器具有更強的功能,在其控制下,設(shè)備和內(nèi)存之間可以成批地進行數(shù)據(jù)交換,而不用CPU干預(yù)。這樣既減輕了CPU的負擔(dān),也是I/O數(shù)據(jù)傳輸速度大大提高。這種方式一般用于塊設(shè)備的數(shù)據(jù)傳輸。
- 以數(shù)據(jù)輸入為例,當(dāng)用戶進程需要輸入數(shù)據(jù)時,CPU將準備存放數(shù)據(jù)的內(nèi)存起始地址以及要傳送的字節(jié)數(shù)分別送入DMA控制器中的內(nèi)存地址寄存器和傳送字節(jié)計數(shù)器中,并啟動設(shè)備開始進行輸入。在輸入數(shù)據(jù)的同時,CPU可以去做其他事情,輸入設(shè)備不斷地挪用CPU工作周期,將數(shù)據(jù)寄存器中的數(shù)據(jù)源源不斷地寫入內(nèi)存,直到要求傳送的數(shù)據(jù)全部傳輸完畢。DMA控制器在傳輸完畢時向CPU發(fā)送一個中斷信號,CPU收到中斷信號后轉(zhuǎn)中斷處理程序,中斷結(jié)束后返回被中斷程序。
- DMA控制方式的特點為:數(shù)據(jù)傳輸?shù)幕締挝皇?strong>數(shù)據(jù)塊,而且數(shù)據(jù)是單向傳輸,從設(shè)備到內(nèi)存或者相反。優(yōu)點:設(shè)備和CPU可以并行工作,同時設(shè)備與內(nèi)存的數(shù)據(jù)交換速度更快,并且不需要CPU干預(yù)。
- 優(yōu)點:解決了I/O操作的獨立性和各部件工作的并行性。不僅能實現(xiàn)CPU與通道的并行操作,而且通道與通道之間也能實現(xiàn)并行操作,各個通道上的外設(shè)也能實現(xiàn)并行操作,從而提高了整個系統(tǒng)效率。
- 缺點:需要更多硬件(通道處理器),成本較高,常用于大型數(shù)據(jù)交互的場合。
- DMA控制方式與中斷控制方式的主要區(qū)別是:
- (1)中斷控制方式在每個數(shù)據(jù)傳送完畢后中斷CPU,而DMA控制方式則是在所有要求傳送的一批數(shù)據(jù)傳送完畢后中斷CPU;
- (2)中斷控制方式的數(shù)據(jù)傳送是在中斷處理時由CPU控制完成的,而DMA控制方式則是在DMA控制器的控制下完成的。
(4)通道控制方式I/O
- 與DMA類似,也是一種以內(nèi)存為中心,實現(xiàn)設(shè)備與內(nèi)存直接數(shù)據(jù)交換的控制方式。與DMA相比,通道需要的CPU干預(yù)更少,即把對一個數(shù)據(jù)塊的讀寫為單位的干預(yù)減少為對一組數(shù)據(jù)塊讀寫及有關(guān)的控制和管理為單位的干預(yù),而且可以做到一個通道控制多臺設(shè)備。
- 通道本質(zhì)上是一個簡單的處理器,它獨立于CPU,有運算和邏輯,有自己的指令系統(tǒng),也在程序控制下工作,專門負責(zé)輸入、輸出控制,具有執(zhí)行I/O指令的能力,并通過執(zhí)行通道I/O程序來控制I/O操作。通道的指令系統(tǒng)比較簡單,一般只有數(shù)據(jù)傳送指令、設(shè)備控制指令等。
- 在通道控制方式中,CPU只需要發(fā)出啟動指令,指出要求通道執(zhí)行的操作和使用的I/O設(shè)備,該指令就可以啟動通道并使該通道從內(nèi)存中調(diào)出相應(yīng)的通道程序執(zhí)行。以數(shù)據(jù)輸入為例,當(dāng)用戶進程需要輸入數(shù)據(jù)時,CPU發(fā)出啟動指令指明要執(zhí)行的I/O操作、所使用的設(shè)備和通道。當(dāng)對應(yīng)通道接收到CPU發(fā)來的啟動指令后,把存放在內(nèi)存中的通道程序讀出,并執(zhí)行通道程序,控制設(shè)備將數(shù)據(jù)傳送到內(nèi)存中指定的區(qū)域。在設(shè)備進行輸入的同時,CPU可以去做其他事情。當(dāng)數(shù)據(jù)傳送結(jié)束后時,設(shè)備控制器向CPU發(fā)送一個中斷請求,CPU收到中斷信號后轉(zhuǎn)中斷處理程序,中斷結(jié)束后返回被中斷程序。
- 通道控制方式與DMA控制方式的區(qū)別:首先,DMA控制方式中需要CPU來控制所傳輸數(shù)據(jù)塊的大小,傳輸?shù)膬?nèi)存,而通道控制方式中這些信息都是由通道來控制管理的。其次,一個DMA控制器對應(yīng)一臺設(shè)備與內(nèi)存?zhèn)鬟f數(shù)據(jù),而一個通道可以控制多臺設(shè)備與內(nèi)存的數(shù)據(jù)交換。
- I/O通道與一般處理器的區(qū)別:I/O通道的指令類型單一,其所能執(zhí)行的命令主要局限于與I/O操作有關(guān)的指令;通道沒有自己的內(nèi)存,通道所執(zhí)行的通道程序放在主機的內(nèi)存中,也就是說通道是與CPU共享內(nèi)存的。
- 通道分為:
- 字節(jié)多路通道:可以獲得較好的通道利用率,適合低速設(shè)備,傳輸單位為字節(jié)。
- 數(shù)組選擇通道:可以獲得較好的數(shù)據(jù)傳輸率,適合高速設(shè)備,一次性傳輸一組數(shù)據(jù)。
- 數(shù)組多路通道:既具有很高的數(shù)據(jù)傳輸率,有能獲得令人滿意的通道利用率。
7. 緩沖技術(shù):緩沖區(qū)一種交換數(shù)據(jù)的區(qū)域。緩沖區(qū)的引入是為了緩和CPU與設(shè)備速度不匹配的矛盾,提高了設(shè)備和CPU的并行操作程度,提高了系統(tǒng)吞吐量和設(shè)備利用率。
8.緩沖分類:
- 單緩沖:當(dāng)用戶進程發(fā)出一個I/O請求時,操作系統(tǒng)便在內(nèi)存中為它分配一個緩沖區(qū)。設(shè)備與處理器對緩沖區(qū)的操作是串行的。
- 雙緩沖:可以提高處理器與設(shè)備的并行操作程度。當(dāng)用戶進程發(fā)出一個I/O請求時,操作系統(tǒng)便在內(nèi)存中為它分配兩個個緩沖區(qū)。數(shù)據(jù)先放入第一個緩沖區(qū)進行處理,再來的數(shù)據(jù)放入第二個緩沖區(qū),當(dāng)?shù)谝粋€緩沖區(qū)中的數(shù)據(jù)處理完后,若第二個緩沖區(qū)已經(jīng)裝滿,則處理器又可以處理第二個緩沖區(qū)的數(shù)據(jù),而輸入設(shè)備又可以裝填第一個緩沖區(qū)。
- 循環(huán)緩沖:為了解決設(shè)備輸入/輸出速度與處理器處理數(shù)據(jù)速度不匹配的情況。循環(huán)緩沖包含多個大小相等的緩沖區(qū),每個緩沖區(qū)中有一個鏈接指針指向下一個緩沖區(qū),最后一個緩沖區(qū)的指針指向第一個緩沖區(qū),這樣多個緩沖區(qū)構(gòu)成了一個環(huán)形。循環(huán)緩沖用于輸入輸出時,還需要有兩個指針in和out。對于輸入而言,首先要從設(shè)備接收數(shù)據(jù)到緩沖區(qū)中,in指針指向可以輸入數(shù)據(jù)的第一個空緩沖區(qū);當(dāng)用戶進程需要數(shù)據(jù)時,從循環(huán)緩沖中取出一個裝滿數(shù)據(jù)的緩沖區(qū),提取數(shù)據(jù),out指針指向可以提取數(shù)據(jù)的第一個滿緩沖區(qū),顯然,對輸出而言正好相反,進程將處理過的需要輸出的數(shù)據(jù)送到空緩沖區(qū)中,而當(dāng)設(shè)備空閑時,從滿緩沖區(qū)中取出數(shù)據(jù)由設(shè)備輸出。
9. 高速緩存與緩存區(qū)的區(qū)別:
- 兩者存放的數(shù)據(jù)不同。高速緩存存放的是低速設(shè)備上的某些數(shù)據(jù)的備份;而緩沖區(qū)中放的則是低速設(shè)備傳遞給高速設(shè)備的數(shù)據(jù),在低速設(shè)備中不一定有備份。
- 兩者的目的不同。引入高速緩存的目的是為了存放低速設(shè)備上經(jīng)常要被訪問到的數(shù)據(jù)的備份;而緩沖區(qū)是為了緩和高速設(shè)備和低速設(shè)備間速度不匹配的矛盾。高速設(shè)備每次都會通過緩沖區(qū)與低速設(shè)備通信,不會直接訪問低速設(shè)備。
10.?SPOOLing技術(shù)(假脫機技術(shù))
-
通過共享設(shè)備來虛擬獨占設(shè)備,將獨占設(shè)備改造成共享設(shè)備,從而提高了設(shè)備利用率和系統(tǒng)的效率,該技術(shù)為假脫機(SPOOLing)技術(shù)。是低速輸入輸出設(shè)備與主機交換的一種技術(shù)。
-
其核心思想是以聯(lián)機的方式得到脫機的效果,低速設(shè)備經(jīng)通道和設(shè)在主機內(nèi)存的緩沖存儲器與高速設(shè)備相連,該高速設(shè)備通常是輔存。為了存放從低速設(shè)備上輸入的信息,在內(nèi)存中形成緩沖區(qū),在高速設(shè)備上形成輸入輸出井,傳遞時信息從低速設(shè)備傳入緩沖區(qū),再傳到高速設(shè)備的輸入井,再從高速設(shè)備的輸出井傳到緩沖區(qū),再傳到低速設(shè)備。
- SPOOLing系統(tǒng)的組成
- 輸入輸出井;
- 輸入緩沖區(qū)和輸出緩沖區(qū);
- 輸入進程和輸出進程;
- SPOOLing實例:將一臺獨享打印機改造成可供多個用戶共享打印是SPOOLing技術(shù)的典型應(yīng)用,具體做法為:系統(tǒng)對于用戶的打印輸出,并不真正把打印機分配給該用戶進程,而是先在輸出井中申請一個空閑盤塊區(qū),并將要打印的數(shù)據(jù)送入其中;然后為用戶申請并填寫請求打印表,將該表掛到請求打印隊列上。若打印機空閑,輸出程序從請求打印隊首取表,將要打印的數(shù)據(jù)從輸出井傳送到內(nèi)存緩沖區(qū),再進行打印,直到打印隊列為空。
- SPOOLing技術(shù)特點
- 提高了I/O速度;
- 設(shè)備并沒有分配給任何進程;
- 實現(xiàn)了虛擬設(shè)備功能;
- SPOOLing除了是一種速度匹配技術(shù)外,也是一種虛擬設(shè)備技術(shù)。
?
總結(jié)
以上是生活随笔為你收集整理的【操作系统总结】设备管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pytorch详细教程——10.Flat
- 下一篇: 编码的故事