kmalloc分配内核堆空间
来源:互联网 发布:淘宝客返利api 编辑:程序博客网 时间:2024/06/06 04:51
kmalloc函数的原型是:
- #include <linux/slab.h>
- void *kmalloc(size_t size, int flags);
******size是要分配的块大小
******flags分配方式,控制kmalloc分配内存的方式
******在没有阻塞的情况下,分配内存快,并且对于分配到的内存块,不对该内存块清零,分配到的内存块里保存着原来它存储的内容.
******kmalloc分配到的内存块是连续的物理内存.
kmalloc的分配标志解读(这些标志在<linux/gfp.h>头文件中)
1. GFP_KERNEL
******最一般的使用分配标志,代表运行在内核空间的进程而进行的内存分配.
******当所请求分配的内存不够一页的时候,GFP_KERNEL让当前进程睡眠,来等待够一页内存大小的时候,才能获得正确分配到的内存.
******使用GFP_KERNEL的函数必须是可重入的函数,并且不能在原子上下文中运行.
(可重入函数:简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误)
(上下文的概念:对于一个进程,执行过的部分称为进程的上文,正在执行的部分称为进程的正文,还没执行性进程的下文)
(原子操作:通俗滴说就是从开始到最后的运行完成,中间不能被打断)
******GFP_KERNEL分配标志,不能用在中断处理函数中,tasklet (在某些方面类似内核定时器),内核定时器中.
2. GFP_ATOMIC
******用来从中断处理和进程上下文之外的其他代码中分配内存,从不睡眠.
3. GFP_USER
******为用户空间页来分配内存,可能睡眠.
4. GFP_DMA
cp:http://blog.csdn.net/wzc18743083828/article/details/18547831
- kmalloc分配内核堆空间
- kmalloc分配内核堆空间
- 在内核空间分配内存(kmalloc/vmalloc/ioremap/get free page)
- 内核空间分配标志
- Kmalloc内部实现:挖掘Linux内核内存分配(一)
- 引用类型 堆 分配空间
- Kmalloc内存分配
- linux内核Kmalloc分配内存需要注意的问题(GFP_KERNEL可能会造成内核调度错误)
- linux内核Kmalloc分配内存需要注意的问题(GFP_KERNEL可能会造成内核调度错误)
- linux内核Kmalloc分配内存需要注意的问题(GFP_KERNEL可能会造成内核调度错误)
- linux内核Kmalloc分配内存需要注意的问题(GFP_KERNEL可能会造成内核调度错误)
- linux内核Kmalloc分配内存需要注意的问题(GFP_KERNEL可能会造成内核调度错误)
- 变量空间分配、堆、栈区别
- 堆和栈的空间分配
- 变量空间分配、堆、栈区别
- 内核中的物理内存分配函数kernel api分析----kmalloc实现
- kmalloc内核函数
- Linux内核学习:kmalloc
- Perl CGI
- hadoop学习笔记-生产环境hadoop集群安装
- Qt头文件中的QT_BEGIN_NAMESPACE
- android 滑动欢迎界面
- Windows远程桌面(mstsc)通过RDP协议访问Ubuntu
- kmalloc分配内核堆空间
- 用户登录过滤器
- ajax处理全过程总结
- UITableView 滚动流程性优化
- Qt: No such file or directory
- ios 图片拉伸
- 2013年中国手机打车应用市场研究报告
- android驱动之旅-下载编译Linux Kernel 源代码 for Android 以及android源码(2)
- 浏览器中关于事件的那点事儿