日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式客棧
[導(dǎo)讀]關(guān)注、星標嵌入式客棧,干貨及時送達 [導(dǎo)讀] 本文從內(nèi)存管理的發(fā)展歷程角度層層遞進,介紹 MMU 的誕生背景,工作機制。而忽略了具體處理器的具體實現(xiàn)細節(jié),將 MMU 的工作原理從概念上比較清晰的梳理了一遍。 MMU 誕生之前: 在傳統(tǒng)的批處理系統(tǒng)如 DOS 系統(tǒng),應(yīng)

關(guān)注、星標嵌入式客棧,干貨及時送達

[導(dǎo)讀] 本文從內(nèi)存管理的發(fā)展歷程角度層層遞進,介紹 MMU 的誕生背景,工作機制。而忽略了具體處理器的具體實現(xiàn)細節(jié),將 MMU 的工作原理從概念上比較清晰的梳理了一遍。

MMU 誕生之前:

在傳統(tǒng)的批處理系統(tǒng)如 DOS 系統(tǒng),應(yīng)用程序與操作系統(tǒng)在內(nèi)存中的布局大致如下圖:

  • 應(yīng)用程序直接訪問物理內(nèi)存,操作系統(tǒng)占用一部分內(nèi)存區(qū)。
  • 操作系統(tǒng)的職責(zé)是“加載”應(yīng)用程序,“運行”或“卸載”應(yīng)用程序。

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

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

從總體上而言,需要實現(xiàn)哪些大的策略呢?

  • 所有的應(yīng)用程序能同時駐留內(nèi)存,并由操作系統(tǒng)調(diào)度并發(fā)執(zhí)行。需要提供機制管理 I/O 重疊,CPU 資源競爭訪問。
  • 虛實內(nèi)存映射及交換管理,可以將真實的物理內(nèi)存,有可變或固定的分區(qū),分頁或者分段與虛擬內(nèi)存建立交換映射關(guān)系,并且有效的管理這種映射,實現(xiàn)交換管理。

這樣,衍生而來的一些實現(xiàn)上的更具體的需求:

  • 競爭訪問保護管理需求:需要嚴格的訪問保護,動態(tài)管理哪些內(nèi)存頁/段或區(qū),為哪些應(yīng)用程序所用。這屬于資源的競爭訪問管理需求。
  • 高效的翻譯轉(zhuǎn)換管理需求:需要實現(xiàn)快速高效的映射翻譯轉(zhuǎn)換,否則系統(tǒng)的運行效率將會低下。
  • 高效的虛實內(nèi)存交換需求:需要在實際的虛擬內(nèi)存與物理內(nèi)存進行內(nèi)存頁/段交換過程中快速高效。

總之,在這樣的背景下,MMU 應(yīng)運而生,也由此可見,任何一項技術(shù)的發(fā)展壯大,都必然是需求驅(qū)動的。這是技術(shù)本身發(fā)展的客觀規(guī)律。

內(nèi)存管理的好處

  • 為編程提供方便統(tǒng)一的內(nèi)存空間抽象,在應(yīng)用開發(fā)而言,好似都完全擁有各自獨立的用戶內(nèi)存空間的訪問權(quán)限,這樣隱藏了底層實現(xiàn)細節(jié),提供了統(tǒng)一可移植用戶抽象。
  • 以最小的開銷換取性能最大化,利用 MMU 管理內(nèi)存肯定不如直接對內(nèi)存進行訪問效率高,為什么需要用這樣的機制進行內(nèi)存管理,是因為并發(fā)進程每個進程都擁有完整且相互獨立的內(nèi)存空間。那么實際上內(nèi)存是昂貴的,即使內(nèi)存成本遠比從前便宜,但是應(yīng)用進程對內(nèi)存的尋求仍然無法在實際硬件中,設(shè)計足夠大的內(nèi)存實現(xiàn)直接訪問,即使能滿足,CPU 利用地址總線直接尋址空間也是有限的。

內(nèi)存管理實現(xiàn)總體策略

從操作系統(tǒng)角度來看,虛擬內(nèi)存的基本抽象由操作系統(tǒng)實現(xiàn)完成:

  • 處理器內(nèi)存空間不必與真實的所連接的物理內(nèi)存空間一致。
  • 當應(yīng)用程序請求訪問內(nèi)存時,操作系統(tǒng)將虛擬內(nèi)存地址翻譯成物理內(nèi)存地址,然后完成訪問。

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

