I/O核心子系統(tǒng)

對設(shè)備進行控制的方法組成了操作系統(tǒng)內(nèi)核的I/O子系統(tǒng),提供的服務(wù)有I/O調(diào)度某宪,緩沖與高速緩存,設(shè)備分配與回收锐朴,假脫機兴喂,設(shè)備保護,差錯處理焚志。

  1. I/O調(diào)度
    確定一個好的順序來執(zhí)行這些I/O請求衣迷,來改善系統(tǒng)整體性能,進程之間公平的共享設(shè)備訪問酱酬,減少I/O完成所需要的平均時間壶谒。
    為每個設(shè)備維護一個請求隊列來實現(xiàn)調(diào)度,當(dāng)一個應(yīng)用程序執(zhí)行阻塞I/O系統(tǒng)調(diào)用時候膳沽,請求加到相應(yīng)設(shè)備的隊列上汗菜。I/O調(diào)度會重新安排隊列順序以改善系統(tǒng)總體效率和應(yīng)用程序的平均響應(yīng)時間。
    磁盤調(diào)度算法其實就是I/O調(diào)度的一種挑社。
  2. 高速緩存和緩沖區(qū)
  • 磁盤高速緩存
    使用磁盤高速緩存技術(shù)來提高磁盤的I/O速度陨界,正在運行的進程的指令既存儲在磁盤上,也存儲在物理內(nèi)存中痛阻,也被復(fù)制到CPU的二級和一級高速緩存中菌瘪。
    磁盤高速緩存技術(shù)是指利用內(nèi)存中的存儲空間來暫存從磁盤中讀出的一系列盤塊中的信息。磁盤高速緩存在邏輯上屬于磁盤录平,物理上是駐留在內(nèi)存中的盤塊麻车。
    高速緩存分為兩種形式缀皱,一是內(nèi)存中開辟單獨的存儲空間作為磁盤高速緩存斗这, 大小固定。另一種是未利用的內(nèi)存空間作為緩沖池啤斗,供請求分頁系統(tǒng)和磁盤I/O時共享表箭。
  • 緩沖區(qū)
    CPU和I/O設(shè)備間速度不匹配的矛盾
    減少對CPU的中斷頻率
    解決基本數(shù)據(jù)單元大小不匹配的問題
    提高CPU和I/O設(shè)備之間的并行性
    緩沖區(qū),內(nèi)存區(qū)域钮莲,當(dāng)緩沖區(qū)數(shù)據(jù)非空的時候免钻,不能往緩沖區(qū)沖入數(shù)據(jù)彼水,只能從緩沖區(qū)把數(shù)據(jù)傳出。緩沖區(qū)為空的時候极舔,可以往緩沖區(qū)沖入數(shù)據(jù)凤覆,但是必須把緩沖區(qū)充滿后,才能從緩沖區(qū)把數(shù)據(jù)傳出拆魏。
    • 單緩沖
      設(shè)備和處理機之間設(shè)置一個緩沖區(qū)盯桦,設(shè)備和處理機交換數(shù)據(jù)的時候,先把交換數(shù)據(jù)寫入緩沖區(qū)渤刃,然后需要數(shù)據(jù)的設(shè)備或者處理機從緩沖區(qū)拿走數(shù)據(jù)拥峦。
      數(shù)據(jù)沖入緩沖區(qū)的時間為T,操作系統(tǒng)將緩沖區(qū)數(shù)據(jù)傳入用戶區(qū)時間為M卖子,CPU處理時間為C略号。
      每塊數(shù)據(jù)塊的處理時間為max(C,T)+M,根據(jù)圖來進行回憶分析洋闽。
    • 雙緩沖
      CPU在M時間是空閑的玄柠,所以在緩沖區(qū)1充滿后,開始沖緩沖區(qū)2诫舅,同時CPU將緩沖區(qū)1的數(shù)據(jù)取出到用戶進程處理随闪,然后緩沖區(qū)1數(shù)據(jù)處理完后,緩沖區(qū)2如果滿的話骚勘,繼續(xù)處理铐伴,然后填緩沖區(qū)1。如果沒滿俏讹,一直到裝滿再讓處理機從緩沖區(qū)2取數(shù)據(jù)当宴。
      處理一塊數(shù)據(jù)的用時,分為T>C+M或者T<C+M的情況泽疆,然后根據(jù)圖形和原理進行分析户矢,Max(C+M,T)
      T>C+M使塊設(shè)備連續(xù)輸入,T<C+M使CPU不必等待設(shè)備輸入殉疼,CPU一直工作梯浪。
      對于字符設(shè)備,行輸入方式瓢娜,雙緩沖可以在輸入第一行之后挂洛,CPU執(zhí)行命令的時候繼續(xù)輸入下一行的數(shù)據(jù)。
      兩臺機器之間通信如果只配置了單緩沖眠砾,那么同時只能實現(xiàn)單方向的數(shù)據(jù)傳輸虏劲,實現(xiàn)雙向數(shù)據(jù)傳輸,則在兩臺機器上都設(shè)置兩個緩沖區(qū),一個用作發(fā)送緩沖區(qū)柒巫,另一個用作接收緩沖區(qū)励堡。
    • 循環(huán)緩沖區(qū)
      包含多個大小相等的緩沖區(qū),每個緩沖區(qū)中有一個鏈接指針指向下一個緩沖區(qū)堡掏,最后一個緩沖區(qū)指向第一個緩沖區(qū)应结,多個緩沖區(qū)構(gòu)成一個環(huán)形。
      in指針指向可以輸入數(shù)據(jù)的第一個空緩沖區(qū)泉唁,out指針指向可以提取數(shù)據(jù)的第一個滿緩沖區(qū)摊趾。
    • 緩沖池
      由多個系統(tǒng)公用的緩沖區(qū)組成,緩沖區(qū)形成三個隊列:空緩沖隊列游两,裝滿輸入數(shù)據(jù)的緩沖隊列砾层,裝滿輸出數(shù)據(jù)的緩沖隊列。還有四種緩沖區(qū)贱案,用于收容輸入數(shù)據(jù)的工作緩沖區(qū)肛炮,用于提取輸入數(shù)據(jù)的工作緩沖區(qū),用于收容輸出數(shù)據(jù)的工作緩沖區(qū)宝踪,用于提取輸出數(shù)據(jù)的工作緩沖區(qū)侨糟。
      工作過程:當(dāng)輸入進程需要輸入數(shù)據(jù)的時候,從空緩沖隊列的隊首摘下一個空緩沖區(qū)瘩燥,作為收容輸入工作緩沖區(qū)秕重,把輸入數(shù)據(jù)輸入其中,裝滿后把它掛到輸入隊列隊尾厉膀,計算進程需要輸入數(shù)據(jù)的時候溶耘,從輸入隊列取得一個緩沖區(qū)作為提取輸入工作緩沖區(qū),數(shù)據(jù)用完之后將它掛到空緩沖隊列尾服鹅。
  • 高速緩存和緩沖區(qū)
    高速緩存是可以保存數(shù)據(jù)拷貝的高速存儲器凳兵,訪問高速緩存比訪問原始數(shù)據(jù)更加有效,速度更快企软。而緩沖區(qū)是高速設(shè)備和低速設(shè)備的通信都需要緩沖區(qū)庐扫,高速設(shè)備不會直接訪問低速設(shè)備。
  1. 設(shè)備分配與回收
  • 設(shè)備
    • 獨占式設(shè)備
    • 分時式共享使用設(shè)備仗哨,比如對磁盤設(shè)備的I/O操作形庭。
    • 以SPOOLing方式使用外部設(shè)備,對I/O操作進行批處理厌漂,空間換時間的技術(shù)萨醒,虛擬設(shè)備。
  • 設(shè)備分配的數(shù)據(jù)結(jié)構(gòu)
    設(shè)備控制表DCT桩卵,控制器控制表COCT验靡,通道控制表CHCT,系統(tǒng)設(shè)備表SDT雏节。
    設(shè)備控制表表征一個設(shè)備胜嗓,控制表表項就是各個設(shè)備的各個屬性。
    每個DCT都需要一個表項來表示控制器钩乍,需要一個指向控制器控制表的指針辞州,所以DCT和COCT有一一對應(yīng)的關(guān)系。
    現(xiàn)代操作系統(tǒng)的I/O控制采用的都是通道控制寥粹,設(shè)備控制器控制設(shè)備與內(nèi)存交換數(shù)據(jù)变过,設(shè)備控制器又要請求通道為它服務(wù),每個COCT必定有一個表項存放指向相應(yīng)的通道控制表的指針涝涤,而一個通道可以為多個設(shè)備控制器服務(wù)媚狰,因此通道控制表有一個指針,指向一個表阔拳,這個表表達(dá)的是CHCT提供服務(wù)的那幾個設(shè)備控制器崭孤。
    系統(tǒng)設(shè)備表SDT,記錄已經(jīng)鏈接到系統(tǒng)中所有物理設(shè)備的情況糊肠,每個物理設(shè)備占一個表目辨宠。
    合理的分配原則需要考慮,I/O設(shè)備的固有屬性货裹,I/O設(shè)備的分配算法嗤形,I/O設(shè)備分配的安全性,以及I/O設(shè)備的獨立性弧圆。
  1. 設(shè)備分配的策略
    分配的總原則赋兵,避免造成進程死鎖,將用戶程序和具體設(shè)備隔離開
    分配的方式搔预,靜態(tài)分配毡惜,動態(tài)分配。
  • 靜態(tài)分配
    主要用于對獨占設(shè)備的分配斯撮,一次性分配作業(yè)要求的所有設(shè)備经伙,控制器。靜態(tài)分配不會出現(xiàn)死鎖勿锅,但是設(shè)備的使用效率低帕膜。
  • 動態(tài)分配
    進程執(zhí)行過程中根據(jù)執(zhí)行需要進行,進程需要設(shè)備時溢十,通過系統(tǒng)調(diào)用命令向系統(tǒng)提出設(shè)備請求垮刹,由系統(tǒng)按照事先規(guī)定的策略給進程分配所需要的設(shè)備,I/O控制器张弛,用完之后立即釋放荒典,有可能造成進程死鎖酪劫。
  • 設(shè)備分配算法
    有先請求先分配,優(yōu)先級高者優(yōu)先寺董。
    共享設(shè)備可以被多個進程所共享覆糟,一般采用動態(tài)分配方式,但是每個I/O傳輸?shù)膯挝粫r間內(nèi)只被一個進程所占有遮咖。
  1. 設(shè)備分配的安全性
    指設(shè)備分配中應(yīng)該防止發(fā)生進程死鎖
  • 安全分配方式
    進程發(fā)出I/O請求后便進入阻塞狀態(tài)滩字,直到I/O操作完成時才被喚醒,進程獲得某種設(shè)備后便阻塞御吞,不能再請求任何資源麦箍,在阻塞時也不保持任何資源,缺點是CPU和I/O設(shè)備時串行工作的陶珠。
  • 不安全分配方式
    進程在I/O請求后繼續(xù)運行挟裂,需要時候發(fā)出第二個,第三個請求揍诽,當(dāng)進程所請求設(shè)備被其他進程占用時候话瞧,才進入阻塞狀態(tài),優(yōu)點是一個進程操作多個設(shè)備寝姿,進程推進迅速交排,缺點是可能死鎖。
  1. 邏輯設(shè)備名到物理設(shè)備名的映射
    設(shè)備獨立性是指應(yīng)用程序獨立于具體使用的物理設(shè)備
    邏輯設(shè)備表饵筑,用于將邏輯設(shè)備名映射為物理設(shè)備名埃篓,LUT表項包括邏輯設(shè)備名,物理設(shè)備名和設(shè)備驅(qū)動程序入口地址根资。系統(tǒng)通過查找LUT來尋找相應(yīng)的物理設(shè)備和驅(qū)動程序架专。
  • 整個系統(tǒng)設(shè)置一張LUT,不允許有相同的邏輯設(shè)備名玄帕,適用于單用戶系統(tǒng)中
  • 每個用戶設(shè)置一張LUT部脚,用戶登陸的時候,系統(tǒng)為用戶建立一個進程裤纹,同時建立一張LUT委刘,將該表放入進程的PCB中。
  1. SPOOLing技術(shù)鹰椒,假脫機技術(shù)
    脫機輸入/輸出技術(shù)锡移,利用專門的外圍控制機,將低速I/O設(shè)備上的數(shù)據(jù)傳送到高速磁盤中漆际,或者相反淆珊,SPOOLing是外部設(shè)備同時聯(lián)機操作,假脫機輸入/輸出操作奸汇,系統(tǒng)中采用的一項將獨占設(shè)備改造成共享設(shè)備的技術(shù)施符。
  • 輸入井和輸出井
    輸入井模擬脫機輸入時的磁盤往声,收容I/O設(shè)備輸入的數(shù)據(jù),輸出井模擬輸出時的磁盤戳吝,用于收容用戶程序的輸出數(shù)據(jù)浩销。
  • 輸入緩沖區(qū)和輸出緩沖區(qū)
    內(nèi)存中,輸入緩沖區(qū)用于暫存由輸入設(shè)備送來的數(shù)據(jù)骨坑,以后再傳入輸入井撼嗓,輸出緩沖區(qū)用于暫存從輸出井送來的數(shù)據(jù)柬采,以后再傳送給輸出設(shè)備欢唾。
  • 輸入進程和輸出進程
    輸入的時候,將用戶要求的數(shù)據(jù)從輸入機通過輸入緩沖區(qū)再送到輸入井粉捻,CPU需要輸入數(shù)據(jù)時候礁遣,直接將數(shù)據(jù)從輸入井讀入內(nèi)存。輸出進程把用戶要求的輸出數(shù)據(jù)從內(nèi)存送到輸出井肩刃,待輸出設(shè)備空閑時候祟霍,再將輸出井的數(shù)據(jù)經(jīng)過輸出緩沖區(qū)送到輸出設(shè)備。

