Windows中,使用C語言等高級編程語言時,很少有能直接控制硬件的指令,因為對硬件的控制是由Windows操作系統負責的。
但是,應用可以間接控制硬件,方法是使用系統調用來控制硬件。系統調用即使用API中的函數,API是DLL文件的集成,而控制硬件的小函數的實體儲存在DLL庫文件中。
然而,Windows操作系統本事也是軟件,它是怎么控制硬件的?
向CPU傳遞某些指令。
支持硬件輸入輸出的IN指令和OUT指令
IN指令和OUT指令也是匯編語言的助記符。
IN指令:通過指令端口號的端口輸入數據,儲存在CPU內的寄存器中。
OUT指令:把CPU內寄存器中的數據,通過指定端口號的端口輸出。
端口(port)和端口號是什么?
計算機主機中,附帶了用來連接外設的連接器。
連接器的內部,有用于交換主機和外設之間的電流特性的 IC,即為I/0控制器。
不同的外設都有各自不同的I/O控制器。
I/O控制器中用于臨時保存輸入輸出數據的內存,即為端口。
I/O控制器的內存,也成為寄存器,但與CPU中寄存器不同,它只用于臨時存儲數據。
各斷口之間以端口號進行劃分,端口號也稱為 I/O地址。
可以發現,Windows操作系統,使用IN指令和OUT指令,通過端口和端口號,對硬件輸入輸出數據。與通過內存地址對內存的讀寫數據是一致的。
中斷機制
IRQ(Interrupt Request):中斷請求。
中斷(Interrupt):暫停正在運行的程序,跳轉到其他程序運行的機制。
發出中斷請求的是連接外設的I/O控制器,實施中斷處理程序的是CPU。
為進行區分,外設的中斷請求使用不同于端口號的中斷編號。
查看外設驅動器屬性時,IRQ處的數值表示中斷編號,而操作系統和BIOS提供響應這個中斷編號的中斷處理程序。
中斷控制器:多個外設同時請求中斷時,將它們的中斷請求有序傳遞給CPU的IC。中斷控制器位于I/O控制器和CPU之間。
DMA機制(Direct Memory Access)
DMA:不經過CPU,外設和內存直接數據交換。利用DMA,可以做到短時間內大量傳輸數據。
文字和圖片的顯示機制
VRAM(Video RAM): 內存的一部分,用于儲存顯示器中顯示的信息。只要往VRAM中寫入數據,該數據就會在顯示器中顯示出來。
對現在的計算器來說,VRAM不再位于主機內存中,因為那太小了。現在的VRAM位于顯卡中,數百MB是必須的。
: