Chinaunix首页 | 论坛 | 认证专区 | 博客 登录 | 注册
  • 博客访问: 5900
  • 博文数量: 19
  • 博客积分: 15
  • 博客等级: 民兵
  • 技术积分: 12
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-24 21:45
文章分类
文章存档

2017年(17)

2016年(2)

我的朋友
最近访客
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题

发布时间:2017-12-12 12:22:56

c语言是一种结构化编程语言,以模块工能和处理过程设计为主,实现数据与代码分隔化。面向对象方法论,其三要素为:封装,继承,多态。C语言本身对面向对象的支持很弱,但可以通过一些技巧来实现。......【阅读全文】

阅读(1) | 评论(0) | 转发(0)

发布时间:2017-12-12 12:21:53

......【阅读全文】

阅读(1) | 评论(0) | 转发(0)

发布时间:2017-08-01 14:39:57

kernel 3.10内核源码分析--slab原理及相关代码
1、基本原理
我们知道,Linux保护模式下,采用分页机制,内核中物理内存使用buddy system(伙伴系统)进行管理,管理的内存单元大小为一页,也就是说使用buddy system分配内存最少需要分配一页大小。那如果需要分配小于一页的内存该怎么办呢?
另一方面,内核中经常需要大量的数据结构(比如struct task_strcut),这些数据结构的频繁分配和释放对性能影响较大。
Slab正是用于解决上述的两个问题, Slab 分配器源于 Solaris 2.4 的分配算法,工作于buddy system之上,用于管理特定大小对象的缓存,提高小块内存或特定对象内存分配效率。
Slab的两个用途如前面所述:1、缓存和管理内核中经常使用的数据结构对象,内核中使用slab提供的专用的接口,可以实现数据结构对象的快速分配,大大减少相关开销,提升效率。2、缓存和管理小块内存,也称通用缓存,用于kmalloc的底层实现和支撑。......【阅读全文】

阅读(35) | 评论(0) | 转发(0)

发布时间:2017-07-04 22:48:36

    对照前面介绍过的内核通知链、链表,本章我们将要介绍的哈希表的初始化和定义也是如出一辙的:点击(此处)折叠或打开 定义并初始化一个名为name的哈希链表表头 #define HLIST_HEAD(name) struct hlist_head name = { .first = NULL }.........【阅读全文】

阅读(32) | 评论(0) | 转发(0)

发布时间:2017-07-04 22:48:13

关于哈希表,在内核里设计两个很重要的数据结构:   哈希链表节点: 点击(此处)折叠或打开 /*Kernel Version : 3.4.x [include/linux/types.h]*/ struct hlist_node {    struct hlist_node *next, **pprev;}; .........【阅读全文】

阅读(29) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册