操作系統I/O控制方式詳解

一、導讀

爲了有效地實現物理I/O操作,必須通過硬件和軟件技術,對 CPU 和 I/O 設備的職能進行合理的分工,以調節系統性能和硬件成本之間的矛盾。
隨着計算機技術的發展,I/O 控制方式也在不斷髮展。選擇和衡量 I/O 控制方式有如下三條原則:

  • 數據傳送速度足夠快,能滿足用戶的需求但又不丟失數據;
  • 系統開銷小,所需的處理控制程序少
  • 能充分發揮硬件資源的能力,使 I/O 設備儘可能忙,而 CPU 等待時間儘可能少。

按照I/O控制器功能的強弱以及和 CPU 之間聯繫方式的不同,可以把 I/O 設備的控制方式和通道控制方式分爲四類:直接程序控制方式、中斷驅動控制方式、直接存儲器訪問(DMA)控制方式和通道控制方式。I/O控制方式發展的目標是儘量減少CPU對 I/O 控制的干預,把CPU從繁雜的 I/O 控制事務中解脫出來,以便更多地進行數據處理,提高計算機效率和資源的利用率。 它們之間的主要差別在於 CPU 與外圍設備並行工作的方式和程度不同。

二、I/O控制方式

1、直接程序控制方式

直接程序控制方式由用戶進程直接控制主存或 CPU 和外圍設備之間的信息傳送。直接程序控制方式又稱爲詢問方式,或忙/等待方式。通過 I/O 指令或詢問指令測試 I/O 設備的忙/閒標誌位,決定主存與外圍設備之間是否交換一個字符或一個字。
在這裏插入圖片描述

流程圖概述直接程序控制方式的工作流程如下:

① 當用戶進程需要輸入數據時,通過 CPU 向控制器發出一條 I/O 指令,啓動設備輸入數據,同時把狀態寄存器中的忙/閒狀態 busy 置爲1
② 用戶進程進入測試等待狀態,在等待過程中,CPU 不斷地用一條測試指令檢查外圍設備狀態寄存器中的 busy 位,而外圍設備只有在數據傳入控制器的數據寄存器之後,纔將該 busy 位置爲0,。
③ 處理器將數據寄存器中的數據取出,送入主存指定單元,完成一個字符的I/O操作,接着進行下一個數據的 I/O 操作

直接程序控制方式雖然簡單,不需要多少硬件的支持,但由於高速的 CPU 和低速的 I/O 設備之間的速度上不匹配,因此,CPU 與外圍設備只能串行工作,使 CPU 的絕大部分時間都處於等待是否完成 I/O 操作的循環測試中,造成 CPU 的極大浪費,外圍設備也不能得到合理的使用,整個系統的效率很低。因此,這種I/O控制方式只適合於 CPU 執行速度較慢,且外圍設備較少的系統。

2、中斷驅動控制方式

爲了減少程序直接控制方式下 CPU 的等待時間以及提高系統的並行程度,系統引入了中斷機制。中斷機制引入後,外圍設備僅當操作正常結束或異常結束時才向 CPU 發出中斷請求。在 I/O 設備輸入每個數據的過程中,由於無需 CPU 的干預,一定程度上實現了 CPU 與 I/O設備的並行工作。僅當輸入或輸出完一個數據時,才需 CPU 花費極短的時間做中斷處理。

在這裏插入圖片描述
在這裏插入圖片描述
存在的問題:由於I/O操作直接由 CPU 控制,每傳送一個字符或一個字,都要發生一次中斷,仍然佔用了大量的 CPU 處理時間,因此可以通過爲外圍設備增加緩衝寄存器存放數據來減少中斷次數。

上述兩種方法的特點都是以 CPU 爲中心,數據傳送通過一段程序來實現,軟件的傳送手段限制了數據傳送的速度。接下來介紹的這兩種I/O 控制方式採用硬件的方法來顯示 I/O 的控制

3.直接存儲器訪問(DMA)控制方式

直接存儲器訪問控制方式又稱 DMA(Direct Memory Access)方式。爲了進一步減少 CPU 對 I/O 操作的干預,防止因並行操作設備過多使 CPU 來不及處理或因速度不匹配而造成的數據丟失現象,引入了 DMA 控制方式。在 DMA 控制器的控制下,採用竊取或挪用總線控制權,在設備和主存之間開闢直接數據交換通道,成批地交換數據,而不必讓 CPU 干預。
DMA控制器的組成及作用:
在這裏插入圖片描述

控制/狀態寄存器(CR):主要存放一些控制信息和系統的狀態信息,如啓動位、中斷位、busy位。
數據緩衝寄存器(DR):存放要輸入輸出的數據,起中間緩存的作用。
傳送字節計數器(DC):存放本次要進行IO操作的字節個數。
內存地址寄存器(MAR):存放內存中緩衝區的起始地址。因爲在進行IO操作時,設備總是與內存中的某個緩衝區直接打交道。

DMA傳送過程

(1)DMA傳送前預處理: (CPU完成)

  • 測試設備狀態
  • CPU初始化DMA控制器:
