2014-02-15 90 views
0

MMU用於藉助與該進程相對應的頁表將虛擬地址轉換爲正在運行的進程的物理地址。 當虛擬地址空間等於物理地址空間時,可以使用場景。我們是否真的需要MMU,因爲我們不會有相同虛擬地址空間映射到不同物理地址的情況?當虛擬地址空間等於物理地址空間時,我們是否需要MMU?

比方說

Virtual Address    
| 20 bits (V) | 12 bits(PO) | 

Physical Address 
| 20 bits(PPN) | 12 bits(PO) | 

where V = Virtual Page 
     PO = Page offset 
     PPN = Physical Page Number 

難道我們真的需要頁表每一個過程? 當有多個進程時可能會出現什麼問題?

請忽略緩存的簡化。

回答

2

的MMU確實不是虛擬地址空間映射到不同大小的物理地址空間等等。 MMU的最重要的一點是內存保護,這是相關的,即使兩個地址空間具有相同的尺寸:
的MMU處理映射到物理內存頁的虛擬內存的頁面(例如,4 KB大小的)。

在大多數系統中,不僅是一個虛擬地址空間,而是一個每個進程。在MMU控制下,每個進程只能訪問操作系統允許的頁面(對MMU進行編程)。不同過程的大部分頁面彼此隔離,例如,一個進程不能通過寫入其內存來崩潰另一個進程。

的虛擬到OS控制下的物理頁的映射允許的地址空間隨機化,使得跨虛擬頁讀入讀取的隨機數據,而不是特定的數據邊界的結果(針對例如緩衝區溢出攻擊保護)。

此外,即使有一個單一的過程,網頁可以被視爲讀寫,只讀,只執行,並且訪問被禁止。這允許限制進程以允許的方式訪問其自己的頁面,例如,它可能使執行存儲的「數據」變得不可能。
可以找到更多的信息here

相關問題