FreeBSD kernel malloc
来源:互联网 发布:java api帮助文档 编辑:程序博客网 时间:2024/05/22 06:30
FreeBSD kernal malloc 是通过 zone allocaotor 实现的。其基本思想就是,创建一些较小内存的 zones ,以供小内存分配;在分配较大内存时,使用 uma_large_malloc 。
kmeminit 进行一些初始化动作,包括初始化那些存储较小内存的 zones 。
void *malloc(unsigned long size, struct malloc_type *mtp, int flags); 分配内存时,需要一个 struct malloc_type 类型的参数,该实参保存了分配信息。malloc_init 和 malloc_uninit 构造和析够一个 "struct malloc_type",malloc_uninit 检查是否存在内存泄漏。
malloc 根据要分配的内存大小,决定从 kmemzones 中创建的 zones 分配,还是通过 uma_large_malloc 分配。free 根据 slab 标志,得出 addr 是如何分配的,并以对应的方式释放之。
realloc 根据新大小和旧大小的大小关系,决定是分配新的内存还是重用旧的内存。
参考文章:
- FreeBSD malloc(9) manual page
- FreeBSD kernel malloc
- FreeBSD-7 内核malloc 源代码分析
- FreeBSD >= 7.0 local kernel root exploit
- GDB scripts for FreeBSD kernel debugging
- FreeBSD kernel NFS client local vulnerabilities
- FreeBSD 7.2-RELEASE SCTP Local Kernel Denial of
- FreeBSD 7.2-RELEASE SCTP Local Kernel Denial of
- FreeBSD 8.1/7.3 vm.pmap kernel local race condition
- FreeBSD 9.1内核kernel文件和模块文件
- FreeBSD 9.1用kgdb调试kernel dump文件
- 在 Nginx 使用 FreeBSD 的 kernel module httpready
- FreeBSD
- FreeBSD
- freebsd
- freebsd
- FreeBSD
- FreeBSD
- FreeBSD
- SSH框架初探
- jstl_循环
- 第2章 传输层:TCP、UDP和SCTP
- AsyncQueryHandler -->同步更新
- openCV error: Bad argument (unrecognized or unsupported array type)
- FreeBSD kernel malloc
- Windows Mobile 调用摄像头拍照录像
- 深入分析MFC中的CArray类
- 人生哲理
- 将轮廓检测的各个轮廓提取出来并显示
- CSpinButtonCtrl用法
- 解决烘焙贴图错误的若干方法
- SSH框架优缺点分析
- OpenGL 学习笔记(1)