博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OK6410A 开发板 (八) 36 linux-5.11 OK6410A 内存管理第四阶段
阅读量:4285 次
发布时间:2019-05-27

本文共 1313 字,大约阅读时间需要 4 分钟。

D mm_init->mem_init返回 -> mm_init->kmem_cache_init返回----此时slab建立,开启了基于 buddy内存管理器时代 的 slab内存管理器时代
kmem_cache_init	此过程以 slab 为基础,通过slab 的api kmem_cache_create , 创建 很多个 slab	假设这么多个slab 为 一个集合A	这么多slab 就是给用户用的,然后 这么多slab 的 alloc 和  free api 是什么呢?	针对某一个 slab, slab 提供了 kmem_cache_alloc  和 kmem_cache_free	那么 A 提供的用户的是封装了 kmem_cache_alloc  的 kmalloc 和 封装了 kmem_cache_free 和 kfreeA 是什么	A 是 一系列 slab 实例的集合,是kmalloc 机制A 和 kmem_cache_init 的关系	kmem_cache_init 创建了 AA 和 slab 的关系	A 是 一系列 slab 实例的集合slab 并不是 一个内存管理器,而是一个内存管理API.我们需要调用slab内存管理API,才可以建立一个slab存管理器实例.一个slab管理器实例 对应 一个slab 句柄(struct kmem_cache * 类型变量)slab 有其他实例吗?	有	实例1:		初始化:		struct kmem_cache * task_struct_cachep = kmem_cache_create_usercopy("task_struct"		alloc:		alloc_task_struct_node -> kmem_cache_alloc_node(task_struct_cachep, GFP_KERNEL
  • kmalloc机制 建立过程
kmem_cache_init	create_boot_cache(kmem_cache_node, "kmem_cache_node"	create_boot_cache(kmem_cache, "kmem_cache"	setup_kmalloc_cache_index_table		size_index[] = ... ;	create_kmalloc_caches		for (i = KMALLOC_SHIFT_LOW; i <= KMALLOC_SHIFT_HIGH; i++) {
new_kmalloc_cache(i, type, flags); kmalloc_caches[type][idx] = create_kmalloc_cache( kmalloc_info[idx].name[type], kmalloc_info[idx].size, flags, 0, kmalloc_info[idx].size); // kmalloc_info 是 全局变量,定义 name 与 size 相关 // mm/slab_common.c }

转载地址:http://wjigi.baihongyu.com/

你可能感兴趣的文章
es 2.3.3 向es添加数据报NoNodeAvailableException[None of the configured nodes are available
查看>>
springboot 的@RequestBody JSONObject 与@RequestBody Object 的区别
查看>>
springboot pom文件设置<packaging>pom</packaging> 对于application.yml无法加载读取的问题
查看>>
springboot加载resouce下面的静态文件,templates目录的访问,以及经过controller后跳转页面问题
查看>>
shiro的通过md5+salt+hash散列进行注册操作
查看>>
springboot整合applicationContext实现上下文获取实例bean
查看>>
shiro目前问题记录
查看>>
shiro实现本地内存Ehcache实现将菜单权限进行缓存
查看>>
shiro使用redis实现将菜单权限进行缓存
查看>>
cmd窗口下执行jar包 logger.info输出乱码,out语句输出正常解决办法
查看>>
springboot启动初始化实例,后面进行使用
查看>>
shiro实现加载验证码
查看>>
springboot 搭建多模块调用以及打包执行
查看>>
shiro实现不使用密码加密器进行登录
查看>>
权限管理系统笔记
查看>>
java8 新特性 拼接字符串
查看>>
springboot中mybaits自动返回新增数据的主键
查看>>
shiro的使用freemark实现前端控制权限
查看>>
权限管理系统中功能权限&数据权限以及权限模块的实现
查看>>
shiro中LoginUrl与UnauthorizedUrl的作用
查看>>