2012-07-14 25 views
1

工作,我是新來的工作systems.I弄不明白到底是什麼當說 的地址空間的某些部分被保留用於I/O它意味着什麼?內存映射I/0在linux

意思,如果我有4GB的RAM地址的某一部分被保留用於I/O?

如果有指令如接着該地址時,CPU不認爲作爲I/O?

如果有人澄清我的理解,會有很大的幫助。

回答

1

傳統上,有些電腦有獨立的IO和內存總線。內存總線連接到內存,IO總線連接到各種外設。

雖然對於各種原因(存取的例如速度,製造一個單獨的IO總線的成本等),某些外設被映射到存儲器(例如,視頻卡,其中快速訪問是必要的快速的圖形)。這意味着即使它們不是(或僅部分)是類似存儲器的設備,它們也連接到存儲器總線。

上。例如微控制器,它們通常具有一個共同的總線,即既用於存儲器和IO。其原因是這些設備具有有限的CPU針腳,也沒有必要以極快的速度(如果你有一個共享的IO /內存總線的性能限制)

回答您的問題:

  • 「是保留爲IO「:這意味着對於這些內存地址,應該將IO設備連接到處理器。例如,在ATMEL微控制器的情況下,前64字節爲IO保留,您可以使用特殊指令輕鬆訪問這些字節(而不是使用存儲器讀/寫指令)。

  • 4GB的內存:不要混淆的存儲器的邏輯和物理映射。在個人電腦的情況下,有一個翻譯設備,你可以編程來做翻譯。這意味着,您的4GB物理內存可以映射到邏輯地址空間的任何地方(這比4GB大得多)。這意味着,對於爲IO保留的地址空間(例如上面提到的視頻地址),內存不會丟失,您可以簡單地將它映射到地址空間的其他位置。

  • 如果在IO地址空間使用的內存讀/寫操作,這導致在讀/寫外設。 CPU通常不知道是否有IO設備映射到該地址,它只是將請求的地址發送到總線,然後讀取該值(由外設而不是內存)。

+0

但是接下來是如何給予保護的?即如果有特殊的I/O指令,並且它們在usermode中使用,那麼硬件陷阱/異常。這是在內存映射I/O中完成的嗎? – Dhatri 2012-07-14 09:16:45

+0

我不是保護專家,但據我所知,保護是在邏輯地址空間的層次上完成的。 IO是明確禁止的,但操作系統可能會捕獲異常並模擬IO讀/寫。欲瞭解更多信息,請參閱:http://en.wikipedia.org/wiki/Protected_mode – 2012-07-14 09:23:25

+0

請您詳細說明第二點。 – Dhatri 2012-07-14 09:32:48