首頁  >  文章  >  運維  >  為什麼linux需要mmu

為什麼linux需要mmu

WBOY
WBOY原創
2022-08-17 17:45:262610瀏覽

因為mmu可以用來提供虛擬記憶體管理的支援;mmu是「Memory Management Unit」記憶體管理單元的縮寫,是中央處理器中用來管理虛擬記憶體、實體記憶體的控制線路,同時也是負責虛擬位址映射為實體位址以及提供硬體機制的記憶體存取授權。

為什麼linux需要mmu

本教學操作環境:linux7.3系統、Dell G3電腦。

為什麼linux需要mmu

因為現代作業系統普遍採用虛擬記憶體管理(Virtual Memory Management)機制,這需要處理器中的MMU(Memory Management Unit,記憶體管理單元)提供支持。

MMU(Memory Management Unit) :記憶體管理單元,它是中央處理器(CPU)中用來管理虛擬記憶體、實體記憶體的控制線路,同時也負責虛擬位址對應為實體位址,以及提供硬體機制的記憶體存取授權。

記憶體管理單元MMU(memory management unit)的主要功能是虛擬位址(virtual memory addresses)到實體位址(physical addresses)的轉換。除此之外,它還可以實現記憶體保護(memory protection)、快取控制(cache control)、匯流排仲裁(bus arbitration)以及儲存體切換(bank switching)。

工作機制

為什麼linux需要mmu

#CPU將要請求的虛擬位址傳給MMU,然後MMU先在高速快取TLB(Translation Lookaside Buffer)尋找轉換關係,如果找到了對應的實體位址則直接存取;如果找不到則在地址轉換表(Translation Table)裡尋找計算。

虛擬位址

現代的記憶體管理單元是以頁的方式來分區虛擬位址空間(the range of addresses used by the processor)的。頁的大小是2的n次方,通常為數KB。所以虛擬位址就被分成了兩個部分:virtual page number和offset。

為什麼linux需要mmu

頁表項(page table entry)

#上面從虛擬頁號在頁表裡找到的存放實體頁表號的條目就是頁表項(PTE)。 PTE一般佔1個字長,裡面不僅包含了physical page number,還包含了重寫標誌位(dirty bit)、存取控制位(accessed bit)、允許讀寫的進程類型(user/supervisor mode)、是否可以被cached以及映射類型(PTE最後兩位)。

映射

映射方式

#映射方式有兩種,段映射和頁映射。段映射只用到一級頁表,頁映射用到一級頁表和二級頁表。

映射粒度

段映射的映射粒度有兩種,1M section和16M supersection;頁映射的映射粒度有4K small page、64K large page和過時的1K tiny page。

為什麼linux需要mmu

推薦學習:Linux影片教學

#

以上是為什麼linux需要mmu的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn