第六章輸入輸出I/O系統(tǒng)(1)

I/O系統(tǒng)的組成

image.png

包括:
需要用于輸入恍飘、輸出和存儲信息的設備常侣;
需要相應的設備控制器胳施;
控制器與CPU連接的高速總線;
有的大中型計算機系統(tǒng)焦辅,配置I/O通道筷登;
I/O軟件的層次結構及層功能

用戶層軟件//產(chǎn)生I/O請求哩盲、格式化I/O、Spooling
設備獨立性軟件//映射廉油、保護抒线、分塊嘶炭、緩沖抑进、分配
設備驅(qū)動程序//設置設備寄存器单匣,檢查狀態(tài)
中斷處理程序//
硬件//執(zhí)行I/O操作

設備管理

管理對象:
I/O設備和相應的設備控制器(I/O系統(tǒng)組成)
基本任務:
完成用戶提出的I/O請求
提高I/O速率户秤,改善I/O設備的利用率
為更高層進程方便使用設備提供手段
I/O系統(tǒng)的基本功能

###主要功能:
隱藏物理設備細節(jié)鸡号,方便用戶
用戶使用抽象的I/O命令即可
實現(xiàn)設備無關性鲸伴,方便用戶
用戶可用抽象的邏輯設備名來使用設備府蔗,同時也提高了OS的可移植性和易適應性汞窗。
提高處理機和設備的并行性姓赤,提高利用率:緩沖區(qū)管理
對I/O設備進行控制:控制方式仲吏、設備分配、設備處理
確保對設備正確共享:虛擬設備及設備獨立性等
錯誤處理

I/O系統(tǒng)的層次結構

層次結構:系統(tǒng)中的設備管理模塊分為若干個層次
層間操作:下層為上層提供服務裹唆,并完成輸入輸出功能中的某些子功能誓斥,并屏蔽功能實現(xiàn)的細節(jié)

I/O軟件的分層

用戶層軟件
實現(xiàn)與用戶交互的接口,用戶可直接調(diào)用在用戶層提供的许帐、與I/O操作有關的庫函數(shù),對設備進行操作距芬。
設備獨立軟件
用于實現(xiàn)用戶程序與設備驅(qū)動器的統(tǒng)一接口框仔、設備命名奕剃,設備的保護以及設備的分配與釋放等衷旅,同時為設備管理和數(shù)據(jù)傳送提供必要的存儲空間

設備驅(qū)動程序

與硬件直接相關,用于具體實現(xiàn)系統(tǒng)對設備發(fā)出的操作指令操软,驅(qū)動I/O設備工作的驅(qū)動程序

中斷處理程序

用于保存被中斷進程的CPU環(huán)境嘁锯,轉入相應的中斷處理程序進行處理,處理完后再恢復被中斷進程的線程后聂薪,返回到被中斷進程家乘。


image.png

I/O軟件系統(tǒng)的層次

中斷處理程序
處于I/O系統(tǒng)的底層,直接與硬件進行交互
設備驅(qū)動程序
處于次底層藏澳,是進程和控制器之間的通信程序
功能:將上層發(fā)來的抽象I/O請求仁锯,轉換為對I/O設備的具體命令和參數(shù),轉化為對I/O設備具體命令和參數(shù)翔悠,并把它裝入到設備控制其中的命令和參數(shù)寄存器中业崖。
設備獨立性軟件
包括設備命名野芒,設備分配,數(shù)據(jù)緩沖等軟件
I/O 系統(tǒng)接口
塊設備
數(shù)據(jù)的存取和傳輸都是以數(shù)據(jù)塊為單位的設備
基本特征是傳輸率較高双炕、可尋址狞悲。磁盤設備的I/O常采用DMA方式。
特點
隱藏了磁盤的二維結構妇斤,塊設備接口隱藏了磁盤地址是二維結構的情況摇锋。每個扇區(qū)的地址需要用磁道號和扇區(qū)號來表示。
將抽象命令映射為底層操作趟济,塊設備接口將上層發(fā)來的抽象命令乱投,映射為設備能識別的較低層具體操作。

字符設備

數(shù)據(jù)的存取和傳輸是以字符為單位的設備顷编,如鍵盤打印機等戚炫。基本特征是傳輸速率較底媳纬、不可尋址常采用中斷驅(qū)動方式双肤。
get和put操作
由于字符設備是不可尋址的,因而對它只能采用順序存取方式钮惠。獲取或輸出字符的方式是采用get和put操作
in-control
因字符設備的類型非常多茅糜,且差異甚大,系統(tǒng)以統(tǒng)一的方式提供了一種通用的in-control指令來處理他們素挽。

