【Linux 内核 内存管理】Linux 内核内存布局 ③ ( Linux 内核 动态分配内存 系统接口函数 | 统计输出 vmalloc 分配的内存 )
文章目录
- 一、Linux 内核 动态分配内存 系统接口函数
- 二、统计输出 vmalloc 分配的内存
一、Linux 内核 动态分配内存 系统接口函数
Linux 内核 " 动态分配内存 " 是通过 " 系统接口 " 实现的 , 下面介绍几个重要的 接口函数 ;
① 以 " 页 " 为单位分配内存 : alloc_pages
, __get_free_page
;
② 以 " 字节 " 为单位分配 " 虚拟地址连续的内存块 " : vmalloc
;
③ 以 " 字节 " 为单位分配 " 物理地址连续的内存块 " : kmalloc
; 注意 该 " 物理地址连续的内存块 " 是以 Slab 为中心的 ;
二、统计输出 vmalloc 分配的内存
执行
grep vmalloc /proc/vmallocinfo
命令 , 可以统计输出 通过 vmalloc
函数分配的 " 虚拟地址连续的内存块 " ;
参考输出内容 :
root@ubuntu:~# grep vmalloc /proc/vmallocinfo
0xffffa769c000c000-0xffffa769c000e000 8192 gen_pool_add_owner+0x46/0xb0 pages=1 vmalloc N0=1
0xffffa769c000e000-0xffffa769c0010000 8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c0010000-0xffffa769c0015000 20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c0018000-0xffffa769c001d000 20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c0020000-0xffffa769c0025000 20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c0028000-0xffffa769c002d000 20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c0030000-0xffffa769c0035000 20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c0035000-0xffffa769c0038000 12288 vmw_fb_init+0x18f/0x430 [vmwgfx] pages=2 vmalloc N0=2
0xffffa769c0038000-0xffffa769c003d000 20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c003d000-0xffffa769c003f000 8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c0065000-0xffffa769c0069000 16384 e1000_setup_all_tx_resources+0x85/0x2a0 [e1000] pages=3 vmalloc N0=3
0xffffa769c0069000-0xffffa769c006b000 8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c006c000-0xffffa769c0071000 20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c0071000-0xffffa769c0073000 8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c0074000-0xffffa769c0079000 20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c007c000-0xffffa769c0081000 20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c0081000-0xffffa769c0083000 8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c0084000-0xffffa769c0089000 20480 _do_fork+0x76/0x3e0 pages=4 vmalloc N0=4
0xffffa769c0089000-0xffffa769c008b000 8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c008b000-0xffffa769c008d000 8192 e1000_setup_all_rx_resources+0x91/0x2c0 [e1000] pages=1 vmalloc N0=1
0xffffa769c008d000-0xffffa769c008f000 8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c0091000-0xffffa769c0093000 8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c0094000-0xffffa769c0099000 20480 fork_idle+0x5d/0xf0 pages=4 vmalloc N0=4
0xffffa769c0099000-0xffffa769c009b000 8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c009c000-0xffffa769c00a1000 20480 fork_idle+0x5d/0xf0 pages=4 vmalloc N0=4
0xffffa769c00a1000-0xffffa769c00a3000 8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c00a4000-0xffffa769c00a9000 20480 fork_idle+0x5d/0xf0 pages=4 vmalloc N0=4
0xffffa769c00a9000-0xffffa769c00ab000 8192 qp_alloc_queue.isra.17+0x48/0x130 [vmw_vmci] pages=1 vmalloc N0=1
0xffffa769c00ac000-0xffffa769c00b1000 20480 fork_idle+0x5d/0xf0 pages=4 vmalloc N0=4
0xffffa769c00b1000-0xffffa769c00b3000 8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c00b4000-0xffffa769c00b9000 20480 fork_idle+0x5d/0xf0 pages=4 vmalloc N0=4
0xffffa769c00b9000-0xffffa769c00bb000 8192 qp_alloc_queue.isra.17+0x48/0x130 [vmw_vmci] pages=1 vmalloc N0=1
0xffffa769c00bc000-0xffffa769c00c1000 20480 fork_idle+0x5d/0xf0 pages=4 vmalloc N0=4
0xffffa769c00c1000-0xffffa769c00c3000 8192 bpf_prog_alloc_no_stats+0x45/0x100 pages=1 vmalloc N0=1
0xffffa769c00c4000-0xffffa769c00c9000 20480 fork_idle+0x5d/0xf0 pages=4 vmalloc N0=4
0xffffa769c00cc000-0xffffa769c00d1000 20480 fork_idle+0x5d/0xf0 pages=4 vmalloc N0=4
【Linux 内核 内存管理】Linux 内核内存布局 ③ ( Linux 内核 动态分配内存 系统接口函数 | 统计输出 vmalloc 分配的内存 )相关推荐
- 启动期间的内存管理之初始化过程概述----Linux内存管理(九)
转载地址:https://blog.csdn.net/gatieme/article/details/52403148 日期 内核版本 架构 作者 GitHub CSDN 2016-09-01 Lin ...
- kmalloc, vmalloc分配的内存结构
From: http://linux.chinaunix.net/techdoc/system/2008/06/16/1011365.shtml 对于提供了MMU(存储管理器,辅助操作系统进行内存管理 ...
- Linux内存管理的设计与实现,Linux内核设计与实现-内存管理学习小结
一,页 内存管理以页为基本单位,用 struct page 表示系统中的每个物理页.系统中的每个结构都要分配这样一个结构体,假定系统的物理页为4kb,系统有128M的物理内存,那么系统仅需1MB的内存 ...
- linux内存管理与设计,深入理解Linux内存管理机制(一)
通过本文,您即可以: 1. 存储器硬件结构: 2.分段以及对应的组织方式: 3.分页以及对应的组织方式. 注1:本文以Linux内核2.6.32.59本版为例,其对应的代码可以在http://www. ...
- 内存管理vma_(十三)Linux内存管理之vma/malloc/mmap
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本 ...
- linux 内存管理_真香!Linux 原来是这么管理内存的
这是 Linux 系列第三篇文章,前两篇文章如下 程序员cxuan:初识 Linux 系统,就这一篇了!zhuanlan.zhihu.com 程序员cxuan:Linux 进程必知必会zhuanl ...
- adaptec raid linux,adaptecraid卡管理软件在windows和linux下的安装使用介绍(7页)-原创力文档...
adaptec raid卡管理软件在 windows和linux下的安装使用文档 l.adaptec raid卡的管理软件在 windows下安装后的运行界面如下图: adaplec adaplec ...
- 函数中的指针分配的内存怎么释放
被调用函数里动态分配的内存要不要手动释放 20 我想手动释放来着,但是指针是在被调用函数里声明的,在调用函数里释放不了. 我的被调用函数返回的就是这个指针,我也不能在被调用函数里释放. 你指的& ...
- 【Linux 内核 内存管理】RCU 机制 ④ ( RCU 模式下更新链表项 list_replace_rcu 函数 | 链表操作时使用 smp_wmb() 函数保证代码执行顺序 )
文章目录 一.RCU 模式下更新链表项 list_replace_rcu 函数 二.链表操作时使用 smp_wmb() 函数保证代码执行顺序 一.RCU 模式下更新链表项 list_replace_r ...
最新文章
- 【Java基础总结】IO流
- 高级UI之Paint(滤镜,颜色通道,矩阵运算)
- How to correctly encode .mp4 files for streaming
- BugkuCTF-WEB题程序员本地网站
- unity3d用射线检测做了一个物体的捡起功能
- 啊哈算法(python)
- 好玩,AI 让老照片动起来(附 APP 软件地址)
- java 串口 rxtx_java使用RXTX进行串口通信
- 透视分析和即席查询区别
- 小手的图标css,CSS中cursor属性给标签加上小手形状
- 基于字典爆破的子域名脚本
- 如何查询手机屏幕尺寸、密度,分辨率
- 面试常见问题之网络基础
- java输入一个年份,利用Java实现从键盘输入一个年份,程序输出改年出生的人的生肖...
- Vue 监听刷新 切屏
- Review of 2012 Goal for 2013
- 宇宙的最初三分种(转)
- fiddler和wireshark
- 计算机课堂热身游戏,童年小确幸 儿时电脑课里我们玩不腻的13个小游戏
- jira数据库表结构
热门文章
- callable object与新增的function相关 C++11中万能的可调用类型声明std::function...
- yum lock 解决方法
- 证明并推导汉诺塔(河内之塔)问题公式
- oschina android版源码中的颜色值
- JavaScript对象理解
- 大型门户网站架构设计的可伸缩性
- Eclipse导入import sun.misc.BASE64Decoder报错的解决办法
- 远程桌面与本地桌面实现文件传输
- Python + Selenium 练习篇 - 获取页面所有邮箱
- WebStorm V2017.1版用于Angular2开发的环境设置