色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

鴻蒙內(nèi)核源碼分析:內(nèi)存管理在管什么?

鴻蒙系統(tǒng)HarmonyOS ? 來(lái)源:my.oschina ? 作者:my.oschina ? 2021-04-24 09:38 ? 次閱讀

請(qǐng)想一個(gè)問(wèn)題,內(nèi)核本身也是程序要在內(nèi)存運(yùn)行,用戶(hù)程序一樣也要在內(nèi)存運(yùn)行,大家都在一個(gè)窩里吃飯,你憑什么就管我了.好像內(nèi)核程序是主子,用戶(hù)程序是奴才似的.

哎!其實(shí)用戶(hù)進(jìn)程就是內(nèi)核的一個(gè)個(gè)奴才,被捏的死死的.按不住奴才那這主子就不合格,就不是一個(gè)穩(wěn)定系統(tǒng).請(qǐng)想想實(shí)際內(nèi)存就這么點(diǎn)大,如何滿(mǎn)足眾多用戶(hù)進(jìn)程的需求?內(nèi)核空間和用戶(hù)空間如何隔離? 如何防止訪(fǎng)問(wèn)亂串? 如何分配/釋放,防止碎片化?空間不夠了又如何置換到硬盤(pán)?想想頭都大了。內(nèi)核這當(dāng)家的主子真是不容易,這些都是他要解決的問(wèn)題, 但欲戴其冠,必承其重.

先說(shuō)如果沒(méi)有內(nèi)存管理會(huì)怎樣?

那就是個(gè)奴才們能把主子給活活踩死,想想主奴不分,吃喝拉撒睡都在一起,稱(chēng)兄道弟的想干啥?沒(méi)規(guī)矩不成方圓嘛,這事業(yè)肯定搞不大,單片機(jī)時(shí)代就是這種情況.裸機(jī)編程,指針可以隨便亂飛,數(shù)據(jù)可以隨意覆蓋,沒(méi)有劃定邊界,沒(méi)有明確職責(zé),沒(méi)有特權(quán)指令,沒(méi)有地址保護(hù),你還想像java開(kāi)發(fā)一樣,只管new內(nèi)存,不去釋放,應(yīng)用可以隨便崩但系統(tǒng)跑的妥妥的?想的美!直接系統(tǒng)死機(jī),甚至開(kāi)機(jī)都開(kāi)不了,主板直接報(bào)廢了. 所以不能運(yùn)行很復(fù)雜的程序,盡量可控,而且更是不可能支持應(yīng)用的動(dòng)態(tài)加載運(yùn)行.隊(duì)伍大了就不好帶了,方法得換,游擊隊(duì)的做法不適合規(guī)模作戰(zhàn),內(nèi)存就需要管理了,而且是 5A級(jí)的嚴(yán)格管理。

內(nèi)存管理在管什么?

簡(jiǎn)單說(shuō)就是給主子賦能,擁有超級(jí)權(quán)利,為什么就他有? 因?yàn)樗葋?lái),掌握了先機(jī).它定好了游戲規(guī)則,你們來(lái)玩.有哪些游戲規(guī)則?

第一: 主奴有別,主子即是裁判又是運(yùn)動(dòng)員,主子有主子地方,奴才們有奴才們待的地方,主子可以在你的空間走來(lái)走去,但你只能在主人劃定的區(qū)域活動(dòng).奴才把自己玩崩了也只是奴才狗屁了,但主人和其他人還會(huì)是好好的.主子有所有特權(quán),比如某個(gè)奴才太囂張了,就直接拖到午門(mén)問(wèn)斬。

第二:奴奴有分,奴才們基本都是平等的,雖有高級(jí)和低級(jí)奴才區(qū)分,但本質(zhì)都是奴才。奴才之間是不能隨意勾連,登門(mén)問(wèn)客的,防止一塊搞政變. 他們都有屬于自己的活動(dòng)空間,而且活動(dòng)空間還巨大巨大,大到奴才們覺(jué)得整個(gè)紫荊城都是他們家的,給你這么大空間你干活才有動(dòng)力,奴才們是鉚足了勁一個(gè)個(gè)盡情的表演各種劇本,有玩電子商務(wù)的,有玩游戲的,有搞直播的等等。。。不愧是紫荊城的主人很有一套,明明只有一個(gè)紫禁城,硬被他整出了N個(gè)紫荊城的感覺(jué)。而且這套駕奴本領(lǐng)還取了個(gè)很好聽(tīng)的名字叫:虛擬內(nèi)存。

