在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MMU的工作原理梳理

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

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

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

RJNfUr.jpeg

應(yīng)用程序直接訪問(wèn)物理內(nèi)存,操作系統(tǒng)占用一部分內(nèi)存區(qū)。

操作系統(tǒng)的職責(zé)是“加載”應(yīng)用程序,“運(yùn)行”或“卸載”應(yīng)用程序。

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

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

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

所有的應(yīng)用程序能同時(shí)駐留內(nèi)存,并由操作系統(tǒng)調(diào)度并發(fā)執(zhí)行。需要提供機(jī)制管理 I/O 重疊,CPU 資源競(jìng)爭(zhēng)訪問(wèn)。

虛實(shí)內(nèi)存映射及交換管理,可以將真實(shí)的物理內(nèi)存,有可變或固定的分區(qū),分頁(yè)或者分段與虛擬內(nèi)存建立交換映射關(guān)系,并且有效的管理這種映射,實(shí)現(xiàn)交換管理。

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

競(jìng)爭(zhēng)訪問(wèn)保護(hù)管理需求:需要嚴(yán)格的訪問(wèn)保護(hù),動(dòng)態(tài)管理哪些內(nèi)存頁(yè)/段或區(qū),為哪些應(yīng)用程序所用。這屬于資源的競(jìng)爭(zhēng)訪問(wèn)管理需求。

高效的翻譯轉(zhuǎn)換管理需求:需要實(shí)現(xiàn)快速高效的映射翻譯轉(zhuǎn)換,否則系統(tǒng)的運(yùn)行效率將會(huì)低下。

高效的虛實(shí)內(nèi)存交換需求:需要在實(shí)際的虛擬內(nèi)存與物理內(nèi)存進(jìn)行內(nèi)存頁(yè)/段交換過(guò)程中快速高效。

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

內(nèi)存管理的好處為編程提供方便統(tǒng)一的內(nèi)存空間抽象,在應(yīng)用開(kāi)發(fā)而言,好似都完全擁有各自獨(dú)立的用戶(hù)內(nèi)存空間的訪問(wèn)權(quán)限,這樣隱藏了底層實(shí)現(xiàn)細(xì)節(jié),提供了統(tǒng)一可移植用戶(hù)抽象。

以最小的開(kāi)銷(xiāo)換取性能最大化,利用 MMU 管理內(nèi)存肯定不如直接對(duì)內(nèi)存進(jìn)行訪問(wèn)效率高,為什么需要用這樣的機(jī)制進(jìn)行內(nèi)存管理,是因?yàn)椴l(fā)進(jìn)程每個(gè)進(jìn)程都擁有完整且相互獨(dú)立的內(nèi)存空間。那么實(shí)際上內(nèi)存是昂貴的,即使內(nèi)存成本遠(yuǎn)比從前便宜,但是應(yīng)用進(jìn)程對(duì)內(nèi)存的尋求仍然無(wú)法在實(shí)際硬件中,設(shè)計(jì)足夠大的內(nèi)存實(shí)現(xiàn)直接訪問(wèn),即使能滿(mǎn)足,CPU 利用地址總線直接尋址空間也是有限的。

內(nèi)存管理實(shí)現(xiàn)總體策略從操作系統(tǒng)角度來(lái)看,虛擬內(nèi)存的基本抽象由操作系統(tǒng)實(shí)現(xiàn)完成:

處理器內(nèi)存空間不必與真實(shí)的所連接的物理內(nèi)存空間一致。

當(dāng)應(yīng)用程序請(qǐng)求訪問(wèn)內(nèi)存時(shí),操作系統(tǒng)將虛擬內(nèi)存地址翻譯成物理內(nèi)存地址,然后完成訪問(wèn)。

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

VjmEra.png

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

節(jié)省內(nèi)存:很多應(yīng)用程序都不必讓其全部?jī)?nèi)容一次性加載駐留在內(nèi)存中,那么這樣的好處是顯而易見(jiàn),即使硬件系統(tǒng)配置多大的內(nèi)存,內(nèi)存在系統(tǒng)中仍然是最為珍貴的資源。所以這種技術(shù)節(jié)省內(nèi)存的好處是顯而易見(jiàn)的。

使得應(yīng)用程序以及操作系統(tǒng)更具靈活性。

操作系統(tǒng)根據(jù)應(yīng)用程序的動(dòng)態(tài)運(yùn)行時(shí)行為靈活的分配內(nèi)存給應(yīng)用程序。

使得應(yīng)用程序可以使用比實(shí)際物理內(nèi)存多或少的內(nèi)存空間。

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

一種硬件電路單元負(fù)責(zé)將虛擬內(nèi)存地址轉(zhuǎn)換為物理內(nèi)存地址

所有的內(nèi)存訪問(wèn)都將通過(guò) MMU 進(jìn)行轉(zhuǎn)換,除非沒(méi)有使能 MMU。

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

RZRrMn.png

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

EzaiYz.png

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

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

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

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

固定大小區(qū)片機(jī)制通過(guò)這樣一種概念上的策略,將物理內(nèi)存分成固定等大小的片:

每一個(gè)片提供一個(gè)基地址

實(shí)際尋址,物理地址=某片基址+虛擬地址

片基址由操作系統(tǒng)在進(jìn)程動(dòng)態(tài)運(yùn)行時(shí)動(dòng)態(tài)加載

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

內(nèi)部碎片:一個(gè)進(jìn)程不使用的分區(qū)中的內(nèi)存對(duì)其他進(jìn)程而言無(wú)法使用

一種分區(qū)大小并不能滿(mǎn)足所有應(yīng)用進(jìn)程所需。

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

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

實(shí)際尋址,物理地址=某片基址+虛擬地址

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

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

從應(yīng)用程序(進(jìn)程)角度看內(nèi)存是連續(xù)的 0-N 的分頁(yè)的虛擬地址空間。

物理內(nèi)存角度看,內(nèi)存頁(yè)是分散在整個(gè)物理存儲(chǔ)中

這種映射關(guān)系對(duì)應(yīng)用程序不可見(jiàn),隱藏了實(shí)現(xiàn)細(xì)節(jié)。

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

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

虛擬頁(yè)序號(hào) VPN是 頁(yè)表(Page Table)的索引

頁(yè)表(Page Table)維護(hù)了頁(yè)框號(hào)(Page frame number PFN)

物理地址由 PFN::Offset進(jìn)行解析。

舉個(gè)栗子,如下圖所示:

FZ7VVb.png

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

fAjqUz.png

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

以二級(jí)分頁(yè)機(jī)制為例:

ymEjM3.png

單級(jí)頁(yè)表已然有不小的開(kāi)銷(xiāo),查詢(xún)頁(yè)表以及取數(shù),而二級(jí)分頁(yè)機(jī)制,因?yàn)樾枰樵?xún)兩次頁(yè)表,則將這種開(kāi)銷(xiāo)再加一倍。那么如何提高效率呢?其實(shí)前面提到一個(gè)概念一直還沒(méi)有深入描述 TLB,將翻譯工作由硬件緩存 cache,這就是 TLB 存在的意義。

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

TLB 由硬件實(shí)現(xiàn)

完全關(guān)聯(lián)緩存(并行查找所有條目)

緩存索引是虛擬頁(yè)碼

緩存內(nèi)容是 PTE

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

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

由操作系統(tǒng)加載,操作系統(tǒng)找到對(duì)應(yīng)的 PTE,而后加載到 TLB。格式比較靈活。