SPOOLing系統(tǒng)盈包,提高了I/O速度沸呐,將獨占設(shè)備改造成共享設(shè)備,實現(xiàn)了虛擬設(shè)備功能呢燥。
在SPOOLing技術(shù)下崭添,CPU要打印機打印的數(shù)據(jù)可以先輸出到磁盤的輸出井里,然后再做其他事情叛氨。將打印請求掛到等待隊列中呼渣,打印機有空的時候再把數(shù)據(jù)打印出來。

Tips:

  1. 磁盤時共享設(shè)備寞埠,一個時間間隔內(nèi)可以被多個進程同時訪問屁置。
  2. 緩沖池時系統(tǒng)公用資源,可以供多個進程共享仁连。
  3. 緩沖區(qū)是一種臨界資源蓝角,使用緩沖區(qū)時都有申請和釋放(互斥)的問題來考慮。
  4. 如果有高優(yōu)先級的操作饭冬,記錄鼠標(biāo)活動情況帅容,必須使用緩沖技術(shù)。
  5. 虛擬設(shè)備是靠將獨占設(shè)備改造成共享設(shè)備伍伤,提高系統(tǒng)資源/獨占設(shè)備利用率的SPOOLing技術(shù)實現(xiàn)的并徘。
  6. SPOOLing系統(tǒng)由預(yù)輸入程序,井管理程序扰魂,緩輸出程序組成麦乞。
最后編輯于
?著作權(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é)果婚禮上浴井,老公的妹妹穿的比我還像新娘。我一直安慰自己锋八,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布护盈。 她就那樣靜靜地躺著挟纱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腐宋。 梳的紋絲不亂的頭發(fā)上紊服,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音胸竞,去河邊找鬼欺嗤。 笑死,一個胖子當(dāng)著我的面吹牛卫枝,可吹牛的內(nèi)容都是我干的煎饼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼校赤,長吁一口氣:“原來是場噩夢啊……” “哼吆玖!你這毒婦竟也來了筒溃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤沾乘,失蹤者是張志新(化名)和其女友劉穎怜奖,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翅阵,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡歪玲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了掷匠。 大學(xué)時的朋友給我發(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
  • 正文 我出身青樓序宦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親背苦。 傳聞我的和親對象是個殘疾皇子互捌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

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