在Linux内核编程中内存的申请不同于系统编程,她有自己的一套机制。

1. kmalloc

函数原型:void *kmalloc( size_t size, int flags )

参数说明:size   ---  要分配的内存块大小

flags ---  分配标志,常用的有GFP_KERNEL(会引起睡眠),GFP_ATOMIC(不引起睡眠,分配不到,立即返回)

函数特点:申请的内存位于内核物理内存映射区域,物理上连续,与真实的物理地址只有一个固定偏移值,通过不同的分配标志可控制分配动作。

底层依赖:__get_free_page()

释放函数:free_page(),free_pages()

2.__get_free_page()

函数原型:__get_free_page(unsigned int flags)

参数说明:flags ---  分配标志,常用的有GFP_KERNEL(会引起睡眠),GFP_ATOMIC(不引起睡眠,分配不到,立即返回)

函数特点:用于获取一个空闲的新页,该函数实际是个宏,定义为__get_free_pages( (gfp_mask),0 )。该函数还有一系列类似的函数可使用。

底层依赖:__get_free_pages()

释放函数:kfree()

3. vmalloc()

函数原型:void *vmalloc( unsigned long size );

参数说明:size   ---  要分配的内存块大小

函数特点:用于分配大块的内存,开销很大,需建立新的页表。

底层依赖:kmalloc

释放函数:vfree()

linux内核申请内存的方法,Linux内核空间的内存申请常用函数相关推荐

  1. Linux centos7升级内核(两种方法:内核编译和yum更新)

                Linux centos7升级内核(两种方法:内核编译和yum更新) Linux的内核概念不用说大家也很清楚,正是内核版本的不同,才有Linux发行版本的说法,现在主流的cen ...

  2. linux内核看门狗关闭方法,linux内核中断之看门狗

    一:内核中断 linux内核中的看门狗中断跟之前的裸板的中断差不多,在编写驱动之前,需要线把内核自带的watch dog模块裁剪掉,要不然会出现错误:在Device Drivers /Watchdog ...

  3. linux环境变量配置的方法,Linux环境变量配置方法

    Linux上环境变量配置分为设置永久变量和临时变量两种.环境变量设置方法同时要考虑环境Shell类型,不同类型的SHELL设置临时变量方法和设置永久变量对应的配置文件不同.Linux环境变量本身配置过 ...

  4. linux下字体怎么安装方法,linux安装字体方法

    1.查看系统中文字体 #fc-list :lang=zh 2.如果提示commont not fount 说明为安装fontconfig 3.安装fontconfig #yum -y install ...

  5. linux挂载u盘的方法,linux挂载U盘的方法

    linux挂载U盘的方法 (2012-08-15 15:56:47) 标签: 挂载 u盘 优盘 3g fat32 it 如果想让linux识别U盘,需要把鼠标先定位在虚拟机的linux里面,然后插入优 ...

  6. android内存检测方法,Android_Android系统检测程序内存占用各种方法,1.检查系统总内存 复制代码 - phpStudy...

    Android系统检测程序内存占用各种方法 1.检查系统总内存 liuhx@uc ~ $ adb shell cat /proc/meminfo MemTotal:         840868 kB ...

  7. 如何启用计算机双通道内存的方法,内存条怎么插 组建内存双通道正确插法教程...

    当我们安装或升级内存时,发现主板上有四个内存插槽,所以不知道该插入哪个内存插槽.事实上,理论上,任何一个内存插槽都可以正常使用.但是如果随意插上,未必能搭建双通道,搭建双通道也是有讲究的.那么双通道内 ...

  8. linux内核中测量时间的方法,Linux内核中获取时间函数do_gettimeofday

    内核代码能一直获取一个当前时间的表示, 通过查看 jifies 的值. 常常地, 这个值只代表从最后一次启动以来的时间, 这个事实对驱动来说无关, 因为它的生命周期受限于系统的 uptime. 如所示 ...

  9. linux回收内存的方法,linux释放内存的方法

    Linux 释放内存方法 先看看内存使用状况 [root@node1 ~]# free -m total used free shared buffers cached Mem: 8004 6557 ...

最新文章

  1. Gluster 常用命令
  2. python绘制3d图形-万万没想到,Python 竟能绘制出如此酷炫的三维图
  3. Java中return结束循环,Java中break、continue、return在for循环中的使用
  4. research meeting updates points
  5. SVN - 简单使用手册
  6. 新的Teams API权限控制
  7. jvm虚拟机 基于栈_守护基于JVM的应用程序
  8. mysql索引实现原理_Mysql索引原理
  9. 医药/医疗/互联网医疗服务平台/问诊/挂号/开药/处方/医生/医院/问诊订单管理/移动端问诊医疗系统/医生端处方开药系统/web端医药服务平台管理/axure原型/rp源文件/健康咨询/视频问诊/统计
  10. How MapReduce Works
  11. html微数据,HTML5之 Microdata微数据
  12. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海),签到题G Fibonacci
  13. 小米手机抢购背后的摩尔定律
  14. 机器学习算法工程师、计算机视觉工程师 技术路线
  15. getch方法_c语言中getch的用法
  16. 作业指导书分析怎么做?制作作业指导书分析的软件有哪些?
  17. android studio依赖关系图,Android studio 如何查看 library 间的依赖关系
  18. ts.to_csv('examples/tseries.csv') !type examples\tseries.csv失败的问题
  19. Springboot项目集成Minio文件服务器(下)
  20. JAVA查看网卡速率,Java获取网卡信息

热门文章

  1. wxWidgets:wxMediaCtrl 示例
  2. wxWidgets:wxTreeListCtrl类用法
  3. boost::units::quantity相关的测试程序
  4. boost : has_to_string的用法测试程序
  5. GDCM:gdcm::CompositeNetworkFunctions的测试程序
  6. GDCM:基本应用程序级别机密性配置文件测试程序
  7. boost::allocator_void_pointer
  8. Boost:自定义小矢量的测试程序
  9. ITK:比较两个图像并将输出像素设置为最小值
  10. VTK:图片之ImageMathematics