程序是怎樣跑起來的 -- 硬件控制方法

IRQ指的是用來執行硬件中斷請求的編號

DMA指的是,不經過CPU中介處理,外圍設備直接同計算機的主內存進行數據通信。像讀盤這樣用來處理大量數據的外圍設備都具DMA功能。

中斷處理是根據需要來使用的選項功能,DMA則直接交給對應的外圍設備即可

應用和硬件無關?

windows提供了通過應用來間接控制硬件的方法。利用操作系統提供的系統調用功能就可以實現對硬件的控制。在windows中,系統調用稱為API。各API是應用調用的函數。這些函數的實現被存儲在DLL文件中。

程序是怎樣跑起來的 -- 硬件控制方法

支撐硬件輸入輸出的IN指令和OUT指令

window控制硬件時藉助的是輸入輸出指令。其中具有代表性的是兩個輸入輸出指令就是IN和OUT。IN指令通過指定端口號的端口輸入數據,並將其存儲在CPU內部的寄存器中。OUT指令則把CPU寄存器中存儲的數據,輸出到指定端口號的端口。

計算機主機中,附帶了用來連接顯示器及鍵盤等外圍設備的連接器。而各連接器的內部,都連接有用來交換計算機主機同外圍設備之間電流特性的IC。這些IC統稱為I/O控制器。主要是為了解決主機與外圍設備之間,電壓不同,數字信號及模擬信號的電流特性不同的問題。

I/O控制器有用於臨時保存輸入輸出數據的內存。這個內存就是

端口,也稱為寄存器,和CPU內部的寄存器在功能上是不同的。後者是用於數據運處理,後者是保存臨時存儲。

一個I/O控制器既可以控制一個外圍設備,也可以控制多個外圍設備。各端口之間通過端口號進行區分。端口號也稱為I/O地址。

程序是怎樣跑起來的 -- 硬件控制方法

外圍設備的中斷請求

IRQ是用來暫停當前正進行的程序,並跳轉到其他程序運行的必要機制。該機制稱為中斷處理

實施中斷請求的是連接外圍設備的I/O控制器,負責實施中斷請求程序的是CPU。為了進行區分,外圍設備的中斷請求會使用不同於I/O端口的其他編號,該編號稱為中斷編號

中斷處理程序的第一步處理,就是把CPU所有寄存器的數據保存到內存的棧中。在中斷處理程序中完成外圍設備的輸入輸出後,把棧中保存的數值還原到CPU寄存器中,然後再繼續進行對主程序的處理。

用中斷來實現實時處理

大部分的外圍設備,都會頻繁地發生中斷請求。其原因是為了實時處理外圍設備輸入的數據。雖然不利用中斷也可以從外圍設備輸入數據。但那種情況下,主程序就必須要持續不斷地檢測外圍設備是否有數據輸入。

程序是怎樣跑起來的 -- 硬件控制方法

DMA可以實現短時間內傳送大量數據

DMA是指在不通過CPU的情況下,外圍設備直接和主內存進行數據傳送。

資源是計算機具備的有限資源的統稱。端口號、IRQ、DMA等可以指定的數值範圍都是有限的,因此他們也是資源的一種。

用軟件來控制硬件聽起來好像很難,但實際上只是利用輸入輸出指令同外圍設備進行輸入輸出而已。中斷處理是根據需要來使用的選項功能,DMA則直接交給對應的外圍設備即可。

計算機能處理的事情,始終只是對輸入的數據進行運算,並把結果輸出。不管程序內容是什麼,最終都是數據的輸入輸出和運算。


分享到:


相關文章: