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

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

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

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

Linux如何優(yōu)化部分內(nèi)存

麥辣雞腿堡 ? 來(lái)源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-10-08 10:59 ? 次閱讀

我們也可以修改RISC-V Linux的內(nèi)核源碼,解除2M對(duì)齊的限制。我們只需要在setup_vm()函數(shù)中,將原來(lái)的 二級(jí)頁(yè)表改為三級(jí)頁(yè)表 ,這樣kernel入口地址只需要4K對(duì)齊,因此就能將kernel往前挪,從而利用前面的內(nèi)存。

修改代碼

路徑:arch/riscv/mm/init.c

注釋原來(lái)的2M對(duì)齊檢查:

圖片

對(duì)kernel的前2M頁(yè)表映射由二級(jí)頁(yè)表改為三級(jí)頁(yè)表:

//新增一個(gè)PTE
pte_t trampoline_pte[PTRS_PER_PTE] __page_aligned_bss;

create_pgd_mapping(trampoline_pg_dir,PAGE_OFFSET,
                   (uintptr_t)trampoline_pmd,PGDIR_SIZE,PAGE_TABLE);
create_pmd_mapping(trampoline_pmd,PAGE_OFFSET,
                   (uintptr_t)trampoline_pte,PMD_SIZE,PAGE_TABLE);

end_va = PAGE_OFFSET + PMD_SIZE;
for (va = PAGE_OFFSET; va < end_va; va += PAGE_SIZE)
{
    create_pte_mapping(trampoline_pte,PAGE_OFFSET,
                   load_pa + (va - PAGE_OFFSET),
                       PAGE_SIZE,PAGE_KERNEL_EXEC);
}

圖片

對(duì)整個(gè)kernel的頁(yè)表映射由二級(jí)頁(yè)表改為三級(jí)頁(yè)表:

假設(shè)kernel大小為4M+

//定義三個(gè)PTE
pte_t load_sz_pte[PTRS_PER_PTE] __page_aligned_bss;
pte_t load_sz_pte1[PTRS_PER_PTE] __page_aligned_bss;
pte_t load_sz_pte2[PTRS_PER_PTE] __page_aligned_bss;

//=======0-2M======
create_pgd_mapping(early_pg_dir,PAGE_OFFSET,
                   (uintptr_t)early_pmd,PGDIR_SIZE,PAGE_TABLE);
create_pmd_mapping(early_pmd,PAGE_OFFSET,
                   (uintptr_t)load_sz_pte,PMD_SIZE,PAGE_TABLE);

end_va = PAGE_OFFSET + PMD_SIZE;
for (va = PAGE_OFFSET; va < end_va; va += PAGE_SIZE)
{
    create_pte_mapping(load_sz_pte,PAGE_OFFSET,
                   load_pa + (va - PAGE_OFFSET),
                       PAGE_SIZE,PAGE_KERNEL_EXEC);
}

//=======2-4M==========
create_pgd_mapping(early_pg_dir,PAGE_OFFSET + PMD_SIZE,
                   (uintptr_t)early_pmd,PGDIR_SIZE,PAGE_TABLE);
create_pmd_mapping(early_pmd,PAGE_OFFSET,
                   (uintptr_t)load_sz_pte1,PMD_SIZE,PAGE_TABLE);

end_va = PAGE_OFFSET + (PMD_SIZE * 2);
for (va = PAGE_OFFSET + PMD_SIZE; va < end_va; va += PAGE_SIZE)
{
    create_pte_mapping(load_sz_pte1,va,
                   load_pa + (va - PAGE_OFFSET),
                       PAGE_SIZE,PAGE_KERNEL_EXEC);
}

//=======4-6M==========
create_pgd_mapping(early_pg_dir,PAGE_OFFSET + (PMD_SIZE*2),
                   (uintptr_t)early_pmd,PGDIR_SIZE,PAGE_TABLE);
create_pmd_mapping(early_pmd,PAGE_OFFSET,
                   (uintptr_t)load_sz_pte2,PMD_SIZE,PAGE_TABLE);

end_va = PAGE_OFFSET + (PMD_SIZE * 3);
for (va = PAGE_OFFSET + (PMD_SIZE*2); va < end_va; va += PAGE_SIZE)
{
    create_pte_mapping(load_sz_pte2,va,
                   load_pa + (va - PAGE_OFFSET),
                       PAGE_SIZE,PAGE_KERNEL_EXEC);
}

圖片

圖片

通過(guò)以上的代碼修改,就能將Kernel入口地址往前挪1.5M,只給opensbi預(yù)留512KB,這樣RISC-V Linux啟動(dòng)之后,可用物理內(nèi)存就會(huì)增加。

圖片

