那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MMU的工作原理梳理

璟琰乀 ? 來源:一口Linux ? 作者:一口Linux ? 2020-12-17 16:13 ? 次閱讀

本文從內存管理的發展歷程角度層層遞進,介紹 MMU 的誕生背景,工作機制。而忽略了具體處理器的具體實現細節,將 MMU 的工作原理從概念上比較清晰的梳理了一遍。

MMU 誕生之前:在傳統的批處理系統如 DOS 系統,應用程序與操作系統在內存中的布局大致如下圖:

RJNfUr.jpeg

應用程序直接訪問物理內存,操作系統占用一部分內存區。

操作系統的職責是“加載”應用程序,“運行”或“卸載”應用程序。

如果我們一直是單任務處理,則不會有任何問題,也或者應用程序所需的內存總是非常小,則這種架構是不會有任何問題的。然而隨著計算機科學技術的發展,所需解決的問題越來越復雜,單任務批處理已不能滿足需求了。而且應用程序需要的內存量也越來越大。而且伴隨著多任務同時處理的需求,這種技術架構已然不能滿足需求了,早先的多任務處理系統是怎么運作的呢?

程序員將應用程序分段加載執行,但是分段是一個苦力活。而且死板枯燥。此時聰明的計算機科學家想到了好辦法,提出來虛擬內存的思想。程序所需的內存可以遠超物理內存的大小,將當前需要執行的留在內存中,而不需要執行的部分留在磁盤中,這樣同時就可以滿足多應用程序同時駐留內存能并發執行了。

從總體上而言,需要實現哪些大的策略呢?

所有的應用程序能同時駐留內存,并由操作系統調度并發執行。需要提供機制管理 I/O 重疊,CPU 資源競爭訪問。

虛實內存映射及交換管理,可以將真實的物理內存,有可變或固定的分區,分頁或者分段與虛擬內存建立交換映射關系,并且有效的管理這種映射,實現交換管理。

這樣,衍生而來的一些實現上的更具體的需求:

競爭訪問保護管理需求:需要嚴格的訪問保護,動態管理哪些內存頁/段或區,為哪些應用程序所用。這屬于資源的競爭訪問管理需求。

高效的翻譯轉換管理需求:需要實現快速高效的映射翻譯轉換,否則系統的運行效率將會低下。

高效的虛實內存交換需求:需要在實際的虛擬內存與物理內存進行內存頁/段交換過程中快速高效。

總之,在這樣的背景下,MMU 應運而生,也由此可見,任何一項技術的發展壯大,都必然是需求驅動的。這是技術本身發展的客觀規律。

內存管理的好處為編程提供方便統一的內存空間抽象,在應用開發而言,好似都完全擁有各自獨立的用戶內存空間的訪問權限,這樣隱藏了底層實現細節,提供了統一可移植用戶抽象。

以最小的開銷換取性能最大化,利用 MMU 管理內存肯定不如直接對內存進行訪問效率高,為什么需要用這樣的機制進行內存管理,是因為并發進程每個進程都擁有完整且相互獨立的內存空間。那么實際上內存是昂貴的,即使內存成本遠比從前便宜,但是應用進程對內存的尋求仍然無法在實際硬件中,設計足夠大的內存實現直接訪問,即使能滿足,CPU 利用地址總線直接尋址空間也是有限的。

內存管理實現總體策略從操作系統角度來看,虛擬內存的基本抽象由操作系統實現完成:

處理器內存空間不必與真實的所連接的物理內存空間一致。

當應用程序請求訪問內存時,操作系統將虛擬內存地址翻譯成物理內存地址,然后完成訪問。

從應用程序角度來看,應用程序(往往是進程)所使用的地址是虛擬內存地址,從概念上就如下示意圖所示,MMU 在操作系統的控制下負責將虛擬內存實際翻譯成物理內存。

VjmEra.png

從而這樣的機制,虛擬內存使得應用程序不用將其全部內容都一次性駐留在內存中執行:

節省內存:很多應用程序都不必讓其全部內容一次性加載駐留在內存中,那么這樣的好處是顯而易見,即使硬件系統配置多大的內存,內存在系統中仍然是最為珍貴的資源。所以這種技術節省內存的好處是顯而易見的。

使得應用程序以及操作系統更具靈活性。

操作系統根據應用程序的動態運行時行為靈活的分配內存給應用程序。

使得應用程序可以使用比實際物理內存多或少的內存空間。

MMU 以及 TLBMMU(Memory Management Unit)內存管理單元:

一種硬件電路單元負責將虛擬內存地址轉換為物理內存地址

所有的內存訪問都將通過 MMU 進行轉換,除非沒有使能 MMU。

TLB(Translation Lookaside Bu?er)轉譯后備緩沖器: 本質上是 MMU 用于虛擬地址到物理地址轉換表的緩存

RZRrMn.png

這樣一種架構,其最終運行時目的,是為主要滿足下面這樣運行需求:

EzaiYz.png

多進程并發同時并發運行在實際物理內存空間中,而 MMU 充當了一個至關重要的虛擬內存到物理內存的橋梁作用。

