婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Linux內核環境下如何申請大塊內存?

Linux內核環境下如何申請大塊內存?

熱門標簽:依蘭縣地圖標注app 百度地圖標注開鎖電話 山東企業電銷機器人價格 琿春市地圖標注app 公司400電話辦理價格 安陽百應電銷機器人加盟 百度中國地圖標注中心 pageadm實現地圖標注 潮州地圖標注

在Linux內核環境下,申請大塊內存的成功率隨著系統運行時間的增加而減少,雖然可以通過vmalloc系列調用申請物理不連續但虛擬地址連續的內存,但畢竟其使用效率不高且在32位系統上vmalloc的內存地址空間有限。所以,一般的建議是在系統啟動階段申請大塊內存,但是其成功的概率也只是比較高而已,而不是100%。如果程序真的比較在意這個申請的成功與否,只能退用“啟動內存”(Boot Memory)。下面就是申請并導出啟動內存的一段示例代碼:
 

void* x_bootmem = NULL;
EXPORT_SYMBOL(x_bootmem);

unsigned long x_bootmem_size = 0;
EXPORT_SYMBOL(x_bootmem_size);

static int __init x_bootmem_setup(char *str)
{
        x_bootmem_size = memparse(str, str);
        x_bootmem = alloc_bootmem(x_bootmem_size);
        printk("Reserved %lu bytes from %p for x\n", x_bootmem_size, x_bootmem);

        return 1;
}
__setup("x-bootmem=", x_bootmem_setup);

可見其應用還是比較簡單的,不過利弊總是共生的,它不可避免也有其自身的限制:

1.內存申請代碼只能連接進內核,不能在模塊中使用。

2.被申請的內存不會被頁分配器和slab分配器所使用和統計,也就是說它處于系統的可見內存之外,即使在將來的某個地方你釋放了它。

3.一般用戶只會申請一大塊內存,如果需要在其上實現復雜的內存管理則需要自己實現。

在不允許內存分配失敗的場合,通過啟動內存預留內存空間將是我們唯一的選擇。

標簽:常德 呼和浩特 香港 晉中 連云港 林芝 三明 公主嶺

巨人網絡通訊聲明:本文標題《Linux內核環境下如何申請大塊內存?》,本文關鍵詞  Linux,內核,環境,下,如何,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Linux內核環境下如何申請大塊內存?》相關的同類信息!
  • 本頁收集關于Linux內核環境下如何申請大塊內存?的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 襄樊市| 左贡县| 永定县| 红原县| 双柏县| 寿光市| 嵊泗县| 亳州市| 偏关县| 乌兰察布市| 易门县| 沐川县| 金阳县| 黄大仙区| 桓仁| 铜山县| 叙永县| 沙雅县| 广东省| 平南县| 五大连池市| 东至县| 嘉祥县| 茂名市| 织金县| 老河口市| 长丰县| 昭苏县| 阳信县| 崇仁县| 博兴县| 昭觉县| 武威市| 梅州市| 岳普湖县| 新竹市| 治多县| 荔波县| 都昌县| 洪湖市| 双鸭山市|