網(wǎng)絡通信接口

通過某種方式把計算機鏈接到網(wǎng)絡上
操作系統(tǒng)必須提供相應的網(wǎng)絡軟件和網(wǎng)絡痛心接口蔑赘。使得計算機能通過網(wǎng)絡與網(wǎng)絡上其他計算機進行通信≡っ鳎或上網(wǎng)瀏覽缩赛。

I/O通道

I/O通道設備的引入
設備控制器已大大減少CPU對I/O的干預
(如承擔了選擇設備,數(shù)據(jù)轉換撰糠、緩沖等功能)
但當主機的外設很多時酥馍,CPU的負擔仍然很重。
在CPU和設備控制器之間增設一個硬件機構:“通道”
設置通道后
CPU只需向通道發(fā)送一條I/O指令即可不再干預后續(xù)操作阅酪。
通道形成通道程序旨袒,執(zhí)行I/O操作,完成后向CPU發(fā)中斷信號术辐。

主要目的:

建立更獨立的I/O操作砚尽,解放CPU。
數(shù)據(jù)傳送的獨立
I/0操作的組織辉词、管理及結束處理也盡量獨立尉辑。
實際上I/O通道是一種特殊的處理機:
指令類型單一,只用于I/O操作较屿;
通道沒有內(nèi)存隧魄,它與CPU共享內(nèi)存

通道類型

根據(jù)其控制的外圍設備的不同類型卓练,信息交換方式也可分為以下三種類型:
字節(jié)多路通道
數(shù)組選擇通道
數(shù)組多路通道

字節(jié)多路通道

一個通道常通過多個子通道連接多個設備控制器
多個設備,通過非分配型子通道以字節(jié)為單位交叉輪流使用主通道傳輸自己的數(shù)據(jù)购啄。
數(shù)組選擇通道
針對高速設備:分配型子通道
設備利用子通道占用通道后襟企,一段時間內(nèi)一直獨占,直至設備傳送完畢釋放狮含。
利用率低顽悼。
數(shù)組多路通道
結合上述兩種方式。
含多個非分配型子通道几迄。數(shù)據(jù)傳送則按數(shù)組方式進行蔚龙。

中斷

中斷和陷入
中斷:CPU對I/O設備發(fā)來的中斷信號的一種響應,中斷是由外部設備引起的映胁,又稱外中斷木羹。
陷入:由CPU內(nèi)部事件所引起的中斷,通常把這類中斷稱為內(nèi)中斷或陷入(trap)解孙。
中斷和陷入的主要區(qū)別:是信號的來源坑填。
對多中斷源的處理方式
屏蔽(禁止)中斷:
所有中斷都將按順序依次處理。
當處理機正在處理一個中斷時弛姜,將屏蔽掉所有新到的中斷脐瑰,讓它們等待,直到處理機已完成本次中斷的處理后廷臼,處理機再去檢查并處理苍在。
優(yōu)點是簡單,但不能用于對實時性要求較高的中斷請求荠商。

嵌套中斷:

中斷優(yōu)先級:系統(tǒng)根據(jù)不同中斷信號源寂恬,對服務要求的緊急程度的不同,它們分別規(guī)定不同的優(yōu)先級结啼。
當同時有多個不同優(yōu)先級的中斷請求時掠剑,CPU優(yōu)先響應最高優(yōu)先級的中斷請求屈芜;
高優(yōu)先級的中斷請求郊愧,可以搶占正在運行低優(yōu)先級中斷的處理機,該方式類似于基于優(yōu)先級的搶占式進程調(diào)度

中斷處理程序

主要工作
進行進程上下文的切換
對處理中斷信號源進行測試
讀取設備狀態(tài)
修改進程狀態(tài)

中斷處理流程

測定是否有未響應的中斷信號
保護被中斷進程的CPU環(huán)境
轉入相應的設備處理程序
中斷處理
恢復CPU的現(xiàn)場

設備驅(qū)動程序

設備驅(qū)動程序是I/O系統(tǒng)的高層與設備控制器之間的通信程序井佑,主要任務是:
接收上層軟件發(fā)來的抽象I/O要求如read属铁、write等命令
再把它轉化為具體要求,發(fā)送給設備控制器躬翁,啟動設備去執(zhí)行焦蘑。
反方向,它也將由設備控制器發(fā)來的信號傳送給上層軟件

