1. 程式人生 > >CPU的端口映射I/O和內存映射I/O

CPU的端口映射I/O和內存映射I/O

修改 繼續 進行 代碼 帶寬 中斷控制 讀寫操作 組成 地址

CPU在訪問內存時,通過數據總線和地址總線和內存交換信息,進行讀寫操作,這是內存映射I/O。

而當CPU訪問外接設備時,可通過內存映射和端口映射兩種方式進行I/O操作,通過內存映射訪問設備的方法和訪問內存類似,只不過訪問的是設備的不同於內存的地址設備。

而對於片內設備來說,不同的處理器可能有不同的映射方式。X86對於片內設備,需要引出專門的地址線來連接,訪問也是用的不同的in/out指令。這種方式稱為端口映射。

不同的設備需求不同,如快速性、熱拔插、高帶寬等。。。因此設備總線也有所不同,如常見的PCI、SATA、USB等等。CPU通過內存映射或端口映射連接到相應的總線控制器,進而訪問設備。不同的設備也需要不同的驅動,而事實上,內核絕大部分是由不同的驅動所組成的。

外接設備不同於內存,會主動產生新的數據,比如用戶對鍵盤的敲擊,將使鍵盤發出專門的中斷信號,通過中斷控制器,告訴CPU,CPU通過內存中的中斷向量表跳轉至專門的中斷處理程序,執行後,再返回原任務繼續。我們也可以修改中斷向量表中可為用戶定義的向量,進而控制內核當某種中斷發生時,跳轉到自定義的處理代碼去。

CPU的端口映射I/O和內存映射I/O