📄 -+
字号:
any problems, send mails to lysindybear@sina.com.cn
相关文件
/mm/slab.c
/mm/page_alloc.c
****************************111111111***************************************************
在内核中分配内存,最经常使用的两种分配方法是kmalloc和__get_free_pages,这两种方法各有不同,
kmalloc分配是通过slab机制进行分配的,而__get_free_pages则是直接将一些空白页交给用户,因此,
当分配大块的内存的时候,我们使用kmalloc就可能不会成功,但是,系统并不返回错误,这是最头疼的,
所以当我们分配大与4k(?)内存的时候,最好使用__get_free_pages函数。
*****************************************************************************************
******************************2222222222222************************************************
在使用kmalloc函数的时候,特别要注意参数的选取,最为关键的一点就是在中断处理过程中,如果要
分配内存,一定要使用GFP_ATOMIC参数,这个函数的主要特点就是不sleep,而中断中绝对不允许进行调度
操作,因为linux的中断是不可重入的。
*******************************************************************************************
**********************************333333333333*********************************************
注意kmalloc和vmalloc的区别,kmalloc是分配实际的物理内存给内核的用户使用,它的成功与否只是和
内存量的大小有关,得到的内核虚地址只要剪去3G的偏移量就是实际的物理地址。但是vmalloc分配的是内核
的虚地址,她的范围是 3G + 实际的物理内存量 + 8M <----------> 4G - 112M
两者完全不同,所以,我们可以想象,如果机器的实际的物理内存配置如果很大的话,那么内核虚地址就会
被消耗光的,这时候使用vmalloc应该没有效果了
*******************************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -