操作系統(tǒng)(五)——I/O管理

image.png

I/O管理主要通過對設備狀態(tài)跟蹤對設備存取數(shù)據(jù)铸屉、設備分配瘸味、及設備控制進行管理。

(一)I/O管理概述

1. I/O設備分類

印象中的I/O設備可能有挤庇,鍵鼠钞速、打印機,但它們只是I/O設備中的一部分嫡秕,在計算機中的磁盤渴语、光盤以及用于網(wǎng)絡連接的各類接口同樣也是屬于I/O設備。


image.png

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ù)寄存器中旋奢。


    image.png
  • 中斷驅(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ù)送到寄存器初澎,并存入到主存。

image.png
  • DMA方式:中斷驅(qū)動方式每完成數(shù)據(jù)讀取工作虑凛,都要打斷CPU碑宴,由CPU將數(shù)據(jù)傳輸?shù)街鞔妗MA方式則優(yōu)化這一過程桑谍,直接由DMA控制器把數(shù)據(jù)傳輸?shù)街鞔嬷腥パ幽PU只在傳輸數(shù)據(jù)塊的開始和結(jié)束時才進行干預。


    image.png

工作流程:


image.png
  • 通道方式: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é)。


image.png

設備控制器的工作流程:

  1. 用戶讀取某設備內(nèi)容 -> 使用操作系統(tǒng)提供的read命令接口 -> 解析read命令 (應用軟件和設備獨立軟件)
  2. 根據(jù)設備不同影锈,將read命令解析成不同的指令 (設備驅(qū)動)
  3. 命令解析完畢 -> 發(fā)出中斷 -> 設備控制器執(zhí)行read命令 (中斷處理程序)
  4. 硬件設備上的控制器根據(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)度算法。

image.png

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ù)柳骄,先輸入再輸出团赏。


image.png

輸入時間(T),處理數(shù)據(jù)時間(C)耐薯,傳送數(shù)據(jù)時間(M)

  1. 當T>C時舔清,單緩沖區(qū)處理每塊數(shù)據(jù)的時間為M+T;
  2. 當T<C時曲初,單緩沖區(qū)處理每塊數(shù)據(jù)的時間為M+C体谒;

2.2 雙緩沖

單緩沖方式存在等待方,為了提供讀取數(shù)據(jù)效率臼婆,采用雙緩沖抒痒,兩個緩沖區(qū)域可以并行工作,當其中一個被處理機讀取數(shù)據(jù)時颁褂,另一個由設備向緩沖區(qū)輸入數(shù)據(jù)故响。

image.png

輸入時間(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ù)丰捷。

image.png

2.4 緩沖池

緩存池里有多個緩存區(qū)坯墨,這些緩存區(qū)根據(jù)它們的使用情況分為了三個隊列:空緩沖隊列裝滿輸入數(shù)據(jù)的緩存隊列(輸入隊列)裝滿輸出數(shù)據(jù)的緩沖隊列(輸出隊列)病往。

image.png
  1. 輸入數(shù)據(jù)時:空緩存隊列的隊首摘下空緩沖區(qū) -> 在hin區(qū)輸入數(shù)據(jù) -> 輸滿后掛到輸入隊列隊尾捣染;
  2. 計算進程輸入數(shù)據(jù)時:從輸入隊列提取緩沖區(qū)塊 -> 在sin區(qū)提取數(shù)據(jù) -> 數(shù)據(jù)用完后掛入空緩存隊列
  3. 計算進程輸出數(shù)據(jù)時:空緩存隊列的隊首摘下空緩沖區(qū) -> 在hout區(qū)輸入數(shù)據(jù) -> 輸滿后掛到輸出隊列隊尾停巷;
  4. 輸出數(shù)據(jù)時:從輸出隊列提取數(shù)據(jù) -> 在sout區(qū)提取數(shù)據(jù) ->數(shù)據(jù)用完后掛入空緩存隊列耍攘;
image.png
image.png

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)铝宵。

image.png

4. 虛擬設備技術(shù)

除了使用緩存區(qū)來解決CPU與I/O設備速度不匹配問題外,可以使用虛擬設備技術(shù)(SPOOLing)华畏,主要是利用外圍控制機捉超,將低速I/O設備上的數(shù)據(jù)傳送到高速磁盤上胧卤。常用于共享打印機。

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拼岳,一起剝皮案震驚了整個濱河市枝誊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌惜纸,老刑警劉巖叶撒,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異耐版,居然都是意外死亡祠够,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門粪牲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來古瓤,“玉大人,你說我怎么就攤上這事腺阳÷渚” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵亭引,是天一觀的道長绎速。 經(jīng)常有香客問我,道長焙蚓,這世上最難降的妖魔是什么纹冤? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮购公,結(jié)果婚禮上萌京,老公的妹妹穿的比我還像新娘。我一直安慰自己宏浩,他們只是感情好知残,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绘闷,像睡著了一般橡庞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上印蔗,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天扒最,我揣著相機與錄音,去河邊找鬼华嘹。 笑死吧趣,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播强挫,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼岔霸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了俯渤?” 一聲冷哼從身側(cè)響起呆细,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎八匠,沒想到半個月后絮爷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡梨树,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年坑夯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抡四。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡柜蜈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出指巡,到底是詐尸還是另有隱情淑履,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布厌处,位于F島的核電站鳖谈,受9級特大地震影響岁疼,放射性物質(zhì)發(fā)生泄漏阔涉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一捷绒、第九天 我趴在偏房一處隱蔽的房頂上張望瑰排。 院中可真熱鬧,春花似錦暖侨、人聲如沸椭住。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽京郑。三九已至,卻和暖如春葫掉,著一層夾襖步出監(jiān)牢的瞬間些举,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工俭厚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留户魏,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像叼丑,于是被迫代替她去往敵國和親关翎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容