驅(qū)動程序的功能

(1)接收由與設備無關的軟件發(fā)來的命令和參數(shù)盒发,并將命令中的抽象要求例嘱,轉化為與設備相關的低層操作序列
(2)檢查用戶I/O請求的合法性狡逢,了解I/O設備的工作狀態(tài),傳遞與IO設備操作有關的參數(shù)拼卵,設置設備的工作方式
(3)發(fā)出IO命令奢浑,如果設備空閑,便立即啟動IO設備腋腮,完成指定的IO操作雀彼,如果設備忙碌則獎請求者掛在設備隊列上等待
(4)及時響應由設備控制器發(fā)來的中斷請求,并根據(jù)其中斷類型即寡,調(diào)用相應的中斷處理程序進行處理徊哑。

設備驅(qū)動程序的特點

(1)驅(qū)動程序是與設備無關的軟件和設備控制器之間通信和轉換的程序
(2)驅(qū)動程序,與設備控制器和IO設備的硬件特性緊密相關
(3)驅(qū)動程序與IO設備所采用的IO控制方式緊密相關聪富。
(4)由于驅(qū)動程序與硬件緊密相關莺丑,因而其中的一部分必須用匯編編寫
(5)驅(qū)動程序應允許可重入,一個正在運行的驅(qū)動程序會在一次調(diào)用完成前被再次調(diào)用善涨。

設備處理方式

具體分類
(1)為每一類設備設置一個進程窒盐,專門用于執(zhí)行這類設備的IO操作,這種方式比較適合于較大的系統(tǒng)
(2)在整個系統(tǒng)中設置一個IO進程钢拧,專門用于執(zhí)行系統(tǒng)中所有各類設備的IO操作也可以設置一個輸入進程合一個輸出進程蟹漓,分別處理系統(tǒng)中的輸入和輸出操作
(3)不設置專們的設備處理進程而只為各類設備設置相應的設備驅(qū)動程序,供用戶或系統(tǒng)進程調(diào)用源内。這種方式目前用得較多葡粒。

驅(qū)動程序處理過程

I/O設備與控制器間的通信轉換程序
了解抽象命令,了解控制器內(nèi)部的寄存器結構
與硬件密切相關膜钓,每類設備配備一種驅(qū)動程序
功能:接受解釋指令(有通道的系統(tǒng)嗽交,自動通道程序)、相關判斷颂斜、發(fā)送設備命令夫壁、響應中斷
特點,控制方式不同程序不同沃疮,部分固化進硬件盒让,代碼可重入。

IO控制方式

分為
程序IO方式
中斷驅(qū)動方式
直接存儲器訪問DMA
IO通道控制方式
宗旨:減少主機對IO控制的干預司蔬,將CPU從繁雜的IO控制事務中解脫出來

程序IO方式

cpu對I/O設備的控制采取程序I/O方式邑茄,或稱忙—等待方式
向控制器發(fā)送一條I/O指令;啟動輸入設備輸入數(shù)據(jù)俊啼;把狀態(tài)寄存器busy=1肺缕。
然后不斷測試標志。為1:表示輸入機尚未輸完一個字,CPU繼續(xù)對該標志測試同木;直到為0:數(shù)據(jù)已輸入控制器數(shù)據(jù)寄存器中浮梢。
CPU取控制器中的數(shù)據(jù)送入內(nèi)存單元,完成一個字的I/O 彤路。
高速CPU空閑等待低速I/O設備黔寇,致使CPU極大浪費。

中斷驅(qū)動IO方式

CPU向相應的設備控制器發(fā)出一條I/O命令
然后立即返回繼續(xù)執(zhí)行任務斩萌。
設備控制器按照命令的要求去控制指定I/O設備缝裤。
這時CPU與I/O設備并行操作。
I/O設備輸入數(shù)據(jù)中颊郎,無需CPU干預憋飞,因而可使CPU與I/O設備并行工作。從而提高了整個系統(tǒng)的資源利用率及吞吐量姆吭。

中斷方式比程序I/O方式更有效
但仍以字(節(jié))為單位進行I/O榛做,每當完成一個字(節(jié)),控制器便要請求一次中斷内狸。
CPU雖然可與I/O并行检眯,但效率不高,存在頻繁的中斷干擾昆淡。
改進:
CPU下指令通知控制器完成一塊數(shù)據(jù)的I/O锰瘸,控制器完成后才發(fā)中斷,而不是每個字節(jié)都要向CPU發(fā)中斷昂灵;
多字節(jié)傳輸入內(nèi)存過程不需要CPU搬運避凝,由控制器控制完成(所以稱直接存儲器訪問)——DMA(Direct Memory Access)控制方式引入