那么,這種框架具體從高層級的概念上是怎么做到的呢?事實上,是將物理內存采用分片管理的策略來實現的,那么,從實現的角度將有兩種可選的策略:

固定大小分區機制

可變大小分區機制

固定大小區片機制通過這樣一種概念上的策略,將物理內存分成固定等大小的片:

每一個片提供一個基地址

實際尋址,物理地址=某片基址+虛擬地址

片基址由操作系統在進程動態運行時動態加載

這種策略實現,其優勢在于簡易,切換快速。但是該策略也帶來明顯的劣勢:

內部碎片:一個進程不使用的分區中的內存對其他進程而言無法使用

一種分區大小并不能滿足所有應用進程所需。

可變大小分區機制內存被劃分為可變大小的區塊進行映射交換管理:

需要提供基址以及可變大小邊界,可變大小邊界用于越界保護。

實際尋址,物理地址=某片基址+虛擬地址

那么這種策略其優勢在于沒有內部內存碎片,分配剛好夠進程所需的大小。但是劣勢在于,在加載和卸載的動態過程中會產生碎片。

分頁機制分頁機制采用在虛擬內存空間以及物理內存空間都使用固定大小的分區進行映射管理。

從應用程序(進程)角度看內存是連續的 0-N 的分頁的虛擬地址空間。

物理內存角度看,內存頁是分散在整個物理存儲中

這種映射關系對應用程序不可見,隱藏了實現細節。

分頁機制是如何尋址的呢?這里介紹的設計理念,具體的處理器實現各有細微差異:

虛擬地址包含了兩個部分: 虛擬頁序號 VPN(virtual paging number)以及偏移量

虛擬頁序號 VPN是 頁表(Page Table)的索引

頁表(Page Table)維護了頁框號(Page frame number PFN)

物理地址由 PFN::Offset進行解析。

舉個栗子,如下圖所示:

FZ7VVb.png

還沒有查到具體的物理地址,憋急,再看一下完整解析示例:

fAjqUz.png

如何管理頁表對于 32 位地址空間而言,假定 4K 為分頁大小,則頁表的大小為 100MB,這對于頁表的查詢而言是一個很大的開銷。那么如何減小這種開銷呢?實際運行過程中發現,事實上只需要映射實際使用的很小一部分地址空間。那么在一級頁機制基礎上,延伸出多級頁表機制。

以二級分頁機制為例:

ymEjM3.png

單級頁表已然有不小的開銷,查詢頁表以及取數,而二級分頁機制,因為需要查詢兩次頁表,則將這種開銷再加一倍。那么如何提高效率呢?其實前面提到一個概念一直還沒有深入描述 TLB,將翻譯工作由硬件緩存 cache,這就是 TLB 存在的意義。

TLB 將虛擬頁翻譯成 PTE,這個工作可在單周期指令完成。

TLB 由硬件實現

完全關聯緩存(并行查找所有條目)

緩存索引是虛擬頁碼

緩存內容是 PTE

則由 PTE+offset,可直接計算出物理地址

TLB 加載誰負責加載 TLB 呢?這里可供選擇的有兩種策略:

由操作系統加載,操作系統找到對應的 PTE,而后加載到 TLB。格式比較靈活。

MMU 硬件負責,由操作系統維護頁表,MMU 直接訪問頁表,頁表格式嚴格依賴硬件設計格式。

總結一下從計算機大致發展歷程來了解內存管理的大致發展策略,如何衍生出 MMU,以及固定分片管理、可變分片管理等不同機制的差異,最后衍生出單級分頁管理機制、多級分頁管理機制、TLB 的作用。從概念上相對比較易懂的角度描述了 MMU 的誕生、機制,而忽略了處理器的具體實現細節。作為從概念上更深入的理解 MMU 的工作機理的角度,還是不失為一篇淺顯易懂的文章。責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19409

    瀏覽量

    231195
  • 內存
    +關注

    關注

    8

    文章

    3055

    瀏覽量

    74336
  • MMU
    MMU
    +關注

    關注

    0

    文章

    91

    瀏覽量

    18370
