日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux内核中分配4M以上大内存的方法

發布時間:2023/12/10 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux内核中分配4M以上大内存的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在內核中, kmalloc能夠分配的最大連續內存為2的(MAX_ORDER-1)次方個page(參見alloc_pages函數, ??? "if (unlikely(order >= MAX_ORDER))?? ???? return NULL;"), page的大小一般是4K bytes,MAX_ORDER缺省定義為11, 所以如果不修改內核, kmalloc能夠分配的最大連續內存一般是4M bytes.

內核中獲取4M以上大內存的方法有三種:

1.修改MAX_ORDER, 重新編譯內核

2.內核啟動選型傳遞"mem="參數, 如"mem=80M", 預留部分內存; 然后通過request_mem_region和ioremap_nocache將預留的內存映射到模塊中. 需要修改內核啟動參數, 無需重新編譯內核. 但這種方法不支持x86架構, 只支持ARM, PowerPC等非x86架構.

3.在start_kernel中mem_init函數之前調用alloc_boot_mem函數預分配大塊內存, 需要重新編譯內核.


在不重新編譯內核的前提下, x86架構下內核中只能獲取到最大4M的連續內存, 或者使用vmalloc獲取4M以上的非連續內存. 而且, 無論是kmalloc還是vmalloc, 分配的內存越大, 失敗的可能性越大; 系統啟動后分配內存的時間越早(此時空閑內存越多, 分部也越規律), 成功的可能性越大.

總結

以上是生活随笔為你收集整理的linux内核中分配4M以上大内存的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。