国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Linux > 正文

Linux內(nèi)核環(huán)境下如何申請(qǐng)大塊內(nèi)存?

2020-07-10 11:04:38
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

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);

可見(jiàn)其應(yīng)用還是比較簡(jiǎn)單的,不過(guò)利弊總是共生的,它不可避免也有其自身的限制:

1.內(nèi)存申請(qǐng)代碼只能連接進(jìn)內(nèi)核,不能在模塊中使用。

2.被申請(qǐng)的內(nèi)存不會(huì)被頁(yè)分配器和slab分配器所使用和統(tǒng)計(jì),也就是說(shuō)它處于系統(tǒng)的可見(jiàn)內(nèi)存之外,即使在將來(lái)的某個(gè)地方你釋放了它。

3.一般用戶(hù)只會(huì)申請(qǐng)一大塊內(nèi)存,如果需要在其上實(shí)現(xiàn)復(fù)雜的內(nèi)存管理則需要自己實(shí)現(xiàn)。

在不允許內(nèi)存分配失敗的場(chǎng)合,通過(guò)啟動(dòng)內(nèi)存預(yù)留內(nèi)存空間將是我們唯一的選擇。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 巨鹿县| 永城市| 龙口市| 疏附县| 临清市| 抚顺县| 鄱阳县| 沿河| 乐业县| 沙田区| 辰溪县| 张北县| 宁化县| 泸州市| 普安县| 华容县| 张掖市| 思南县| 潜江市| 巢湖市| 永善县| 会泽县| 龙海市| 乳源| 修水县| 西宁市| 三门县| 宁阳县| 大竹县| 辽中县| 开平市| 兴文县| 阳春市| 讷河市| 宜兴市| 嫩江县| 威海市| 贵溪市| 沂源县| 佛山市| 潜江市|