裝置管理的主要任務之一是控制裝置和記憶體或處理機之間的資料傳送。外圍裝置和記憶體之間的輸入 / 輸出控制方式有四種,下面分別介紹:
1.程式直接控制方式
計算機從外部裝置讀取資料到儲存器,每次讀到乙個字的資料。對讀入的每個字,cpu 需要對外設狀態進行迴圈檢查,直到確定該字已經在 i / o 控制器的
資料暫存器中。在程式直接控制方式中,由於 cpu 的高速性和 i / o 裝置的低速性,致使cpu 的絕大部分時間都處於等待 i / o 裝置完成資料 i / o 的迴圈測試
中,造成了cpu 資源的極大浪費。在該方式中,cpu 之所以要不斷地測試 i / o 裝置的狀態,就是因為在cpu 中沒有採用中斷機構,使 i / o 裝置無法向
cpu 報告它已完成了乙個字元的輸入操作。
程式直接控制方式雖然簡單易於實現,但是缺點也是顯而易見的,由於cpu 和 i / o 裝置只能序列工作,導致 cpu 的利用率相當低。
2.中斷驅動方式
中斷驅動方式的思想是,允許 i / o 裝置主動打斷 cpu 的執行並請求服務,從而「解放」cpu ,使得其向 i / o 控制器傳送讀命令後可以繼續做其他有用的工作。
我們從 i / o 控制器和 cpu 兩個角度分別來看中斷驅動方式的工作過程:
從 i / o 控制器的角度來看,i / o 控制器從 cpu 接收乙個讀命令,然後從外圍裝置讀資料。一旦資料讀入到 i / o 控制器的資料暫存器,便通過控制線給cpu
發出乙個中斷訊號,表示資料已準備好,然後等待 cpu 請求該資料。i / o 控制器收到 cpu 發出的取資料請求後,將資料放到資料匯流排上,傳到 cpu 的暫存器
中。至此,本次 i / o 操作完成, i / o 控制器又可開始下一次 i / o 操作。
從cpu 的角度來看,cpu 發出讀命令,然後儲存當前執行程式的上下文(現場,包括程式計數器及處理機暫存器),轉去執行其他程式。在每個指令週期的
末尾,cpu 檢查中斷。當有來 i / o 控制器的中斷時,cpu 儲存當前執行程式的上下文,轉去執行中斷處理程式處理該中斷。這時,cpu 從 i / o 控制器讀寫乙個
字的資料傳送到暫存器,並存入主存。接著,cpu 恢**出 i / o 命令的程式(或其他程式)的上下文,然後繼續執行。
中斷驅動方式比程式直接控制方式有效,但由於資料中的每個字在儲存器和 i / o 控制器之間的傳輸都必須經過 cpu ,這就導致了中斷驅動方式仍然會消耗較多
的cpu 時間。
3.dma方式
在中斷驅動方式中, i / o裝置與記憶體之間的資料交換必須要經過 cpu 中的暫存器,所以速度還是受限,而dma (直接儲存器訪問)方式的基本思想是在 i / o 裝置
和記憶體之間開闢直接的資料交換通路,徹底「解放」cpu 。dma 方式的特點是:
(1)基本單位是資料塊
(2)所傳送的資料,是從裝置直接送入記憶體的,或者相反
(3)僅在傳送乙個或多個資料塊的開始和結束時,才需 cpu 干預,整塊資料的傳送是在 dma 控制器的控制下完成的
下圖列出了 dma 控制器的組成:
為了實現在主機和控制器之間成塊資料的直接交換,必須在 dma 控制器中設定如下四類暫存器:
(1)、命令/狀態暫存器(cr) :用於接收從 cpu 發來的 i / o 命令或有關控制資訊,或裝置的狀態。
(3)、資料暫存器(dr):用於暫存裝置到記憶體,或從記憶體到裝置的資料。
(4)、資料計數器(dc):存放本次要傳送的字(節)數。
dma方式的工作過程是:cpu 接收到 i / o 裝置的dma 請求時,它給 i / o 控制器發出一條命令,啟動dma控制器,然後繼續其他工作。之後cpu
就把控制操作委託給 dma 控制器,由該控制器負責處理。dma 控制器直接與儲存器互動,傳送整個資料塊,每次傳送乙個字,這個過程不需要cpu
參與。當傳送完成後,dma 控制器傳送乙個中斷訊號給處理器。因此只有傳動開始和傳送結束時才需要 cpu 的參與。
dma 控制方式與中斷驅動方式的主要區別是:中斷驅動方式在每個資料需要傳輸時中斷cpu ,而 dma 控制方式則是在所要求傳送的一批資料全部
傳送結束後才中斷 cpu ;此外,中斷驅動方式資料傳送是在中斷處理時由 cpu 控制完成的,而 dma 控制方式則是在 dma 控制器的控制下完成的。
4.通道控制方式
i / o 通道是指專門負責輸入 / 輸出的處理機。i / o 通道方式是 dma 方式的發展,它可以進一步減少 cpu 的干預,即把對乙個資料塊的讀 (或寫)為
單位的干預,減少對一組資料塊的讀(或寫)及有關的控制和管理為單位的干預。同時,又可以實現cpu 、 通道和 i / o 裝置三者的並行操作,從而有
效地提高整個系統的資源利用率。
的 i / o 裝置,通道接到該指令後,通過執行通道程式便可完成 cpu 指定的 i / o 任務,資料傳送結束時向 cpu 發中斷請求。
i ./ o 通道與一般處理機的區別是:通道指令型別單一,沒有自己的記憶體,通道所執行的通道程式是放在主機的記憶體中的,也就是說通道與cpu 共享
記憶體。i / o 通道與 dma 方式的區別是:dma 方式需要 cpu 來控制傳輸的資料塊大小、傳輸的記憶體位置,而通道方式中這些資訊是由通道控制的。另外,
每個dma 控制器對應一台裝置與記憶體傳遞資料,而乙個通道可以控制多台裝置與記憶體的資料交換。
用乙個例子來對以上 4 種i / o 控制方式做一次總結。想象這樣的乙個情形,一位客戶要去裁縫店做一批衣服:
程式直接控制也就是,裁縫沒有客戶的,****,客戶必須每隔一段時間去裁縫店看看裁縫把衣服做好了沒有,這就浪費了客戶的不少時間。
中斷驅動方式就是裁縫有客戶的****,每當他完成一件衣服以後,給客戶打一次**,讓客戶去拿,這對比程式直接控制能省去客戶不少
麻煩,但每完成一件衣服就讓客戶去拿一次,仍然是比較浪費客戶時間的。
dma 方式就是指,客戶花錢僱了乙個單線秘書,並向秘書交代好把衣服放在**(存放倉庫),裁縫要聯絡就直接聯絡秘書,秘書負責把衣服
取回並放在合適的位置,當每處理 100 件衣服,秘書要給客戶報告一次(大大節省了客戶的時間)。
通道方式就是,秘書擁有更高的自主權,對比 dma 方式,他可以決定把衣服存放在**,而不需要客戶操心。而且,何時向客戶報告,是處理
完100 件衣服就報告,還是處理完 10000 件衣服後才報告,也是秘書可以決定的。客戶有可能在多個裁縫那裡訂了貨,乙個 dma 類的秘書只能負責
與乙個裁縫溝通,但通道類秘書卻可以與多個裁縫進行溝通。
IO控制方式
程式直接控制方式 cpu干預程度 非常的頻繁,io操作開始前,完成後均需要cpu介入,並且在等待io完成的過程中cpu需要不斷的介入進行輪詢檢查,實際上是忙輪詢,極大的浪費了cpu的資源,本質原因還是io裝置與cpu速度差異造成的矛盾,其次的原因是沒有中斷機制,io裝置無法向cpu報告自己的狀態 資...
sysfs方式控制IO
一 配置核心 make menuconfig 勾選device drivers gpio support sys class gpio sysfs inte ce 選項以開啟sysfs功能 二 測試 echo 976 sys class gpio export 匯出引腳 echo out sys c...
5 1 2 I O控制方式
裝置管理的主要任務之一是控制裝置和記憶體或處理器之間的資料傳送,外圍裝置和記憶體之間的輸入輸出控制方式有四種。1 程式直接控制方式 計算機從外部裝置讀取資料到儲存器,每次讀乙個字的資料。對讀入的每乙個字,cpu需要對外設狀態進行迴圈檢查,直到確定該字已經在i o控制器的資料暫存器中。在程式直接控制方...