Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Chapter 13 輸入/輸出系統 (I/O Systems)"— Presentation transcript:

1 Chapter 13 輸入/輸出系統 (I/O Systems)
13.3 應用I/O介面 核心I/O子系統 13.5 I/O要求與硬體操作指令的轉換 13.6 資料串列 效 率

2 13.1 概 觀 I/O裝置在功能與速度方面變化極大,因此需要許多不同的功能來加以控制,這些功能構成核心的I/O子系統。
13.1 概 觀 I/O裝置在功能與速度方面變化極大,因此需要許多不同的功能來加以控制,這些功能構成核心的I/O子系統。 將不同裝置的細節與相異之處隱藏起來,作業系統核心設計成使用裝置驅動程式模組;裝置驅動程式(device driver)則代表一個與I/O子系統相通之統一裝置存取介面,大部份與系統呼叫一樣,提供應用程式與作業系統間的標準介面。

3 13.2 I/O 硬體

4

5 查詢 握手協定(handshaking) 假設有2個位元用來協調控制器主機之間的生產-消費關係,控制器透過設定在狀態暫存器內的忙碌 (busy)位元表示本身狀態 [回想設定(set)位元表示將此位元值設為 1,而清除 (clear)位元表示將此位元值設為0],當控制器忙於工作時,即設定忙碌位元,而當準備好可以接收下一個指令時,即清除忙碌位元。

6 中斷(interrupt)

7

8 13.2.3 直接記憶體存取(DMA, direct memory-access)

9 13.2.4 I/O 硬體總結 作業系統內許多I/O方面,包括︰ 匯流排 控制器 I/O連接埠及其暫存器 主機與裝置控制器間的握手程序關連
在查詢迴路或使用中斷時握手程序的執行 將I/O工作由DMA控制器負責,可做大量傳輸

10 13.3 應用I/O介面(program I/O interface)

11

12 13.3.1 區段與字元裝置 區段裝置介面包括所有存取磁碟機,及其它區段導向(block-oriented)裝置時所需的功能。
區段與字元裝置 區段裝置介面包括所有存取磁碟機,及其它區段導向(block-oriented)裝置時所需的功能。 應用程式通常都透過檔案系統介面存取這類的裝置,像 read, write, seek已抓住區段儲存裝置的主要核心特色,因此應用程式並不需知道這些裝置在處理低階動作時的不同。 字元串列(character stream)介面中的基本系統呼叫可以讓應用程式取得get或輸出put字元;在系統介面的最上層允許一次存取一行的功能庫,而不需緩衝與編輯服務。

13 網路裝置 由於網路I/O在執行效率及定址特點上,有別於一般磁碟I/O。因此,大部份的作業系統亦提供與磁碟使用之read, write, seek介面相異的網路I/O介面,其中有一項介面定義,包括在許多如UNIX 與Windows NT 的作業系統之中,稱之為網路承接口(socket)介面。 時脈與計時器 大部份電腦都有提供三種基本功能的時脈與計時器 記錄目前時間(current time) 記錄超過時間(elapsed time) 設定計時器,可在時間T啟動操作X

14 阻隔與非阻隔I/O I/O裝置執行的底層動作通常是非同步的,採用的時間常在變化或不可預測,因此,大部份作業系統使用阻隔系統呼叫作為應用程式介面,因為阻隔應用程式製作碼與非阻隔應用程式製作碼相較之下,顯得比較容易瞭解。 非阻隔呼叫並不會中斷正處於執行狀態之應用程式,相反地,它將快速的傳回一個資料值,指出已經有多少位元組傳輸成功之資訊。

15 13.4 核心I/O子系統 13.4.1 I/O排班程式 安排一組I/O要求,指如何找出好的執行順序以方便執行。

16 緩衝(buffer) 緩衝(buffer)器在兩個裝置或裝置與應用程式之間傳輸資料時,可以儲存資料的記憶體區域,要使用緩衝的原因有三: 為解決資料串列之生產者與消費者在速度上不相等的問題。 列出典型電腦硬體在裝置速度上極大的差異,以便瞭解此方法的重要性, 如下圖。 提供裝置對於不同資料傳輸大小之間的適應性。 用來提供應用I/O的複製語法。