MMU 硬件負(fù)責(zé),由操作系統(tǒng)維護(hù)頁(yè)表,MMU 直接訪問(wèn)頁(yè)表,頁(yè)表格式嚴(yán)格依賴(lài)硬件設(shè)計(jì)格式。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19286

    瀏覽量

    229853
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3025

    瀏覽量

    74056
  • MMU
    MMU
    +關(guān)注

    關(guān)注

    0

    文章

    91

    瀏覽量

    18291
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    發(fā)電機(jī)的基本工作原理 發(fā)電機(jī)交流和直流工作原理

    發(fā)電機(jī)的基本工作原理 發(fā)電機(jī)的工作原理基于法拉第電磁感應(yīng)定律,即當(dāng)導(dǎo)體在磁場(chǎng)中移動(dòng)時(shí),會(huì)在導(dǎo)體中產(chǎn)生電動(dòng)勢(shì)(電壓)。這種電動(dòng)勢(shì)可以驅(qū)動(dòng)電流流動(dòng),從而產(chǎn)生電能。 交流發(fā)電機(jī)的工作原理 交流發(fā)電機(jī)(AC
    的頭像 發(fā)表于 11-29 09:17 ?1054次閱讀

    母線工作原理

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

    輔助電源的工作原理

     輔助電源的工作原理主要涉及在主電源發(fā)生故障或不穩(wěn)定時(shí),自動(dòng)切換到備用電源,以保證設(shè)備的持續(xù)供電。以下是關(guān)于輔助電源工作原理的詳細(xì)解釋?zhuān)?/div>
    的頭像 發(fā)表于 10-21 14:56 ?417次閱讀

    電子煙PCBA工作原理概括

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

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

    成像器件,也稱(chēng)為圖像傳感器,是一種將光信號(hào)轉(zhuǎn)換為電信號(hào)的設(shè)備,廣泛應(yīng)用于攝影、視頻監(jiān)控、醫(yī)學(xué)成像、衛(wèi)星成像、工業(yè)檢測(cè)等領(lǐng)域。成像器件的工作原理涉及到光學(xué)、電子學(xué)、材料科學(xué)等多個(gè)學(xué)科的知識(shí)。 成像器件
    的頭像 發(fā)表于 10-14 14:05 ?342次閱讀

    鋅銀電池的工作原理

    鋅銀電池的工作原理主要基于鋅和銀兩種金屬之間的氧化還原反應(yīng)。以下是鋅銀電池工作原理的詳細(xì)解釋?zhuān)?/div>
    的頭像 發(fā)表于 10-03 14:59 ?1320次閱讀

    CAN總線控制器的工作原理

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

    光線示波器的工作原理

    光線示波器的工作原理主要基于電、磁、光和機(jī)械系統(tǒng)的綜合作用,其詳細(xì)過(guò)程如下:
    的頭像 發(fā)表于 09-21 16:09 ?647次閱讀

    串行接口的工作原理和結(jié)構(gòu)

    串行接口(Serial Interface)的工作原理和結(jié)構(gòu)是理解其在計(jì)算機(jī)與外部設(shè)備之間數(shù)據(jù)傳輸方式的重要基礎(chǔ)。以下將詳細(xì)闡述串行接口的工作原理及其典型結(jié)構(gòu)。
    的頭像 發(fā)表于 08-25 17:01 ?1713次閱讀

    VCO的工作原理是什么

    VCO(Voltage-Controlled Oscillator,電壓控制振蕩器)的工作原理是基于電子器件的非線性特性,通過(guò)改變輸入電壓來(lái)調(diào)整輸出信號(hào)的頻率。以下是對(duì)VCO工作原理的詳細(xì)闡述,包括其電路結(jié)構(gòu)、工作機(jī)制、性能參數(shù)
    的頭像 發(fā)表于 08-20 17:16 ?1877次閱讀

    驅(qū)動(dòng)器的工作原理

    驅(qū)動(dòng)器的工作原理 驅(qū)動(dòng)器,又稱(chēng)為執(zhí)行器,是將電能、氣能、液壓能等能量轉(zhuǎn)換為機(jī)械能的裝置。驅(qū)動(dòng)器廣泛應(yīng)用于工業(yè)自動(dòng)化、機(jī)器人、航空航天、汽車(chē)制造等領(lǐng)域。本文將詳細(xì)介紹驅(qū)動(dòng)器的工作原理、分類(lèi)、特點(diǎn)
    的頭像 發(fā)表于 06-10 16:08 ?2358次閱讀

    霍爾開(kāi)關(guān)的工作原理及應(yīng)用

    霍爾開(kāi)關(guān)的工作原理及應(yīng)用
    的頭像 發(fā)表于 04-09 10:29 ?3193次閱讀
    霍爾開(kāi)關(guān)的<b class='flag-5'>工作原理</b>及應(yīng)用

    IGBT器件的結(jié)構(gòu)和工作原理

    IGBT器件的結(jié)構(gòu)和工作原理
    的頭像 發(fā)表于 02-21 09:41 ?1813次閱讀
    IGBT器件的結(jié)構(gòu)和<b class='flag-5'>工作原理</b>

    基準(zhǔn)電壓芯片的工作原理是什么?

    基準(zhǔn)電壓芯片的工作原理是什么? 基準(zhǔn)電壓芯片是一種常用于電子設(shè)備中的重要元件,用于產(chǎn)生穩(wěn)定的電壓信號(hào)。其工作原理涉及到穩(wěn)壓原理、參考電壓和反饋控制等方面,下面將詳細(xì)介紹基準(zhǔn)電壓芯片的工作原理。 一
    的頭像 發(fā)表于 01-29 15:33 ?3183次閱讀

    ev電機(jī)的工作原理是什么

    作為電動(dòng)汽車(chē)的核心部件,電動(dòng)機(jī)(EV電機(jī))的工作原理是實(shí)現(xiàn)車(chē)輛驅(qū)動(dòng)力的轉(zhuǎn)換,將電能轉(zhuǎn)變?yōu)闄C(jī)械能。EV電機(jī)的工作原理主要包括電磁感應(yīng)定理、電磁場(chǎng)、電流控制等方面。下面將從原理、結(jié)構(gòu)和工作過(guò)程三個(gè)方面來(lái)
    的頭像 發(fā)表于 01-08 10:04 ?1562次閱讀
    主站蜘蛛池模板: 亚洲理论在线| 久久天天| 五月欧美| 亚洲人毛茸茸bbxx| 免费一级特黄特色黄大任片| 夜夜春夜夜夜夜猛噜噜噜噜噜| 国产精品免费久久| ww欧洲ww在线视频看| 末满18以下勿进色禁网站| 天天躁夜夜躁狠狠躁2021a| 狠狠色噜噜狠狠狠狠2018 | 久久久久国产一级毛片高清板 | 天堂成人在线| 婷婷在线免费观看| 欧美日本综合| 色视频日本| 高清一区高清二区视频| 女毛片| www.999精品视频观看免费| 亚洲人成在线精品不卡网| 五月激情六月婷婷| 悠悠影院欧美日韩国产| 免费看h视频| 欧美中字| 久久久久女人精品毛片| 一级伦奸视频| free性欧美高清另类| 91成人在线免费视频| 拍真实国产伦偷精品| 欧美午夜在线观看| 性香港xxxxx免费视频播放| swag系列国产精品| 亚洲乱码一二三四区| 网友偷自拍原创区| 亚洲最新黄色网址| 久久国产美女免费观看精品| 好男人社区在线观看www| 六月丁香激情综合成人| 欧美色操| 夜夜操天天操| 韩漫免费网站无遮挡羞羞漫画|