從而這樣的機制,虛擬內(nèi)存使得應(yīng)用程序不用將其全部內(nèi)容都一次性駐留在內(nèi)存中執(zhí)行:

  • 節(jié)省內(nèi)存:很多應(yīng)用程序都不必讓其全部內(nèi)容一次性加載駐留在內(nèi)存中,那么這樣的好處是顯而易見,即使硬件系統(tǒng)配置多大的內(nèi)存,內(nèi)存在系統(tǒng)中仍然是最為珍貴的資源。所以這種技術(shù)節(jié)省內(nèi)存的好處是顯而易見的。
  • 使得應(yīng)用程序以及操作系統(tǒng)更具靈活性
    • 操作系統(tǒng)根據(jù)應(yīng)用程序的動態(tài)運行時行為靈活的分配內(nèi)存給應(yīng)用程序。
    • 使得應(yīng)用程序可以使用比實際物理內(nèi)存多或少的內(nèi)存空間。

MMU 以及 TLB

MMU(Memory Management Unit)內(nèi)存管理單元

  • 一種硬件電路單元負責(zé)將虛擬內(nèi)存地址轉(zhuǎn)換為物理內(nèi)存地址
  • 所有的內(nèi)存訪問都將通過 MMU 進行轉(zhuǎn)換,除非沒有使能 MMU。

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

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

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

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

  • 固定大小分區(qū)機制

  • 可變大小分區(qū)機制

固定大小區(qū)片機制

通過這樣一種概念上的策略,將物理內(nèi)存分成固定等大小的片:

  • 每一個片提供一個基地址
  • 實際尋址,物理地址=某片基址+虛擬地址
  • 片基址由操作系統(tǒng)在進程動態(tài)運行時動態(tài)加載

這種策略實現(xiàn),其優(yōu)勢在于簡易,切換快速。但是該策略也帶來明顯的劣勢:

  • 內(nèi)部碎片:一個進程不使用的分區(qū)中的內(nèi)存對其他進程而言無法使用
  • 一種分區(qū)大小并不能滿足所有應(yīng)用進程所需。

可變大小分區(qū)機制

內(nèi)存被劃分為可變大小的區(qū)塊進行映射交換管理:

  • 需要提供基址以及可變大小邊界,可變大小邊界用于越界保護。
  • 實際尋址,物理地址=某片基址+虛擬地址

那么這種策略其優(yōu)勢在于沒有內(nèi)部內(nèi)存碎片,分配剛好夠進程所需的大小。但是劣勢在于,在加載和卸載的動態(tài)過程中會產(chǎn)生碎片。

分頁機制

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

  • 從應(yīng)用程序(進程)角度看內(nèi)存是連續(xù)的 0-N 的分頁的虛擬地址空間。
  • 物理內(nèi)存角度看,內(nèi)存頁是分散在整個物理存儲中
  • 這種映射關(guān)系對應(yīng)用程序不可見,隱藏了實現(xiàn)細節(jié)。

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

  • 虛擬地址包含了兩個部分: 虛擬頁序號 VPN(virtual paging number)以及偏移量
  • 虛擬頁序號 VPN頁表(Page Table)的索引
  • 頁表(Page Table)維護了頁框號(Page frame number PFN)
  • 物理地址由 PFN::Offset進行解析。

舉個栗子,如下圖所示:

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

如何管理頁表

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

以二級分頁機制為例:

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

  • TLB 將虛擬頁翻譯成 PTE,這個工作可在單周期指令完成。
  • TLB 由硬件實現(xiàn)
    • 完全關(guān)聯(lián)緩存(并行查找所有條目)
    • 緩存索引是虛擬頁碼
    • 緩存內(nèi)容是 PTE
    • 則由 PTE+offset,可直接計算出物理地址

TLB 加載

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

  • 由操作系統(tǒng)加載,操作系統(tǒng)找到對應(yīng)的 PTE,而后加載到 TLB。格式比較靈活。
  • MMU 硬件負責(zé),由操作系統(tǒng)維護頁表,MMU 直接訪問頁表,頁表格式嚴格依賴硬件設(shè)計格式。

總結(jié)一下

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

留言區(qū)

END

果喜歡右下點個在看,也會讓我倍感鼓舞

往期精彩推薦,點擊即可閱讀




抽象思想解讀Linux進程描述符
讀U-Boot源碼-C語言編程大法總結(jié)篇一
讀U-Boot源碼-C語言編程技巧總結(jié)篇二
基于Buildroot的Linux構(gòu)建之根文件系統(tǒng)
手把手教系列之移動平均濾波器C實現(xiàn)
手把手教系列之IIR數(shù)字濾波器設(shè)計實現(xiàn)
手把手教系列之梳狀濾波器設(shè)計實現(xiàn)
Linux 內(nèi)核架構(gòu)分析

關(guān)注置頂:掃描左下二維碼關(guān)注公眾號加星

討論加群:掃描右下二維碼添加,發(fā)送“加群”

關(guān)注

加群

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