91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

鴻蒙系統(tǒng)HarmonyOS ? 來源:my.oschina ? 作者:my.oschina ? 2021-04-24 09:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

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

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

看圖:

pIYBAGCDd-2APVJ1AALOmCSjDy4104.png

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

o4YBAGCDd_2ARGmUAAKMc9UqTGQ639.png

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

MMU是干什么事的?

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

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

o4YBAGCDeA-ASRt1AAGgDwa5dNs544.png

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

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

舉例說明

TLB表(李總管的私人表)

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

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

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

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

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

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

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

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

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

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

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

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

上面的1,2,3就叫虛擬地址,也叫線性地址. 而789就是物理地址. 如此只有三個(gè)房間都可以給很多很多的奴才使用,讓他們覺得這三個(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)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存管理
    +關(guān)注

    關(guān)注

    0

    文章

    171

    瀏覽量

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

    關(guān)注

    183

    文章

    2642

    瀏覽量

    69857
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux內(nèi)核伙伴系統(tǒng)內(nèi)存申請函數(shù)詳解:從原理到實(shí)戰(zhàn)

    Linux 內(nèi)核中,內(nèi)存管理是整個(gè)系統(tǒng)穩(wěn)定運(yùn)行的基石,而伙伴系統(tǒng)(Buddy System) 作為內(nèi)核物理
    的頭像 發(fā)表于 02-10 16:58 ?3632次閱讀
    Linux<b class='flag-5'>內(nèi)核</b>伙伴系統(tǒng)<b class='flag-5'>內(nèi)存</b>申請函數(shù)詳解:從原理到實(shí)戰(zhàn)

    【「Linux 設(shè)備驅(qū)動(dòng)開發(fā)(第 2 版)」閱讀體驗(yàn)】+讀深入理解Linux內(nèi)核內(nèi)存分配

    作者引入內(nèi)存相關(guān)術(shù)語,物理地址標(biāo)識物理內(nèi)存位置。由于虛擬內(nèi)存機(jī)制,用戶和內(nèi)核從不直接訪問物理地址,而是通過相應(yīng)的邏輯地址來訪問的。MMU(內(nèi)存
    發(fā)表于 01-16 20:05

    rk基于linux/android內(nèi)存管理

    內(nèi)核對容量的識別), 64 位平臺上認(rèn)為所有內(nèi)存都可 用。然后通過一系列 reserve_xxx() 接口從內(nèi)存末尾往前預(yù)留需要的內(nèi)存,最后把自己 relocate 到某段 reser
    的頭像 發(fā)表于 12-15 10:42 ?214次閱讀
    rk基于linux/android<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b>

    開源鴻蒙技術(shù)大會(huì)2025丨OS內(nèi)核與視窗分論壇:筑基開源鴻蒙核心內(nèi)核,共拓視窗技術(shù)邊界

    開源鴻蒙技術(shù)大會(huì)2025 OS內(nèi)核與視窗分論壇湖南長沙國際會(huì)議中心圓滿舉行。來自西北工業(yè)大學(xué)、浙江大學(xué)、廈門大學(xué)、華為等高校和企業(yè)的學(xué)者專家齊聚一堂,圍繞鴻蒙
    的頭像 發(fā)表于 11-20 17:29 ?870次閱讀
    開源<b class='flag-5'>鴻蒙</b>技術(shù)大會(huì)2025丨OS<b class='flag-5'>內(nèi)核</b>與視窗分論壇:筑基開源<b class='flag-5'>鴻蒙</b>核心<b class='flag-5'>內(nèi)核</b>,共拓視窗技術(shù)邊界

    一款基于Java+Spring Boot+Vue的智慧隨訪管理系統(tǒng)源碼

    智慧隨訪管理系統(tǒng)源碼,一款基于Java+Spring Boot+Vue的B/S架構(gòu)醫(yī)院隨訪管理系統(tǒng)源碼,采用前后端分離技術(shù)(Ant-Design+MySQL5),具有自主版權(quán)和落地案例
    的頭像 發(fā)表于 11-13 15:38 ?402次閱讀
    一款基于Java+Spring Boot+Vue的智慧隨訪<b class='flag-5'>管理</b>系統(tǒng)<b class='flag-5'>源碼</b>

    qemu上體驗(yàn)芯來RISC-V處理器運(yùn)行鴻蒙LiteOS-M內(nèi)核

    qemu上體驗(yàn)芯來RISC-V處理器運(yùn)行鴻蒙LiteOS-M內(nèi)核 1.本文概述 2.下載qemu 3.下載鴻蒙LiteOS-M 4.運(yùn)行與測試 5.gdb調(diào)試 1.本文概述
    發(fā)表于 10-31 09:04

    WebGL/Canvas 內(nèi)存泄露分析

    構(gòu)建高性能、長周期運(yùn)行的 WebGL/Canvas 應(yīng)用(如 3D 編輯器、數(shù)據(jù)可視化平臺)時(shí),內(nèi)存管理是一個(gè)至關(guān)重要且極具挑戰(zhàn)性的課題。 開發(fā)者通常面臨的內(nèi)存泄漏問題,其根源遠(yuǎn)比簡
    的頭像 發(fā)表于 10-21 11:40 ?410次閱讀
    WebGL/Canvas <b class='flag-5'>內(nèi)存</b>泄露<b class='flag-5'>分析</b>

    開源鴻蒙MNN AI應(yīng)用開發(fā)與MNN移植經(jīng)驗(yàn)

    本期內(nèi)容由AI Model SIG提供,介紹了開源鴻蒙中,利用MNN開源框架開發(fā)AI應(yīng)用以及基于MNN源碼編譯與Har包封裝的方法。
    的頭像 發(fā)表于 09-04 11:31 ?4569次閱讀
    開源<b class='flag-5'>鴻蒙</b>MNN AI應(yīng)用開發(fā)與MNN移植經(jīng)驗(yàn)

    【匯思博SEEK100開發(fā)板試用體驗(yàn)】開發(fā)板鴻蒙OS搭建QT開發(fā)環(huán)境

    進(jìn)行連接。具體來說,Qt 應(yīng)用的界面會(huì)被渲染在一個(gè) XComponent 組件上,該組件由平臺插件創(chuàng)建和管理底層,事件處理、窗口管理等操作都由這個(gè)插件完成轉(zhuǎn)換,從而保證 Qt 應(yīng)用能在
    發(fā)表于 08-24 18:34

    功率MOS電源管理場景下的發(fā)熱原因分析

    功率MOS電源管理場景下的發(fā)熱原因分析 功率MOS工作過程中不可避免地會(huì)產(chǎn)生熱量,導(dǎo)致溫
    的頭像 發(fā)表于 06-25 17:38 ?702次閱讀
    功率MOS<b class='flag-5'>管</b><b class='flag-5'>在</b>電源<b class='flag-5'>管理</b>場景下的發(fā)熱原因<b class='flag-5'>分析</b>

    開源系統(tǒng)適配:聚徽分享國產(chǎn)工控平板 Linux / 鴻蒙系統(tǒng)下的技術(shù)優(yōu)化

    工業(yè)自動(dòng)化與智能化加速推進(jìn)的當(dāng)下,國產(chǎn)工控平板的系統(tǒng)適配成為提升設(shè)備性能與競爭力的關(guān)鍵環(huán)節(jié)。Linux 和鴻蒙作為開源系統(tǒng),憑借其高度的開放性與可定制性,為國產(chǎn)工控平板帶來新的發(fā)展機(jī)遇。如何對國產(chǎn)
    的頭像 發(fā)表于 06-13 16:29 ?1066次閱讀

    鴻蒙5開發(fā)寶藏案例分享---內(nèi)存優(yōu)化實(shí)戰(zhàn)指南

    卡、或者懷疑內(nèi)存占用高時(shí),第一時(shí)間用這個(gè)命令看看整體情況和各部分占比,快速定位是 JS 層問題還是 Native 層問題。 對比分析不同場景(剛啟動(dòng)、功能操作后、后臺運(yùn)行一段時(shí)間后)多次運(yùn)行命令,對比
    發(fā)表于 06-12 17:15

    鴻蒙5開發(fā)寶藏案例分享---分析幀率問題

    ;opacity</span>濫用)。 圖片尺寸匹配顯示區(qū)域,避免內(nèi)存浪費(fèi)。 結(jié)語 這次深扒鴻蒙文檔,發(fā)現(xiàn)官方其實(shí)埋了不少性能優(yōu)化的“寶藏案例”。實(shí)際開發(fā)中,幀率問題無非集中
    發(fā)表于 06-12 17:07

    鴻蒙5開發(fā)寶藏案例分享---點(diǎn)擊完成時(shí)延分析

    100ms延遲,用戶留存率提升7%!持續(xù)優(yōu)化才能打造極致體驗(yàn)。 立即行動(dòng) : 打開DevEco Profiler分析你的應(yīng)用 定位耗時(shí)最長的3個(gè)操作 應(yīng)用本文任一技巧進(jìn)行優(yōu)化 你有哪些性能優(yōu)化妙招?歡迎評論區(qū)分享交流!? 性能優(yōu)化不是一次性的任務(wù),而是持續(xù)精進(jìn)的藝術(shù)。愿
    發(fā)表于 06-12 17:03

    鴻蒙操作系統(tǒng)首登電腦端,華為開啟鴻蒙辦公新時(shí)代

    2025年5月8日,華為深圳舉辦了鴻蒙電腦技術(shù)與生態(tài)溝通會(huì),鴻蒙操作系統(tǒng)首次電腦端亮相。這既是中國電子信息產(chǎn)業(yè)的歷史性時(shí)刻,也是華為鴻蒙
    發(fā)表于 05-08 14:20 ?6076次閱讀
    <b class='flag-5'>鴻蒙</b>操作系統(tǒng)首登電腦端,華為開啟<b class='flag-5'>鴻蒙</b>辦公新時(shí)代