收藏 人收藏

    評論

    相關推薦

    超級電容電池的工作原理

    超級電容電池是一種介于傳統電容器與電池之間的新型儲能裝置。其工作原理主要基于電荷分離和電場存儲,以下是關于超級電容電池工作原理的詳細解釋:
    的頭像 發表于 01-27 11:17 ?156次閱讀

    發電機的基本工作原理 發電機交流和直流工作原理

    發電機的基本工作原理 發電機的工作原理基于法拉第電磁感應定律,即當導體在磁場中移動時,會在導體中產生電動勢(電壓)。這種電動勢可以驅動電流流動,從而產生電能。 交流發電機的工作原理 交流發電機(AC
    的頭像 發表于 11-29 09:17 ?2101次閱讀

    母線工作原理

    電子發燒友網站提供《母線工作原理.pdf》資料免費下載
    發表于 10-26 11:08 ?0次下載
    母線<b class='flag-5'>工作原理</b>

    輔助電源的工作原理

     輔助電源的工作原理主要涉及在主電源發生故障或不穩定時,自動切換到備用電源,以保證設備的持續供電。以下是關于輔助電源工作原理的詳細解釋:
    的頭像 發表于 10-21 14:56 ?536次閱讀

    電子煙PCBA工作原理概括

    電子煙PCBA板工作原理
    的頭像 發表于 10-19 09:53 ?1256次閱讀
    電子煙PCBA<b class='flag-5'>工作原理</b>概括

    成像器件的工作原理是什么

    成像器件,也稱為圖像傳感器,是一種將光信號轉換為電信號的設備,廣泛應用于攝影、視頻監控、醫學成像、衛星成像、工業檢測等領域。成像器件的工作原理涉及到光學、電子學、材料科學等多個學科的知識。 成像器件
    的頭像 發表于 10-14 14:05 ?485次閱讀

    鋅銀電池的工作原理

    鋅銀電池的工作原理主要基于鋅和銀兩種金屬之間的氧化還原反應。以下是鋅銀電池工作原理的詳細解釋:
    的頭像 發表于 10-03 14:59 ?1783次閱讀

    CAN總線控制器的工作原理

    CAN(Controller Area Network,控制器局域網)總線控制器的工作原理涉及多個方面,包括消息傳輸、沖突檢測與解決、總線仲裁等關鍵機制。以下是對CAN總線控制器工作原理的詳細解析,旨在全面闡述其工作原理和機制。
    的頭像 發表于 09-30 11:33 ?1153次閱讀

    光線示波器的工作原理

    光線示波器的工作原理主要基于電、磁、光和機械系統的綜合作用,其詳細過程如下:
    的頭像 發表于 09-21 16:09 ?762次閱讀

    串行接口的工作原理和結構

    串行接口(Serial Interface)的工作原理和結構是理解其在計算機與外部設備之間數據傳輸方式的重要基礎。以下將詳細闡述串行接口的工作原理及其典型結構。
    的頭像 發表于 08-25 17:01 ?1973次閱讀

    推挽驅動芯片的工作原理是什么

    推挽驅動芯片的工作原理是一個復雜而精細的過程,它涉及到電子元件的協同工作以及信號處理的多個層面。
    的頭像 發表于 08-23 14:49 ?1021次閱讀

    VCO的工作原理是什么

    VCO(Voltage-Controlled Oscillator,電壓控制振蕩器)的工作原理是基于電子器件的非線性特性,通過改變輸入電壓來調整輸出信號的頻率。以下是對VCO工作原理的詳細闡述,包括其電路結構、工作機制、性能參數
    的頭像 發表于 08-20 17:16 ?2544次閱讀

    驅動器的工作原理

    驅動器的工作原理 驅動器,又稱為執行器,是將電能、氣能、液壓能等能量轉換為機械能的裝置。驅動器廣泛應用于工業自動化、機器人、航空航天、汽車制造等領域。本文將詳細介紹驅動器的工作原理、分類、特點
    的頭像 發表于 06-10 16:08 ?2556次閱讀

    霍爾開關的工作原理及應用

    霍爾開關的工作原理及應用
    的頭像 發表于 04-09 10:29 ?3737次閱讀
    霍爾開關的<b class='flag-5'>工作原理</b>及應用

    IGBT器件的結構和工作原理

    IGBT器件的結構和工作原理
    的頭像 發表于 02-21 09:41 ?1887次閱讀
    IGBT器件的結構和<b class='flag-5'>工作原理</b>
    百家乐噢门棋牌| bet365娱乐场注册| 百家乐视频美女| 百家乐官网桌游| 枝江市| 赌场风云主题曲| 娱乐城注册送18元| 大发888移动版| 威尼斯人娱乐城打造| 百家乐龙虎台布作弊技巧| 现金百家乐伟易博| 百家乐官网存200送200| 百家乐官网赌场导航| 最新百家乐官网电脑游戏机| 泸定县| 五湖四海娱乐| 百乐门国际网上娱乐| 百家乐官网技巧技巧| 百家乐官网平注常赢玩法技巧| 百家乐官网可以作假吗| 百家乐官网打揽法| 百家乐官网77scs| 喜来登百家乐官网的玩法技巧和规则 | 亿酷棋牌世界官方下载| 百家乐博彩的玩法技巧和规则| 哪里有百家乐游戏下载| 温州百家乐的玩法技巧和规则 | 盈得利百家乐娱乐城| 博发百家乐的玩法技巧和规则 | 太阳城百家乐手机投注| 优博百家乐娱乐城| 足球.百家乐投注网出租| 网络百家乐的玩法技巧和规则| 太阳百家乐破解| 大发888娱乐城客户端| 淘金盈国际线上娱乐| 百家乐官网网投开户| 宝博百家乐官网娱乐城| 游戏机百家乐官网的玩法技巧和规则 | 肯博百家乐官网游戏| 澳门百家乐娱乐城送彩金|