看圖:

pIYBAGCDd-2APVJ1AALOmCSjDy4104.png

這是整個(gè)紫荊城的全貌圖,里面的內(nèi)核虛擬空間是主人專(zhuān)用的,里面放的是主人的資料,數(shù)據(jù),奴才永遠(yuǎn)進(jìn)不去,kernel heap也是給主人專(zhuān)用的動(dòng)態(tài)內(nèi)存空間,管理奴才和日常運(yùn)作開(kāi)銷(xiāo)很多時(shí)候需要?jiǎng)討B(tài)申請(qǐng)內(nèi)存,這個(gè)是專(zhuān)門(mén)用來(lái)提供給主人使用的。而所有奴才的空間都在叫用戶(hù)空間的那一塊。你沒(méi)看錯(cuò),是所有奴才的都在那。當(dāng)然實(shí)際情況是用戶(hù)空間比圖中的大的多,因?yàn)橹魅似鋵?shí)用不了多少空間,大部分是留給奴才們干活用了,因?yàn)槠南拗乒P者把用戶(hù)空間壓縮了下。再來(lái)看看奴才空間是啥樣的。看圖

o4YBAGCDd_2ARGmUAAKMc9UqTGQ639.png

這張圖是第一張圖的局部用戶(hù)空間放大圖。里面放的是奴才的私人用品,數(shù)據(jù),task運(yùn)行棧區(qū),動(dòng)態(tài)分配內(nèi)存的堆區(qū),堆區(qū)自下而上,棧區(qū)自上而下中間由映射區(qū)(L1,L2表)隔開(kāi)。這么多奴才在里面不擠嗎?答案是:真不擠 。主人手眼通天,因?yàn)橛昧艘粋€(gè)好幫手解決了這個(gè)問(wèn)題,這個(gè)幫手名叫MMU(李大總管)

MMU是干什么事的?

看下某度對(duì)MMU定義:它是一種負(fù)責(zé)處理中央處理器CPU)的內(nèi)存訪(fǎng)問(wèn)請(qǐng)求的計(jì)算機(jī)硬件。它的功能包括虛擬地址到物理地址的轉(zhuǎn)換(即虛擬內(nèi)存管理)、內(nèi)存保護(hù)、中央處理器高速緩存的控制。通過(guò)它的一番操作,把物理空間成倍成倍的放大,他們之間的映射關(guān)系存放在頁(yè)面中。

好像看懂又好像沒(méi)看懂是吧,到底是干啥的?其實(shí)就是個(gè)地址映射登記中心。記住這兩個(gè)字:映射 看下圖

o4YBAGCDeA-ASRt1AAGgDwa5dNs544.png

物理內(nèi)存可以理解為真實(shí)世界的紫禁城,虛擬內(nèi)存就是被MMU虛擬出來(lái)的比物理頁(yè)面大的多的空間。舉例說(shuō)明大概說(shuō)明下過(guò)程:

有A(廚師),B(文藝青年)兩個(gè)奴才來(lái)到紫禁城,每個(gè)人都很有抱負(fù),主子規(guī)定要先跑去登記處登記活動(dòng)范圍,領(lǐng)回來(lái)一張表叫L1頁(yè)表,上面說(shuō)了大半個(gè)紫禁城你可以跑動(dòng),都是你的,L1頁(yè)表記錄你每個(gè)房間的編號(hào)。其實(shí)奴才們的表都一樣,能跑的范圍也都一樣。 李大總管也有一張私人表叫TLB表,具體玩的呢,看個(gè)例子就明白了.

舉例說(shuō)明

TLB表(李總管的私人表)

真實(shí)房間 當(dāng)前誰(shuí)在用
7 A
8 C
9 B

李大總管的私人表叫TLB(translation lookaside buffer)可翻譯為“地址轉(zhuǎn)換后援緩沖器”,也可簡(jiǎn)稱(chēng)為“快表”。從TLB表可以看出,有三個(gè)真實(shí)的房間, 7,8,9,目前是分配給了A,B,C使用.

奴才們的L1頁(yè)表(當(dāng)然可以有無(wú)數(shù)的奴才表,每個(gè)奴才人手一張)

虛擬房間 真實(shí)房間 作用
A奴才 1 7 廚房拿菜
A奴才 2 8 洗手間
A奴才 3 9 臥室
虛擬房間 真實(shí)房間 作用
B奴才 3 8 音樂(lè)室
B奴才 1 9 美術(shù)室
B奴才 2 7 武術(shù)室
模擬一個(gè)他們的活動(dòng)場(chǎng)景:
奴才 動(dòng)作1 動(dòng)作2 動(dòng)作3 動(dòng)作4
A 廚房拿菜 臥室睡覺(jué) 上洗手間 無(wú)
B 武術(shù)室 美術(shù)室 無(wú) 音樂(lè)室