聲明:本文內(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)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1382

    瀏覽量

    40430
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11345

    瀏覽量

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

    關(guān)注

    8

    文章

    3055

    瀏覽量

    74337
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux內(nèi)存管理是什么,Linux內(nèi)存管理詳解

    Linux內(nèi)存管理 Linux內(nèi)存管理是一個(gè)非常復(fù)雜的過(guò)程,主要分成兩個(gè)大的部分:內(nèi)核的內(nèi)存
    的頭像 發(fā)表于 05-11 17:54 ?6158次閱讀
    <b class='flag-5'>Linux</b>的<b class='flag-5'>內(nèi)存</b>管理是什么,<b class='flag-5'>Linux</b>的<b class='flag-5'>內(nèi)存</b>管理詳解

    linux內(nèi)存相關(guān)知識(shí)科普

    linux 內(nèi)存組織結(jié)構(gòu)和頁(yè)面布局,內(nèi)存碎片產(chǎn)生原因和優(yōu)化算法。
    發(fā)表于 08-08 10:57 ?406次閱讀

    走進(jìn)Linux內(nèi)存系統(tǒng)探尋內(nèi)存管理的機(jī)制和奧秘

    Linux 內(nèi)存是后臺(tái)開(kāi)發(fā)人員,需要深入了解的計(jì)算機(jī)資源。合理的使用內(nèi)存,有助于提升機(jī)器的性能和穩(wěn)定性。本文主要介紹Linux 內(nèi)存組織結(jié)構(gòu)
    的頭像 發(fā)表于 01-05 09:47 ?1692次閱讀

    Linux內(nèi)存相關(guān)知識(shí)科普

    Linux 內(nèi)存是后臺(tái)開(kāi)發(fā)人員,需要深入了解的計(jì)算機(jī)資源。合理的使用內(nèi)存,有助于提升機(jī)器的性能和穩(wěn)定性。本文主要介紹**Linu****x 內(nèi)存組織結(jié)構(gòu)和頁(yè)面布局,
    發(fā)表于 07-25 14:43 ?758次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)存</b>相關(guān)知識(shí)科普

    單片機(jī)定義變量字符的那部分內(nèi)存已經(jīng)滿(mǎn)了,怎么才能繼續(xù)定義新的字符?

    我用的比較老的4580芯片,需要定義的字符很多,用于OLED顯示屏幕顯示,但是定義字符的那部分內(nèi)存已經(jīng)滿(mǎn)了,無(wú)法再加入新的字符,請(qǐng)問(wèn)有什么好的解決辦法嗎?請(qǐng)不要告訴我換芯片,因?yàn)殡娐钒迨歉鶕?jù)這個(gè)芯片制作的,有沒(méi)有什么好的容易的解決辦法?跪求
    發(fā)表于 03-06 17:15

    怎樣在Linux內(nèi)核中預(yù)留一部分內(nèi)存空間作特殊用途呢

    有時(shí)我們需要在 Linux 內(nèi)核中預(yù)留一部分內(nèi)存空間用作特殊用途(給安全模塊使用,給其它處理器使用,或是給特定的驅(qū)動(dòng)程序使用等),在 Device Tree 中有提供兩種方法對(duì)預(yù)留內(nèi)存進(jìn)行配置
    發(fā)表于 12-29 07:16

    一文解析Linux系統(tǒng)保留內(nèi)存的初始化流程

    1、Linux系統(tǒng)保留內(nèi)存的初始化流程在啟動(dòng)過(guò)程中會(huì)打印出如下信息,這些信息為linux呈現(xiàn)出系統(tǒng)下的保留內(nèi)存空間。本文只介紹基本的保留內(nèi)存
    發(fā)表于 06-30 16:27

    Linux內(nèi)存初始化

    之前有幾篇博客詳細(xì)介紹了Xen的內(nèi)存初始化,確實(shí)感覺(jué)這部分內(nèi)容蠻復(fù)雜的。這兩天在看Linux內(nèi)核啟動(dòng)中內(nèi)存的初始化,也是看的云里霧里的,想嘗試下邊看邊寫(xiě),在寫(xiě)博客的過(guò)程中慢慢思考,最后
    發(fā)表于 10-12 11:16 ?0次下載

    關(guān)于內(nèi)存優(yōu)化知識(shí)你知道多少呢?

    為了優(yōu)化應(yīng)用內(nèi)存,你應(yīng)該知道是什么消耗了你應(yīng)用的大部分內(nèi)存,答案就是Texture(紋理)!它幾乎占據(jù)了90%的應(yīng)用內(nèi)存。那么我們應(yīng)該盡力去減小我們應(yīng)用的紋理
    發(fā)表于 08-31 10:36 ?3051次閱讀

    你知道linux的cache memory?

    當(dāng)你讀寫(xiě)文件的時(shí)候,Linux內(nèi)核為了提高讀寫(xiě)性能與速度,會(huì)將文件在內(nèi)存中進(jìn)行緩存,這部分內(nèi)存就是Cache Memory(緩存內(nèi)存)。即使你的程序運(yùn)行結(jié)束后,Cache Memory
    發(fā)表于 04-26 15:49 ?1258次閱讀

    怎么區(qū)分內(nèi)存條的單面和雙面

    什么是單面和雙面內(nèi)存?它們有些什么樣的特性與區(qū)別呢?你們知道怎么區(qū)分內(nèi)存條單面和雙面嗎?下面小編帶來(lái)怎么區(qū)分內(nèi)存條單面和雙面的內(nèi)容,歡迎閱讀!
    發(fā)表于 05-28 09:51 ?9091次閱讀

    一文解析Linux內(nèi)存系統(tǒng)

    Linux 內(nèi)存是后臺(tái)開(kāi)發(fā)人員,需要深入了解的計(jì)算機(jī)資源。合理的使用內(nèi)存,有助于提升機(jī)器的性能和穩(wěn)定性。本文主要介紹Linux 內(nèi)存組織結(jié)構(gòu)
    的頭像 發(fā)表于 09-01 10:46 ?2482次閱讀
    一文解析<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)存</b>系統(tǒng)

    嵌入式linux+io+優(yōu)化,嵌入式Linux系統(tǒng)內(nèi)存優(yōu)化使用方法研究

    優(yōu)化進(jìn)而確保響應(yīng)運(yùn)行。并且經(jīng)過(guò)實(shí)踐證明,嵌入式系統(tǒng)內(nèi)存優(yōu)化使用,能夠提升系統(tǒng)空間5%內(nèi)存,確保系統(tǒng)順利運(yùn)行。【關(guān)鍵詞】 嵌入式 Linux
    發(fā)表于 11-01 16:31 ?10次下載
    嵌入式<b class='flag-5'>linux</b>+io+<b class='flag-5'>優(yōu)化</b>,嵌入式<b class='flag-5'>Linux</b>系統(tǒng)<b class='flag-5'>內(nèi)存</b><b class='flag-5'>優(yōu)化</b>使用方法研究

    Linux驅(qū)動(dòng)模塊.ko內(nèi)存精簡(jiǎn)優(yōu)化過(guò)程

    Linux 驅(qū)動(dòng)模塊可以獨(dú)立的編譯成 .ko 文件,雖然大小一般只有幾 MB,但對(duì)總內(nèi)存只有幾十 MB 的小型 Linux 系統(tǒng)來(lái)說(shuō),常常也是一個(gè)非常值得優(yōu)化的點(diǎn)。本文以一個(gè)實(shí)際例子,
    發(fā)表于 09-25 09:23 ?1599次閱讀

    linux內(nèi)存性能優(yōu)化介紹

    【1】內(nèi)存映射 Linux 內(nèi)核給每個(gè)進(jìn)程都提供了一個(gè)獨(dú)立且連續(xù)的虛擬地址空間,以便進(jìn)程可以方便地訪(fǎng)問(wèn)虛擬內(nèi)存;虛擬地址空間的內(nèi)部又被分為內(nèi)核空間和用戶(hù)空間兩部分,不同字長(zhǎng)的處理器,地
    的頭像 發(fā)表于 11-10 15:23 ?752次閱讀
    <b class='flag-5'>linux</b><b class='flag-5'>內(nèi)存</b>性能<b class='flag-5'>優(yōu)化</b>介紹
    主站蜘蛛池模板: 在线麻豆国产传媒60在线观看 | 免费xxxx大片 | 91男人| 欧美色人阁 | 在线精品国产三级 | 色婷婷综合网 | 插插插天天 | 国产午夜精品一区二区理论影院 | 欧美一区二区视频 | 国产午夜精品理论片在线 | 双性人皇上被c到哭 | 在线网址你懂的 | 好大好硬好深好爽想要免费视频 | 久久久美女视频 | 狠狠狠狠操 | toyota东热综合网 | 91国内在线国内在线播放 | 色多多视频在线 | 成人久久精品 | 亚洲高清免费在线观看 | 国产美女久久 | 国产久视频 | 色无五月| 欧美一级日韩在线观看 | 亚洲欧美卡通 动漫 丝袜 | 免费视频在线播放 | 57pao成人永久免费视频 | 美女视频黄a全部免费看小说 | 最新黄色免费网站 | 国产日本三级 | 午色| 人人舔 | 高清视频一区二区三区 | 四虎影院在线观看网站 | 久久国产精品免费看 | 久久久国产精品网站 | 久久性| 美女视频网站色 | 高清国产美女在线观看 | 色牛网| 天天搞一搞 |