I/O管理主要通過對設備狀態(tài)跟蹤對設備存取數(shù)據(jù)铸屉、設備分配瘸味、及設備控制進行管理。
(一)I/O管理概述
1. I/O設備分類
印象中的I/O設備可能有挤庇,鍵鼠钞速、打印機,但它們只是I/O設備中的一部分嫡秕,在計算機中的磁盤渴语、光盤以及用于網(wǎng)絡連接的各類接口同樣也是屬于I/O設備。
2. I/O控制方式
外部設備輸入輸出的數(shù)據(jù)都需要存放在內(nèi)存上昆咽,再傳遞給用戶驾凶,而這個過程需要CPU的參與牙甫,根據(jù)CPU參與程度不同,可以分為4種控制方式:程序直接控制方式调违、中斷驅(qū)動方式窟哺、DMA方式和通道方式。
-
程序直接控制方式:計算機從外設讀取數(shù)據(jù)到寄存器技肩,每次只讀一個字的數(shù)據(jù)且轨,對于每個字節(jié),CPU都要進行循環(huán)檢查虚婿,直到確定該字已經(jīng)讀到I/O控制器的數(shù)據(jù)寄存器中旋奢。
中斷驅(qū)動方式:在程序直接控制方式中,CPU循環(huán)檢查數(shù)據(jù)是否讀入然痊,而中斷驅(qū)動方式中至朗,將CPU循環(huán)檢查工作交給I/O控制器完成,CPU只需給I/O控制發(fā)送讀命令剧浸,就可以去執(zhí)行其他指令爽丹,由I/O控制器自行將數(shù)據(jù)讀到數(shù)據(jù)寄存器中,完成讀取任務后給CPU發(fā)出中斷指令辛蚊。當CPU接收到中斷指令粤蝎,便保存當前正在運行程序的上下文,去執(zhí)行該中斷袋马,將I/O控制器中的數(shù)據(jù)送到寄存器初澎,并存入到主存。
-
DMA方式:中斷驅(qū)動方式每完成數(shù)據(jù)讀取工作虑凛,都要打斷CPU碑宴,由CPU將數(shù)據(jù)傳輸?shù)街鞔妗MA方式則優(yōu)化這一過程桑谍,直接由DMA控制器把數(shù)據(jù)傳輸?shù)街鞔嬷腥パ幽PU只在傳輸數(shù)據(jù)塊的開始和結(jié)束時才進行干預。
工作流程:
- 通道方式:DMA方式在工作流程上大幅度釋放CPU锣披,但是這種方式還需要CPU來控制傳輸?shù)臄?shù)據(jù)塊大小贞间、傳輸?shù)膬?nèi)存位置,為了將CPU從這些繁瑣的工作中釋放處理雹仿,有了通道方式疗锐。I/O通道是專門負責輸入輸出的處理機屹逛,當CPU要完成一組讀寫操作時,只需要給I/O通道發(fā)出一條I/O指令敞映,給出要執(zhí)行的通道程序的首地址和要訪問的I/O設備小染,通道接收到該指令后钮呀,執(zhí)行完I/O任務,也就是完成數(shù)據(jù)傳輸,才給CPU發(fā)送中斷請求凡蚜。
3. I/O層次結(jié)構(gòu)
數(shù)據(jù)從用戶到設備并不是一步完成,中間需要通過幾層結(jié)構(gòu)吭从,這樣不僅可以保持用戶應用獨立性朝蜘,也有方便屏蔽一些系統(tǒng)內(nèi)部細節(jié)。
設備控制器的工作流程:
- 用戶讀取某設備內(nèi)容 -> 使用操作系統(tǒng)提供的read命令接口 -> 解析read命令 (應用軟件和設備獨立軟件)
- 根據(jù)設備不同影锈,將read命令解析成不同的指令 (設備驅(qū)動)
- 命令解析完畢 -> 發(fā)出中斷 -> 設備控制器執(zhí)行read命令 (中斷處理程序)
- 硬件設備上的控制器根據(jù)上層命令操作硬件設備
(二)I/O核心子系統(tǒng)
由于常用設備繁多,需要為不同設備提供不同的控制方法蝉绷,這往往會增加I/O管理的工作量鸭廷,因此將一些公用操作或常用操作組成一個子系統(tǒng),這些操作有I/O調(diào)度熔吗、緩沖與高速緩存辆床、設備分配與回收、假脫機及設備保護和差錯控制等桅狠。
1. I/O調(diào)度
當有多個設備需要對計算機進行讀寫數(shù)據(jù)時讼载,需要為這些設備提供請求隊列實現(xiàn)調(diào)度,設備不同中跌,使用的調(diào)度實現(xiàn)的方式略有不同咨堤,常見的調(diào)度算法是的磁盤調(diào)度算法。
2. 緩沖區(qū)
I/O讀寫速度遠慢于CPU處理速度漩符,為了解決速度不匹配的問題一喘,采用緩存方法。
常見的緩存是磁盤高速緩存嗜暴,是磁盤與內(nèi)存之間的緩存區(qū)域凸克,它位于內(nèi)存,要么從內(nèi)存開辟一塊單獨的固定區(qū)域作為緩沖闷沥,要么是把沒有利用到的內(nèi)存作為一個緩沖池萎战。
設備緩存區(qū)的緩沖區(qū)也位于內(nèi)存區(qū)域,它的特點是:當緩存區(qū)的數(shù)據(jù)非空時舆逃,不能往緩沖區(qū)內(nèi)沖入數(shù)據(jù)蚂维,只能從緩沖區(qū)內(nèi)把數(shù)據(jù)傳出;當緩沖區(qū)為空時路狮,可以往緩沖區(qū)沖入數(shù)據(jù)鸟雏,但只能在緩存區(qū)充滿后,才能從緩沖區(qū)把數(shù)據(jù)傳出览祖。
根據(jù)緩沖區(qū)個數(shù)不同可以分為:單緩沖孝鹊、雙緩沖、循環(huán)緩沖和緩沖池展蒂。
2.1 單緩沖
單緩沖的緩沖區(qū)域位于設備與處理機之間又活,當設備與處理機交換數(shù)據(jù)時苔咪,先把被交換的數(shù)據(jù)寫入緩沖區(qū),然后需要數(shù)據(jù)的設備或者處理機再從緩沖區(qū)內(nèi)取數(shù)據(jù)柳骄,先輸入再輸出团赏。
輸入時間(T),處理數(shù)據(jù)時間(C)耐薯,傳送數(shù)據(jù)時間(M)
- 當T>C時舔清,單緩沖區(qū)處理每塊數(shù)據(jù)的時間為M+T;
- 當T<C時曲初,單緩沖區(qū)處理每塊數(shù)據(jù)的時間為M+C体谒;
2.2 雙緩沖
單緩沖方式存在等待方,為了提供讀取數(shù)據(jù)效率臼婆,采用雙緩沖抒痒,兩個緩沖區(qū)域可以并行工作,當其中一個被處理機讀取數(shù)據(jù)時颁褂,另一個由設備向緩沖區(qū)輸入數(shù)據(jù)故响。
輸入時間(T),處理數(shù)據(jù)時間(C)颁独,傳送數(shù)據(jù)時間(M)
緩沖區(qū)處理一塊數(shù)據(jù)的用時為:max(C+M, T)
2.3 循環(huán)緩沖
循環(huán)緩沖是將緩存區(qū)域劃分為大小相當?shù)亩鄠€緩沖區(qū)域塊彩届,每個緩沖區(qū)域塊都有指向下一個緩沖區(qū)塊的指針,此外還有in和out兩個指針分別用于數(shù)據(jù)輸入和輸出誓酒。
每次輸入時使用in指針向可以輸入數(shù)據(jù)的第一個空緩存區(qū)輸入惨缆,而要讀取數(shù)據(jù)時,使用out指針從第一個滿的緩沖區(qū)提取數(shù)據(jù)丰捷。
2.4 緩沖池
緩存池里有多個緩存區(qū)坯墨,這些緩存區(qū)根據(jù)它們的使用情況分為了三個隊列:空緩沖隊列、裝滿輸入數(shù)據(jù)的緩存隊列(輸入隊列)和裝滿輸出數(shù)據(jù)的緩沖隊列(輸出隊列)病往。
- 輸入數(shù)據(jù)時:空緩存隊列的隊首摘下空緩沖區(qū) -> 在hin區(qū)輸入數(shù)據(jù) -> 輸滿后掛到輸入隊列隊尾捣染;
- 計算進程輸入數(shù)據(jù)時:從輸入隊列提取緩沖區(qū)塊 -> 在sin區(qū)提取數(shù)據(jù) -> 數(shù)據(jù)用完后掛入空緩存隊列;
- 計算進程輸出數(shù)據(jù)時:空緩存隊列的隊首摘下空緩沖區(qū) -> 在hout區(qū)輸入數(shù)據(jù) -> 輸滿后掛到輸出隊列隊尾停巷;
- 輸出數(shù)據(jù)時:從輸出隊列提取數(shù)據(jù) -> 在sout區(qū)提取數(shù)據(jù) ->數(shù)據(jù)用完后掛入空緩存隊列耍攘;
3. 設備分配
CPU根據(jù)用戶的I/O請求分配設備,并且盡可能將設備忙碌畔勤,又要避免因設備分配不合理造成進程死鎖蕾各。因此使用記錄表記錄每個設備分配情況,并且制定相應的分配策略庆揪,保證設備能夠安全使用避免死鎖發(fā)生式曲。
3.1 設備分配的數(shù)據(jù)結(jié)構(gòu)
進程管理使用PCB管理進程,文件管理使用FCB管理文,同樣設備管理也需要建立類似的表管理設備吝羞,但是由于設備讀寫涉及到操作系統(tǒng)兰伤、控制器和通道,因此需要建立多個表钧排,依次有系統(tǒng)設備表(SDT)敦腔、設備控制表(DCT)、控制器控制表(COCT)和通道控制表(CHCT)恨溜。
- SDT:整個系統(tǒng)只有一張符衔,用于記錄系統(tǒng)中全部設備的情況,是系統(tǒng)范圍的數(shù)據(jù)結(jié)構(gòu)糟袁;
- DCT:每個設備一張判族,記錄本設備的情況;
- COCT:每個控制器一張系吭,記錄本控制器的情況五嫂;
- CHCT:每個通道一張颗品,記錄通道情況肯尺。
它們之間通過如下順序依次進行訪問:
SDT -> DCT -> COCT -> CHCT
設備分配總結(jié)起來就是:設備分配過三關:設備可用、控制器可用和通道可用
3.2 設備分配的策略
設備分配方式有靜態(tài)分配和動態(tài)分配兩種躯枢。
靜態(tài)分配:主要用于獨占設備的分配则吟,如打印機。由系統(tǒng)一次性分配該作業(yè)需要的全部設備锄蹂、控制器等氓仲,一旦分配,將一直被該作業(yè)占用得糜,直到作業(yè)完成敬扛。
動態(tài)分配:在進程執(zhí)行過程中根據(jù)執(zhí)行需要進行。
3.3 設備分配的安全性
設備分配的安全性指的是是否會發(fā)生死鎖朝抖。
安全分配方式:當進程發(fā)出I/O請求后進入阻塞狀態(tài)啥箭,直到完成才被喚醒。這種工作方式是CPU與I/O設備串行工作治宣,預防了死鎖的發(fā)生急侥。
不安全分配方式:進程在執(zhí)行過程中根據(jù)需求發(fā)出I/O請求。也意味著一個進程可以同時操作多個設備侮邀,提高工作效率坏怪,但容易造成死鎖。
3.4 邏輯設備名到物理設備名的映射
用戶使用設備時通過使用邏輯設備名來調(diào)用物理設備绊茧,因此建立一張表來查找從邏輯設備名到物理設備名的映射——邏輯設備表(LUT)铝宵。
4. 虛擬設備技術(shù)
除了使用緩存區(qū)來解決CPU與I/O設備速度不匹配問題外,可以使用虛擬設備技術(shù)(SPOOLing)华畏,主要是利用外圍控制機捉超,將低速I/O設備上的數(shù)據(jù)傳送到高速磁盤上胧卤。常用于共享打印機。