直接存儲器訪問DMA方式

該方式的特點是:
數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)塊;
所傳送的數(shù)據(jù)是從設備直接送入內(nèi)存的眨补,或者直接從內(nèi)存進設備管削;不需要CPU操作。
CPU干預進一步減少:僅在傳送一個或多個數(shù)據(jù)塊的開始和結束時撑螺,才需CPU干預含思,整塊數(shù)據(jù)的傳送是在控制器的控制下完成的。
可見DMA方式又是成百倍的減少了CPU對I/O的干預甘晤,進一步提高了CPU與I/O設備的并行操作程度含潘。

DMA控制器的組成

DMA控制器由三部分組成:
主機與DMA控制器的接口;
DMA控制器與塊設備的接口安皱;
I/O控制邏輯调鬓。

image.png

IO通道控制方式

DMA適用于讀一個連續(xù)的數(shù)據(jù)塊艇炎;
如一次讀多個數(shù)據(jù)塊到內(nèi)存不同區(qū)域酌伊,須由CPU分別發(fā)送多條I/O指令、進行多次DMA中斷處理。
再進一步減少CPU的干預(減少中斷)居砖, 引入通道虹脯。
實現(xiàn)對一組數(shù)據(jù)塊的讀(寫)及有關的控制和管理為單位的干預。
此時奏候,CPU只需發(fā)一條I/O指令循集,給出通道程序的首地址及要訪問設備即可。
CPU蔗草、通道和I/O設備三者的并行操作咒彤,提高整系統(tǒng)資源利用率。

設備獨立性的基本含義:

指應用程序中所使用的設備咒精,不局限于使用某個具體的物理設備镶柱,也稱為設備無關性。
為了實現(xiàn)設備獨立性模叙,在設備驅(qū)動程序之上設置一層軟件歇拆,稱為與設備無關的I/O軟件,或設備獨立性軟件范咨。
設備無關的軟件是I/O系統(tǒng)最高層軟件故觅,但它和其下的設備驅(qū)動程序之間的界限,將隨操作系統(tǒng)和設備的不同而有所差異渠啊。

獨占設備的分配過程

分配設備:
根據(jù)請求設備名输吏,查找SDT,找到DCT替蛉;
狀態(tài)评也、安全性等因素都可能導致本申請進程阻塞,掛入DCT等待隊列中灭返。
分配控制器
通過1步分配設備后盗迟,從DCT找到COCT;
檢查COCT狀態(tài)字熙含,若忙碌罚缕,進程PCB掛到其等待隊列
分配通道
COCT找到CHCT
判斷狀態(tài),…
當上述三步都通過后怎静,才可啟動設備進行數(shù)據(jù)傳輸

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末邮弹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蚓聘,更是在濱河造成了極大的恐慌腌乡,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夜牡,死亡現(xiàn)場離奇詭異与纽,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門急迂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來影所,“玉大人,你說我怎么就攤上這事僚碎『锩洌” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵勺阐,是天一觀的道長卷中。 經(jīng)常有香客問我,道長渊抽,這世上最難降的妖魔是什么仓坞? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮腰吟,結果婚禮上无埃,老公的妹妹穿的比我還像新娘。我一直安慰自己毛雇,他們只是感情好嫉称,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著灵疮,像睡著了一般织阅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上震捣,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天荔棉,我揣著相機與錄音,去河邊找鬼蒿赢。 笑死润樱,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的羡棵。 我是一名探鬼主播壹若,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼皂冰!你這毒婦竟也來了店展?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤秃流,失蹤者是張志新(化名)和其女友劉穎赂蕴,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舶胀,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡概说,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年碧注,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片席怪。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖纤控,靈堂內(nèi)的尸體忽然破棺而出挂捻,到底是詐尸還是另有隱情,我是刑警寧澤船万,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布刻撒,位于F島的核電站,受9級特大地震影響耿导,放射性物質(zhì)發(fā)生泄漏声怔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一舱呻、第九天 我趴在偏房一處隱蔽的房頂上張望醋火。 院中可真熱鬧,春花似錦箱吕、人聲如沸芥驳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兆旬。三九已至,卻和暖如春怎栽,著一層夾襖步出監(jiān)牢的瞬間丽猬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工熏瞄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留脚祟,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓强饮,卻偏偏與公主長得像愚铡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子胡陪,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353