To be a better coder
发布时间:2016-12-21 17:41:55
Kernel提供了kmem_cache_create函数用于创建Cache,下面我们直接从API入手。函数有点长,逐行分析一下。点击(此处)折叠或打开/** * kmem_cache_create - Create a cache. * @name: A string which is used in /proc/slabinfo to identify this cache.........【阅读全文】
发布时间:2016-12-21 17:13:58
Linux采用了slab来管理小块内存的分配与释放,Slab的提出基于以下两个考虑:1. 内核函数经常倾向于反复请求相同的数据类型2. 不同的结构使用不同的分配方法可以提高效率3. 伙伴系统的频繁申请/释放影响效率,将释放内存放入缓冲区,直至超过阀值再归还给伙伴系统4. 可以缓解内存碎片的产生,.........【阅读全文】
发布时间:2016-12-21 17:13:04
初始化的调用过程:start_kernel()->mm_init()->kmem_cache_init(),下面分析一下具体代码。点击(此处)折叠或打开/* * Initialisation. Called after the page allocator have been initialised and * before smp_init(). */.........【阅读全文】
发布时间:2016-12-21 17:11:37
上文分析了普通对象的申请过程,kmalloc。现在看一下针对专用对象的申请kmem_cache_alloc函数。点击(此处)折叠或打开/** * kmem_cache_alloc - Allocate an object * @cachep: The cache to allocate from. * @flags: See kmalloc().........【阅读全文】
发布时间:2016-12-21 09:15:55
linux内存系统简述linux 系统中内存地址分为虚拟地址和物理地址,虚拟地址必须通过mmu映射成物理地址。为了完成虚拟地址到物理地址的映射,linux内核中必须为每一个用户态进程维护一个页目录和相应的页表项。一般系统中页表中一页大小为4K,利用getconf PAGESIZE可以获取系统中页大小。每一个ZONE上面有active_l.........【阅读全文】