第一: A要去1號(hào)間廚房拿菜,提交表給李總管,李總管拿表和自己的表對(duì)照,發(fā)現(xiàn)1號(hào)虛擬房間對(duì)應(yīng)的是7號(hào)真實(shí)房間,7號(hào)剛好分配給了A用,蓋章同意.A拿到了自己菜.

真實(shí)房間 當(dāng)前誰(shuí)在用
7 A
8 C
9 B

此時(shí)李總管的表沒(méi)變化. 第二: B要去2號(hào)間練武術(shù),提交表給李總管,李總管拿表和自己的表對(duì)照,發(fā)現(xiàn)1號(hào)虛擬房間對(duì)應(yīng)的是7號(hào)真實(shí)房間,7號(hào)是A在用,不屬于B,里面放的都還是菜呢,咋辦?簡(jiǎn)單,把菜挪出去,把B奴才的武術(shù)設(shè)備裝進(jìn)來(lái),更改自己的表變成了

真實(shí)房間 當(dāng)前誰(shuí)在用
7 B
8 C
9 B

此時(shí)李總管的表變了,三個(gè)真實(shí)房間B用了兩個(gè)了. 第三: A要去3號(hào)間睡覺(jué)了,又提交表給李總管,李總管拿表和自己的表對(duì)照,發(fā)現(xiàn)3號(hào)虛擬房間對(duì)應(yīng)的是9號(hào)真實(shí)房間,9號(hào)剛好分配給了B用了,此時(shí)里面放的還是美術(shù)用品呢.咋辦?簡(jiǎn)單,挪出去,把A奴才的睡覺(jué)設(shè)備裝進(jìn)來(lái),再更改自己的表變成了

真實(shí)房間 當(dāng)前誰(shuí)在用
7 B
8 C
9 A

此時(shí)李總管的表變了,9號(hào)給了A了,而8號(hào)一直在C手里,因?yàn)檫^(guò)程中沒(méi)人用到了8號(hào)房.但繼續(xù)跑下去肯定會(huì)易主.

明白了嗎? 這就是映射的核心思想!對(duì)A,B來(lái)說(shuō),它們只認(rèn) 1,2,3房間,記得自己的房間是干什么用的就行,完全不必知道背后的7,8,9是誰(shuí)在用, 用房間之前提交表單就行了,后面的不用管. 而且各自1,2,3可以重新映射到不一樣的房間, A,B映射是完全獨(dú)立的,看清沒(méi)有它們的123對(duì)應(yīng)的可不都是789的順序.

上面的1,2,3就叫虛擬地址,也叫線(xiàn)性地址. 而789就是物理地址. 如此只有三個(gè)房間都可以給很多很多的奴才使用,讓他們覺(jué)得這三個(gè)房間都是自己的. 完美!!! 當(dāng)然AB也可以有自己虛擬地址789,例如

虛擬房間 真實(shí)房間 作用
A奴才 1 7 廚房拿菜
A奴才 2 8 洗手間
A奴才 3 9 臥室
A奴才 7 19 洗澡
A奴才 8 88 去皇上寢宮偷看
A奴才 9 45 御膳房

