13. 輸入/輸出系統 (I/O Systems)

本章目標:


解析操作系統I/O子系統結構。


討論I/O硬件原理和複雜度。


提供I/O軟、硬件性能方面的詳細內容。


 


I/0概念:


設計不同的功能來控制設備,這些功能構成核心I/O子系統,將它部分與管理I/O裝置可能涉及的復雜度區分開來。


為了方便管理,將不同裝置的細節與相異之處隱藏起來,作業系統核心涉及成使用裝置驅動程式模組(驅動驅動程式--代表一個與I/O子系統,相同之統一裝置存取界面)。


I/0概念控制目的:(1)如何將這些裝置與電腦掛載連接;(2)如何以軟體程式來控制這些硬體裝置


周邊裝置包括:(1)存儲裝置,如磁帶;(2)傳輸裝置,如數據機;(3界面裝置,如滑鼠


 


I/0硬體:


電腦系統與裝置的通訊,借由所謂的連接阜,并使用相同的纜線。這叫做匯流排。


彙流排(Bus)


匯流排概念:由一組纜線組成,并使用嚴謹定義之協定,規定一組課在纜線上傳送的訊息格式


構架:(1Daisy Chaining;(2Pulling;(3Independent Requesting


爲了節省硬體代價,高速彙流排連接高速傳輸裝置;慢速彙流排連接慢速傳輸裝置


下圖為一般PC系統匯流排:


 


                                                          典型的PC匯流排架構


控制器(Controller)


控制器概念:可操控連接阜、匯流排、或裝置的電子零件組合。控制器內置暫存器,用于存儲資料與控制        訊號,方便處理器透過暫存器讀取資料或命令。某些裝置擁有自己的內建控制器。


控制器與處理器的通訊:


(1)使用特殊I/O指令來傳輸要送往某I/O連接阜位址的位元或字元,I/O指令驅動匯流排線選擇適當的裝置,再將位元輸入或寫出到裝置暫存器。


(2)使裝置控制器支援記憶體映對I/O


(3)以上兩種方式一起使用。


連接阜(Port)


連接阜概念:連接電腦與裝置,完成它們的通訊。


4個暫存器組成:(1)狀態暫存器;(2)控制暫存器;(3)資料輸入暫存器;(4)資料輸出暫存器;


狀態暫存器:包含可被主機讀取的位元資料,這些位元指出當前狀態;


控制暫存器:用以起始指令或改變裝置模式;


主機由資料輸入暫存器讀取輸入;


資料輸出暫存器由主機寫入要輸出的資料。


------可擴充控制器的容量為暫存器所用。


查詢


主機與控制器之間有完整的協定,基本握手是其中最簡單的概念


握手與協定(Handshaking and Protocol)


1.主機將重復讀取忙碌位元,知道位元值被清除;


2.主機設定在指令暫存器中的寫入位元,將位元組寫入資料輸出暫存器;


3.主機設定指令就緒位元;


4.當控制器發現指令就緒位元已經設定完成,即設定忙碌位元;


5.控制器讀取指令暫存器并發現寫入指令,則自資料輸出暫存器取位元組,并且執行必須的裝置I/O處理;


6.控制器清除指令就緒位元,并清除在狀態暫存器中的錯誤位元,表示裝置I/O已經成功,再清除忙碌位    元以便表示動作完成。


查詢裝置狀態方式:


讀取裝置暫存器、利用邏輯-和運算抽取狀態位元、若不為零時產生分支。


主機必須提供裝置快速的服務,以便主機知道控制器何時變為閑置狀態,而更有效率。


因此設計了一種叫做中斷的機制。


中斷(Interrupts)


中斷概念::允許裝置通知CPU的硬體機制,方便服務。CPU硬體擁有一個稱為中斷要求管線的纜線,方便    存儲訊號。


下圖為中斷驅動I/O回圈:


 


                                                            中斷-驅動I/O回圈


引發中斷過程:(1)若控制器發生錯誤,就會通過中斷需求線發出中斷信號;


2cpu每執行一個指令后會檢查中斷需求線,當發現信號後,做出相應存儲,跳往執行中斷處理器常式


3)由中斷常式查明原因並處理,回傳中斷返回指令;


4)處理完畢後還原工作。


中斷需求線包括2種:(1)不可遮罩中斷;(2)可遮罩中斷。


2者的區別是:中斷信號發生時,是否可以改變信號。不能改變的為不可遮罩中斷,反之為可遮罩中斷。


除了中斷常式,還設有中斷異常表,可查詢那些可預測的經常異常,而不需查詢所有來源。中斷向量表課使用中斷串鏈方式。中斷機制通過接受一個位址,此位址即為中斷向量表格的起始位址。


下圖為中斷向量表,031不可遮罩中斷,32255可遮罩中斷。


 


  現年作業系統使用中斷來處理費同步事件,并跳至核心中的監控者模式,為了讓緊急的時間得以優先處理,現代電腦使用各一套中斷優先權的方法,裝置控制器、硬體錯誤,及系統呼叫皆會引發課驅動核心常式的中斷,由于中斷處理占去極多時間,因此為了良好的執行效率,需要找到有效的中斷處理方法。


  其他有效率之硬體方法:


存儲處理器狀態值,并接著呼叫核心之特權方式。


直接記憶體存取(Direct Memory Access)


程式化I/O


做大量傳輸時,使用一般性用途的處理器來監看狀態位元,將資料已一次一位元組大小方式送入控制暫存器中。


直接記憶體存取的產生:


由于程式化I/O方式太過浪費,所以使用一種特殊用途處理器來處理大量傳輸這種情況,減輕CPU負擔。


DMA控制器的初始化:


主機將DMA指令區段寫入記憶體,此區段包含指向傳輸來源的指標、指向傳輸目的地的指標與傳輸資料數目。


CPU將此指令區段位置寫至DMA控制器中,而后就不用管了,其他工作都交由DMA來控制:DMA控制器直接操作記憶體匯流排,將位置置于匯流排上,然后進行大量傳輸的工作。


DMA控制器與裝置控制器之間通過握手程序來完成:


1當有資料需要傳送,此裝置將一訊號置于DMA-Request纜線上;


2DMA控制器抓取記憶體匯流排,將目的位置置于記憶體-位址纜線上,再將訊號置于DMA-Acknowledge纜線上;


3)當裝置控制器偵測到DMA-Acknowledge纜線上的訊號時,立即將資料傳送至記憶體,並將DMA-Request移除.


下圖為DMA傳輸的步驟圖:


 


                          The step of the DMA transmit


DMA處理影響:


  CPU不可存取主記憶體,而只能存取主要與第二快取中的資料項。雖然這降低了CPU的計算時間,但總的來說,DMA控制器的傳輸方式算很有效率。


DMA可使用底層實體記憶體的位址,也可執行直接虛擬記憶體存取方式。 


I/0界面應用:


I/0界面:


    爲了兼顧各種類型的I/0裝置,我們找出一般性特征將I/O裝置的細節相異性抽離開來,這些一般性特征可由一組標準化功能加以存取,此即為界面。而那些相異點則保存在裝置驅動器中,不讓I/O子系統觸及。


下圖為核心I/O結構圖