主存緩衝區首址 → MAR;
傳送數據字節數 → DC;
設置傳輸方式(DMA的傳輸有多種方式,如以字符爲單位或者以數據塊爲單位申請總線的使用權)
  • 啓動設備。
    (2)DMA控制器控制完成設備與主存間的數據傳送

  • 磁盤控制器將整塊數據從磁盤讀入DMA控制器的DR中;

  • 磁盤控制器校驗讀入的數據;

  • 磁盤控制器向DMA控制器發DMA請求

  • DMA控制器向CPU請求總線週期,獲得總線控制器權後:
    在這裏插入圖片描述
    在這裏插入圖片描述
    (3)CPU響應中斷進行後處理:(CPU完成)
    在這裏插入圖片描述
    DMA方式的特點:

① 數據傳送以數據塊爲基本單位
② 所傳送的數據從設備直接送入主存,或者從主存直接輸出到設備上
③ 僅在傳送一個或多個數據塊的開始和結束時才需 CPU 的干預,而整塊數據的傳送則是在控制器的控制下完成。

DMA方式和中斷驅動控制方式相比,減少了 CPU 對 I/O 操作的干預,進一步提高了 CPU 與 I/O 設備的並行操作程度。
DMA方式的線路簡單、價格低廉,適合高速設備與主存之間的成批數據傳送,小型、微型機中的快速設備均採用這種方式,但其功能較差,不能滿足複雜的 I/O 要求。

4、通道控制方式

通道,獨立於 CPU 的專門負責輸入輸出控制的處理機,它控制設備與內存直接進行數據交換。有自己的通道指令,這些指令由 CPU 啓動,並在操作結束時向 CPU 發出中斷信號。

通道控制方式是一種以內存爲中心,實現設備和內存間直接交換數據的控制方式。 也是傳輸速率比較高的IO控制方式。

通道的運算控制部件

通道地址字(CAW):記錄下一條通道指令的地址,其功能類似於中央處理機的指令計數器。
通道命令字(CCW):記錄正在執行的通道指令,其作用相當於中央處理機的指令寄存器。
通道狀態字(CSW):記錄通道、控制器、設備的狀態,包括I/O傳輸完成信息、出錯信息、重複執行次數等。當IO操作完成後,CPU通過讀取通道狀態字的值來了解IO操作的執行情況。

通道程序:保存在主存中

通道通過執行一個通道程序來完成IO控制的。通道雖然是一種處理機,但是它本身沒有內存,是與主機CPU共享系統的主存。所以通道程序是存放在主存中的。一個通道程序由一系列通道指令構成。 通道指令內容如下:

操作碼:規定指令所執行的操作。
內存地址:內存緩衝區首址。
計數:本條指令要讀寫的字節數。
通道程序結束位P:P=1表示本條指令是通道程序最後一條指令。
記錄結束標誌R:R=0表示本條指令與下一條指令所處理的數據屬同一條記錄。

如下是一個簡答的通道程序往磁盤上寫一組數據,最後一個指令的P位爲1,表示這個該通道程序的最後一條指令。
在這裏插入圖片描述
I/O控制過程
在這裏插入圖片描述
在這裏插入圖片描述
通道控制方式,實現了CPU、通道和I/O設備三者的並行操作,從而更加有效地提高整個系統的資源利用率。例如,當 CPU 要完成一組相關的讀(或寫)操作時,只需要向 I/O 通道發出一條 I/O 指令,指出其所要執行的通道程序的首址和要訪問的I/O設備,通道接收到該指令後,通過執行通道程序便可完成 CPU 指定的 I/O 任務。可見,通道只是在 I/O 操作的起始和結束時向 CPU 發出 I/O 中斷申請,相對於之前的控制方式進一步減少了 CPU 的干預程度。

在這裏插入圖片描述

I/O控制方式有幾種?分別適用何種場合?

程序控制方式

原理:程序直接控制主機和外部設備之間的io操作,程序必須不停探測io端口的狀態。
cpu與io串行工作

中斷控制方式

原理:cpu處理自己的事情,收到中斷請求之後,轉過去處理中斷,結束之後回到原來的位置繼續處理自己的事情。
cpu與io並行工作(宏觀上的)

DMA方式

cpu和io之間通過DMA控制器直接進行數據交換,DMA控制器獲得總線控制權,無需cpu干預。
並行

通道控制方式

也是一個處理器,實現io與cpu的直接數據交換,與DMA不同的是一個通道可以控制多個io設備。
並行

1.直接程序控制方式:只適合於CPU執行速度較慢,且外圍設備較少的系統。
2.中斷驅動控制方式:可以成倍地提高CPU的利用率,並且能支持多道程序和設備的並行操作。但是由於I/O操作直接由CPU控制,每傳送一個字符或一個字,都要發生一次中斷,仍然佔用了大量的CPU處理時間,因此可以通過爲外圍設備增加緩衝器存放數據來減少中斷次數。
3.DMA直接存儲器訪問控制方式:線路簡單,價格低廉,適合高速設備與主存之間的成批數據傳送,小型,微型機中的快速設備均採用這種方式,但其功能較差,不能滿足複雜的I/O要求。
4.通道控制方式:適用於大型計算機需要連接大量的高速和低速設備。

參考:知乎:設備管理:IO控制

王道考研:這個就不說了,感覺單純應對考研知識的話王道真的很不錯了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章