編輯:hfy

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

    關(guān)注

    0

    文章

    168

    瀏覽量

    14162
  • 鴻蒙系統(tǒng)
    +關(guān)注

    關(guān)注

    183

    文章

    2636

    瀏覽量

    66475
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    OpenHarmony源碼編譯后燒錄鏡像教程,RK3566鴻蒙開(kāi)發(fā)板演示

    本文介紹瑞芯微主板/開(kāi)發(fā)板編譯OpenHarmony源碼后燒錄鏡像的教程,觸覺(jué)智能Purple Pi OH鴻蒙開(kāi)發(fā)板演示。搭載了瑞芯微RK3566四核處理器,樹(shù)莓派卡片電腦設(shè)計(jì),支持開(kāi)源鴻蒙OpenHarmony3.2-5.0系
    的頭像 發(fā)表于 12-30 10:08 ?127次閱讀
    OpenHarmony<b class='flag-5'>源碼</b>編譯后燒錄鏡像教程,RK3566<b class='flag-5'>鴻蒙</b>開(kāi)發(fā)板演示

    源碼開(kāi)放 智能監(jiān)測(cè)電源管理教程寶典!

    源碼開(kāi)放,今天我們學(xué)習(xí)的是電源管理系統(tǒng)的核心功能模塊,手把手教你如何通過(guò)不同的技術(shù)手段實(shí)現(xiàn)有效的電源管理
    的頭像 發(fā)表于 12-11 09:26 ?295次閱讀
    <b class='flag-5'>源碼</b>開(kāi)放  智能監(jiān)測(cè)電源<b class='flag-5'>管理</b>教程寶典!

    Linux下如何管理虛擬內(nèi)存 使用虛擬內(nèi)存時(shí)的常見(jiàn)問(wèn)題

    Linux系統(tǒng)中,虛擬內(nèi)存管理是操作系統(tǒng)內(nèi)核的一個(gè)重要功能,負(fù)責(zé)管理物理內(nèi)存和磁盤(pán)上的交換空間
    的頭像 發(fā)表于 12-04 09:19 ?520次閱讀

    內(nèi)存管理的硬件結(jié)構(gòu)

    常見(jiàn)的內(nèi)存分配函數(shù)有malloc,mmap等,但大家有沒(méi)有想過(guò),這些函數(shù)在內(nèi)核中是怎么實(shí)現(xiàn)的?換句話(huà)說(shuō),Linux內(nèi)核內(nèi)存管理是怎么實(shí)現(xiàn)的
    的頭像 發(fā)表于 09-04 14:28 ?344次閱讀
    <b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>的硬件結(jié)構(gòu)

    鴻蒙OpenHarmony南向/北向快速開(kāi)發(fā)教程-迅為RK3568開(kāi)發(fā)板

    P13_vendor和device目錄介紹 P14_內(nèi)核編譯腳本構(gòu)建分析 P15_內(nèi)核移植 P16_內(nèi)核移植優(yōu)化 P17_配置電源管理芯片
    發(fā)表于 07-23 10:44

    歡創(chuàng)播報(bào) 華為宣布鴻蒙內(nèi)核已超越Linux內(nèi)核

    1 華為宣布鴻蒙內(nèi)核已超越Linux內(nèi)核 ? 6月21日,在華為開(kāi)發(fā)者大會(huì)上, HarmonyOS NEXT(鴻蒙NEXT)——真正獨(dú)立于安卓和iOS的
    的頭像 發(fā)表于 06-27 11:30 ?871次閱讀

    ESP-IDF內(nèi)核中的內(nèi)存管理如何驗(yàn)證?

    請(qǐng)教一下,ESP-IDF 內(nèi)核中的內(nèi)存管理如何驗(yàn)證
    發(fā)表于 06-19 06:30

    AOSP源碼定制-內(nèi)核驅(qū)動(dòng)編寫(xiě)

    有時(shí)候?yàn)榱?b class='flag-5'>分析一些殼的檢測(cè),需要在內(nèi)核層面對(duì)讀寫(xiě)相關(guān)的操作進(jìn)行監(jiān)控,每次去修改對(duì)應(yīng)的內(nèi)核源碼編譯重刷過(guò)于耗時(shí)耗力,這里就來(lái)嘗試編寫(xiě)一個(gè)內(nèi)核驅(qū)
    的頭像 發(fā)表于 04-23 11:15 ?1316次閱讀
    AOSP<b class='flag-5'>源碼</b>定制-<b class='flag-5'>內(nèi)核</b>驅(qū)動(dòng)編寫(xiě)

    鴻蒙】webview內(nèi)存泄漏問(wèn)題的分析報(bào)告

    1 關(guān)鍵字 webview;內(nèi)存泄漏 2 問(wèn)題描述 問(wèn)題現(xiàn)象: 3.1release 版本和 3.2bete1 版本中, RK3568 上使用 etsWeb 和其他瀏覽器時(shí),webview 所占
    的頭像 發(fā)表于 03-02 15:12 ?2187次閱讀

    Linux內(nèi)核內(nèi)存管理內(nèi)核非連續(xù)物理內(nèi)存分配

    的主要優(yōu)點(diǎn)是避免了外部碎片,而缺點(diǎn)是需要修改內(nèi)核頁(yè)表。顯然,非連續(xù)內(nèi)存區(qū)域的大小必須是4096的倍數(shù)。Linux使用非連續(xù)物理內(nèi)存區(qū)的場(chǎng)景有幾種:(1)為swap區(qū)分配數(shù)據(jù)結(jié)構(gòu);(2)為模塊分配空間
    的頭像 發(fā)表于 02-23 09:44 ?1026次閱讀
    Linux<b class='flag-5'>內(nèi)核</b><b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>之<b class='flag-5'>內(nèi)核</b>非連續(xù)物理<b class='flag-5'>內(nèi)存</b>分配

    Linux內(nèi)核內(nèi)存管理之ZONE內(nèi)存分配器

    內(nèi)核中使用ZONE分配器滿(mǎn)足內(nèi)存分配請(qǐng)求。該分配器必須具有足夠的空閑頁(yè)幀,以便滿(mǎn)足各種內(nèi)存大小請(qǐng)求。
    的頭像 發(fā)表于 02-21 09:29 ?921次閱讀

    鴻蒙內(nèi)核源碼分析:MMU 協(xié)處理器

    1、 ARM C15 協(xié)處理器 ARM 嵌入式應(yīng)用系統(tǒng)中, 很多系統(tǒng)控制由 ARM CP15 協(xié)處理器來(lái)完成的。CP15 協(xié)處理器包含編號(hào) 0-15 的 16 個(gè) 32 位的寄存器。例如,ARM
    的頭像 發(fā)表于 02-20 14:28 ?622次閱讀
    <b class='flag-5'>鴻蒙</b>輕<b class='flag-5'>內(nèi)核</b><b class='flag-5'>源碼</b><b class='flag-5'>分析</b>:MMU 協(xié)處理器

    鴻蒙內(nèi)核源碼分析:Newlib C

    使用 Musl C 庫(kù)的時(shí)候,內(nèi)核提供了基于 LOS_XXX 適配實(shí)現(xiàn) pthread、mqeue、fs、semaphore、time 等模塊的 posix 接口(//kernel/liteos_m
    的頭像 發(fā)表于 02-18 15:41 ?756次閱讀
    <b class='flag-5'>鴻蒙</b>輕<b class='flag-5'>內(nèi)核</b><b class='flag-5'>源碼</b><b class='flag-5'>分析</b>:Newlib C

    鴻蒙開(kāi)發(fā)者預(yù)覽版如何?

    24年的華為鴻蒙發(fā)布會(huì)中表示。預(yù)覽版已經(jīng)向開(kāi)發(fā)者開(kāi)放申請(qǐng),首批支持的機(jī)型有三款分別為華為 Mate 60、華為Mate 60 Pro、華為Mate X5。 其HarmonyOS NEXT去除
    發(fā)表于 02-17 21:54

    linux內(nèi)核主要由哪幾個(gè)部分組成,作用是什么

    Linux內(nèi)核主要由以下幾個(gè)部分組成: 進(jìn)程管理:Linux內(nèi)核負(fù)責(zé)管理和調(diào)度系統(tǒng)中的進(jìn)程。它通過(guò)進(jìn)程調(diào)度算法來(lái)決定哪個(gè)進(jìn)程什么時(shí)間運(yùn)行以
    的頭像 發(fā)表于 01-22 14:34 ?2736次閱讀
    主站蜘蛛池模板: 国产精品97久久久久久AV色戒| 亚洲AV无码国产精品色在线看| 免费人成视频19674不收费| 亚洲成A人片在线观看中文不卡| 在线观看黄色小说| 国产成人精品综合在线| 男女床上黄色| 杨幂被视频在线观看| 国产露脸150部国语对白| 热re99久久精品国99热| 3D内射动漫同人资源在线观看| 狠狠色狠狠色综合系列| 无码国产成人午夜在线观看不卡| china中国gay偷拍| 美女被免费喷白浆视频| 又色又爽又黄gif动态视频| 国内精品久久影视免费| 天天插天天舔| 成年色黄APP下载| 欧美午夜精品一区二区蜜桃| 中文在线无码高潮潮喷在线| 精品视频在线观看视频免费视频| 无限资源在线观看完整版免费下载| 草莓湿漉漉是好事还是恶性| 暖暖直播免费观看韩国| 2021精品乱码多人收藏| 久久综合丁香激情久久| 一个人看www| 久久精品视频uu| 在教室做啊好大用力| 久久精品99热超碰| 语文老师扒开胸罩喂我奶| 久久精品电影| 张津瑜的9分58秒7段免费| 久久精品热播在线看| 姉调无修版ova国语版| 久久午夜宫电影网| 973午夜伦伦电影论片| 麻豆狠色伊人亚洲综合网站| 在线观看成人免费| 久久久久国产精品嫩草影院|