17 快取 快取(cache)是一個持有資料複製的快速記憶體,存取已經快取住的複製是比存取原有的資料要來得有效率。 緩衝器和快取之間的不同,在於緩衝器可能只有持有資料項的現在備份,而快取只持有一個存在於其它位置的項目之快速儲存的複製。 Spooling和裝置預約 Spool是一個緩衝器,它是一個用來保留不能接收插入之資料串列的裝置 (例如印表機)之輸出。 作業系統採用攔截所有到印表機之輸出的方式來解決問題,每一個應用的輸出都被 spool在個別的磁碟檔案之中。當一個應用完成列印之後,將 spooling系統的佇列之中符合的spool檔案輸出到印表機,spooling系統一次複製一個已經在等待的spoo1檔案到印表機。

18 錯誤處理 使用保護記憶體的作業系統,能夠防止許多硬體與應用程式發生錯誤,因此真正的系統錯誤並非一般小型機械誤失引起。有些是暫時性原因,例如網路負載過高,或 “永久性”原因,例如磁碟控制器毀壞。 I/O保護 使用者意外地或有目的地藉由使用非法I/O指令企圖打斷正常的系統操作。 為了避免使用者執行非法I/O操作,定義所有I/O指令為特權指令,因此使用者不能直接地發出I/O指令,必須由作業系統發出I/O指令。 作業系統 (在監督模式執行)檢核需求是否有效,如果是,執行I/O需求。否則作業系統返回到使用者。

19

20 核心資料結構 系統核心需要知道關於I/O元件使用的狀態資訊,它透過許多位於核心的資料結構完成。

21 13.4.8 核心I/O子系統總結 I/O子系統負責協調一組可用於應用程式與核心其它部份的服務。I/O子系統監督這些程序:
檔案與裝置之名稱空間的管理 檔案與裝置的存取控制 操作控制 檔案系統空間配置 裝置配置 緩衝、快取與 spooling I/O排班 裝置狀態監控、錯誤處理與誤失回復 裝置驅動器規劃與安裝

22 I/O要求與硬體操作指令的轉換 作業系統具有因應需要隨時載入裝置驅動程式的能力。在開機時,系統首先檢查硬體匯流排,決定目前存在那些裝置,接下來系統再載入必須的驅動器,至於方法則不管是立即載入,或是在I/O要求發出之後再執行都可行。 圖13.13所示,說明I/O阻隔讀取要求的典型生命週期。

23 13.6 資料串列 UNIX系統V有一機制,稱為資料串列 (streams),讓應用程式能夠動態組合驅動器程式碼之管線 (Pipeline),所謂的資料串列為一個在裝置驅動器與使用者層處理程序之間的全工 (full-duplex)連接,它包含一個可以作為使用者處理程序介面的資料串列標頭 (stream head),一個可控制裝置的驅動器尾端 (driver end),以及零或多個存在它們之間的資抖串列模組 (stream modules)。

24 效率 I/O是影響系統效率的主要因素,在執行裝置驅動器程式碼以及當行程被阻隔與非阻隔時,公平有效地安排其執行順序將會為CPU帶來極大負擔,導致內容切換在CPU以及其硬體快取之間;I/O在核心中斷處理器控制方面較無效率。 在控制器與底層記憶體之間進行資料複製時,會降低記憶體匯流排的速度,這個情況在核心緩衝器與應用程式資料之間兩處進行資料複製時也會發生。 如何妥當處理以上這些問題,成為電腦架構的主要考量之一。

25 利用下列數種方法改變對 I/O之執行效率:
減少內容切換(context switch)次數。 減少在裝置與應用程式之間傳輸時,必須複製的記憶體資料次數。 減少使用大型傳輸、智慧型控制器與查詢 (如果可以將忙碌等待最小化)方法之中所發生頻率。 使用DMA控制器的並行處理,或者可以減少來自CPU簡單資料複製次數的通道。 將處理初始條件移至硬體之中,使它在裝置控制器之中的操作可以與CPU以及匯流排的操作同時進行。 平衡CPU、記憶體子系統、匯流排與I/O之執行效率,因為任一區域的額外負擔都可能造成其它系統的不便。

26


Download ppt "Chapter 13 輸入/輸出系統 (I/O Systems)"

Similar presentations


Ads by Google