linux内核申请内存的方法,Linux内核空间的内存申请常用函数
在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内核空间的内存申请常用函数相关推荐
- Linux centos7升级内核(两种方法:内核编译和yum更新)
Linux centos7升级内核(两种方法:内核编译和yum更新) Linux的内核概念不用说大家也很清楚,正是内核版本的不同,才有Linux发行版本的说法,现在主流的cen ...
- linux内核看门狗关闭方法,linux内核中断之看门狗
一:内核中断 linux内核中的看门狗中断跟之前的裸板的中断差不多,在编写驱动之前,需要线把内核自带的watch dog模块裁剪掉,要不然会出现错误:在Device Drivers /Watchdog ...
- linux环境变量配置的方法,Linux环境变量配置方法
Linux上环境变量配置分为设置永久变量和临时变量两种.环境变量设置方法同时要考虑环境Shell类型,不同类型的SHELL设置临时变量方法和设置永久变量对应的配置文件不同.Linux环境变量本身配置过 ...
- linux下字体怎么安装方法,linux安装字体方法
1.查看系统中文字体 #fc-list :lang=zh 2.如果提示commont not fount 说明为安装fontconfig 3.安装fontconfig #yum -y install ...
- linux挂载u盘的方法,linux挂载U盘的方法
linux挂载U盘的方法 (2012-08-15 15:56:47) 标签: 挂载 u盘 优盘 3g fat32 it 如果想让linux识别U盘,需要把鼠标先定位在虚拟机的linux里面,然后插入优 ...
- android内存检测方法,Android_Android系统检测程序内存占用各种方法,1.检查系统总内存
复制代码 - phpStudy...
Android系统检测程序内存占用各种方法 1.检查系统总内存 liuhx@uc ~ $ adb shell cat /proc/meminfo MemTotal: 840868 kB ...
- 如何启用计算机双通道内存的方法,内存条怎么插 组建内存双通道正确插法教程...
当我们安装或升级内存时,发现主板上有四个内存插槽,所以不知道该插入哪个内存插槽.事实上,理论上,任何一个内存插槽都可以正常使用.但是如果随意插上,未必能搭建双通道,搭建双通道也是有讲究的.那么双通道内 ...
- linux内核中测量时间的方法,Linux内核中获取时间函数do_gettimeofday
内核代码能一直获取一个当前时间的表示, 通过查看 jifies 的值. 常常地, 这个值只代表从最后一次启动以来的时间, 这个事实对驱动来说无关, 因为它的生命周期受限于系统的 uptime. 如所示 ...
- linux回收内存的方法,linux释放内存的方法
Linux 释放内存方法 先看看内存使用状况 [root@node1 ~]# free -m total used free shared buffers cached Mem: 8004 6557 ...
最新文章
- Gluster 常用命令
- python绘制3d图形-万万没想到,Python 竟能绘制出如此酷炫的三维图
- Java中return结束循环,Java中break、continue、return在for循环中的使用
- research meeting updates points
- SVN - 简单使用手册
- 新的Teams API权限控制
- jvm虚拟机 基于栈_守护基于JVM的应用程序
- mysql索引实现原理_Mysql索引原理
- 医药/医疗/互联网医疗服务平台/问诊/挂号/开药/处方/医生/医院/问诊订单管理/移动端问诊医疗系统/医生端处方开药系统/web端医药服务平台管理/axure原型/rp源文件/健康咨询/视频问诊/统计
- How MapReduce Works
- html微数据,HTML5之 Microdata微数据
- 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海),签到题G	Fibonacci
- 小米手机抢购背后的摩尔定律
- 机器学习算法工程师、计算机视觉工程师 技术路线
- getch方法_c语言中getch的用法
- 作业指导书分析怎么做?制作作业指导书分析的软件有哪些?
- android studio依赖关系图,Android studio 如何查看 library 间的依赖关系
- ts.to_csv('examples/tseries.csv') !type examples\tseries.csv失败的问题
- Springboot项目集成Minio文件服务器(下)
- JAVA查看网卡速率,Java获取网卡信息
热门文章
- wxWidgets:wxMediaCtrl 示例
- wxWidgets:wxTreeListCtrl类用法
- boost::units::quantity相关的测试程序
- boost : has_to_string的用法测试程序
- GDCM:gdcm::CompositeNetworkFunctions的测试程序
- GDCM:基本应用程序级别机密性配置文件测试程序
- boost::allocator_void_pointer
- Boost:自定义小矢量的测试程序
- ITK:比较两个图像并将输出像素设置为最小值
- VTK:图片之ImageMathematics