IO簡介
IO就是Input和Output的簡稱,也就是輸入輸出,主要包括磁盤IO、網路IO、鍵盤輸入,顯示幕輸出、USB等操作,
輸入是從IO設備輸入到記憶體中,輸出是從記憶體中輸出到IO設備中,
IO控制器
CPU不會直接控制IO設備,而是通過IO控制器間接的控制IO設備,因為市面上有各種各樣的IO設備,操作方式都不太一樣,CPU無法直接控制IO設備,所以引入了IO控制器,也叫做設備控制器來間接控制IO設備,
IO控制器作為CPU和IO設備的中介,通過地址總線、控制總線與CPU相連,有以下作用:
1、資料緩沖
CPU和記憶體等速度都非常快,IO設備的速度比較慢,所以IO控制器設立緩沖區,
當輸出的時候,CPU將資料放到IO控制器中的資料暫存器中,然后就可以去忙其他作業了,IO設備可以慢慢的從IO控制器中的資料暫存器中拿資料然后輸出,
當輸入的時候,IO設備先將輸入的資訊放到IO控制器中的資料暫存器中,等到攢到一定數量或者輸入完成后,CPU一次性將資料拿走,提高了CPU的運行效率,
2、IO設別狀態識別
IO控制器會識別IO設備的作業狀態,將作業狀態保存到狀態暫存器中,供CPU查用,
3、控制IO設備
控制IO設備的讀取和寫入,定時等控制信號,

IO分類
IO主要分為以下4類:程式查詢方式、中斷方式、DMA、通道,這四類效率依次是變高的,
我們接下來挨個仔細分析一下,
1、程式查詢方式
讀取資料時,CPU從設備控制器的狀態暫存器中查詢設備是否可用,如果不可用就一直輪詢查詢,直到可用為止,如果可用就發送讀取信號,然后輪詢查詢資料是否準備號,如果準備好就從資料暫存器中讀取資料到CPU中,然后將資料從CPU轉移到記憶體中,
寫資料時,CPU也是輪詢查看設備是否可用,如果可用就將資料從CPU寫入到資料暫存器中,
缺點: 程式查詢方式,CPU需要不斷的查詢,白白浪費了CPU資源,CPU利用率低,
2、中斷驅動
中斷驅動是對程式查詢的改進,中斷的意思就是CPU是可以被打斷的,硬體可以向CPU發送中斷命令,然后CPU會執行對應的中斷程式,
當CPU請求IO時,就直接發送IO讀取的相關命令,如果當前設備正被占用,就排隊,然后IO設備器會對依次對佇列中的進行處理,處理完成后就發出中斷命令,打斷CPU原本的操作,轉而去執行中斷程式,比如將資料從資料暫存器轉到CPU,然后從CPU轉到記憶體中,
優點: 在IO的時候,CPU可以處理其他執行緒的作業,CPU的利用效率提高了
缺點: 在IO完成后,還是需要CPU將資料轉移到記憶體中,還是會占用一定的CPU,
3、DMA
DMA全稱為Direct Memory Access,也叫做直接存盤器訪問,DMA可以直接與記憶體相連,也就是說IO設備可以直接與記憶體交換資料,不要CPU的中轉了,

相較于中斷驅動,DMA有了以下改進:
1、以塊為單位進行傳送
2、記憶體和IO設備可以直接傳遞,不需要CPU的中轉,
3、CPU只需要在開始的時候發出CPU指令,在結束的時候DMA會發出中斷,CPU執行相關的中斷程式就行了,
優點: CPU只需要在開始的時候,指定從記憶體和IO設備中的哪些位置進行讀寫,進一步增加了CPU的利用率,
缺點: DMA可以一次性讀取多個塊,但是在記憶體和IO設備中必須是連續的,
如果牽扯到讀寫離散的塊,CPU必須發出多個IO指令,
4、通道
通道是一種硬體,自己就可以執行IO命令,相當于一個削弱版的小CPU,執行的指令單一,
通道可以執行IO指令,CPU只需要將相關的IO指令發送給通道控制器就可以了,通道會執行IO指令,完成對應的傳輸,
相較于DMA,DMA實作固定的資料傳送,而通道擁有著自己的指令和程式,具有更強的IO處理能力,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/297212.html
標籤:其他
