kmalloc 函数原型: void *kmalloc(size_t size, gfp_t flags); kmalloc() 申请的内存位于物理内存映射区域,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因为存在较简单的转换关系,所以对申请的内存大小有限制,不能超过128KB。 ...
分类:
其他好文 时间:
2020-05-15 11:36:36
阅读次数:
74
1 内存划分 对于 32位linux,进程:0~3G,内核:3G~4G,所有进程的内核空间(3G~4G)都是共享的。 线性区映射的物理内存成为低端内存,剩下的内存被称为高端内存。 2 内存管理 2.1 物理内存管理 Linux内存最小管理单位为页(page),通常一页为4K。初始化时,linux会为 ...
分类:
系统相关 时间:
2020-04-17 13:57:47
阅读次数:
102
[root@realhost /]# cat /proc/meminfo MemTotal: 688576 kB 总内存 MemFree: 153736 kB 空闲内存 MemAvailable: 339884 kB 可用内存 Buffers: 16 kB 给文件的缓冲大小 Cached: 2676 ...
分类:
其他好文 时间:
2020-03-18 13:33:55
阅读次数:
75
第一次笔试,CVTE,岗位C/C++后台开发实习生,未通过。 笔试有22道题目,其中前20道是单选选择和多选混合,基本五五开的样子,设计的知识点从语言基础,到网络知识还有Linux相关。具体能记住的有字节对齐、TCP/IP协议、用户权限(umask),还有一些特别涉及底层实现(vmalloc和fma ...
分类:
其他好文 时间:
2019-12-18 12:27:37
阅读次数:
96
写一个内核模块,来构造内核模块出现panic oom,主要采用vmalloc函数: 对应的Makefile文件为: ...
分类:
其他好文 时间:
2019-08-27 15:47:06
阅读次数:
124
/proc文件系统是一种特殊的、由软件创建的文件系统,内核使用它向外界导出信息,/proc系统只存在内存当中,而不占用外存空间。 /proc下面的每个文件都绑定于一个内核函数,用户读取文件时,该函数动态地生成文件的内容。也可以通过写/proc文件修改内核参数 /proc目录下的文件分析 /proc/ ...
分类:
其他好文 时间:
2019-08-17 00:37:01
阅读次数:
108
我们展示给你的下一个内存分配函数是 vmlloc, 它在虚拟内存空间分配一块连续的内存 区. 尽管这些页在物理内存中不连续 (使用一个单独的对 alloc_page 的调用来获得每个 页), 内核看它们作为一个一个连续的地址范围. vmalloc 返回 0 ( NULL 地址 ) 如果发 生一个错误 ...
分类:
系统相关 时间:
2019-07-06 13:07:16
阅读次数:
132
我们都知道在用户空间动态申请内存用的函数是 malloc(),这个函数在各种操作系统上的使用是一致的,对应的用户空间内存释放函数是 free()。注意:动态申请的内存使用完后必须要释放,否则会造成内存泄漏,如果内存泄漏发生在内核空间,则会造成系统崩溃。 那么,在内核空间中如何申请内存呢?一般我们会用 ...
分类:
其他好文 时间:
2019-04-25 14:33:30
阅读次数:
189
1 高端内存与内核映射 尽管 函数族可用于从高端内存域向内核映射页帧(这些在内核空间中通常是无法直接看到的), 但这并不是这些函数的实际用途. 重要的是强调以下事实 : 内核提供了其他函数用于将 页帧显式映射到内核空间, 这些函数与vmalloc机制无关. 因此, 这就造成了混乱. 而在高端内存的页 ...
分类:
系统相关 时间:
2018-12-31 00:00:55
阅读次数:
211
vmalloc是一个接口函数, 内核代码使用它来分配在虚拟内存中连续但在物理内存中不一定连续的内存。 只需要一个参数,以字节为单位。 使用vmalloc的最著名的实例是内核对模块的实现. 因为模块可能在任何时候加载, 如果模块数据比较多, 那么无法保证有足够的连续内存可用, 特别是在系统已经运行了比 ...
分类:
其他好文 时间:
2018-12-28 17:14:47
阅读次数:
210