深入浅出Linux之内核数据结构

转载 2015年11月18日 22:18:34
内核使用的数据结构有双向链表,单向链表和hash链表。另外,基树和红黑树也是内核使用的数据结构。实际上,这也是程序代码中通常使用的数据结构,一些偏僻难的数据结构并不常见。

1. container

  container是linux很重要的一个概念。有了container方法,才能实现对对象的封装。

  分析一下container方法。

======================================================================

#define container_of(ptr, type, member) ({               \

        const typeof( ((type *)0)->member ) *__mptr = (ptr);      \

        (type *)( (char *)__mptr - offsetof(type,member) );})

  这个方法巧妙的实现了通过结构的一个成员及成员指针找到整个结构的地址。有了container方法,list才

成为了一个通用的数据结构,通过container方法,还可以实现内核的封装,程序之间不暴露

内部的数据。

深入浅出linux之内核数据结构

内核使用的数据结构有双向链表,单向链表和hash链表。另外,基树和红黑树也是内核 使用的数据结构。实际上,这也是程序代码中通常使用的数据结构,一些偏僻难的数据 结构并不常见。   1. con...
  • easyblue99
  • easyblue99
  • 2012年01月08日 00:06
  • 1130

《Linux内核设计与实现》——内部数据结构

一、链表  1、链表
  • Explorer_day
  • Explorer_day
  • 2014年11月10日 15:59
  • 976

内核数据结构之映射

映射也称之为关联数组,它是一组唯一键的集合,每个键与特定的值相关。一般支持至少三个操作: Add(key,value) Remove(key) value=Loo...
  • fuyajun01
  • fuyajun01
  • 2012年03月30日 23:56
  • 2173

linux内核分析--内核中的数据结构之红黑树(续)

#include #include #include "kn_common.h" MODULE_LICENSE("Dual BSD/GPL"); struct student { int ...
  • yusiguyuan
  • yusiguyuan
  • 2014年02月25日 16:31
  • 1499

linux 内核常用数据结构及算法——container_of

container_of是linux内核中常用的一个宏函数,其用途是通过结构体一个yu
  • vah101
  • vah101
  • 2014年11月15日 19:29
  • 1683

<<Linux内核设计与实现>>读书笔记(六)-内核数据结构

内核数据结构贯穿于整个内核代码中,这里介绍4个基本的内核数据结构.利用这4个基本的数据结构,可以在编写内核代码时节约大量时间.主要内容: 链表 队列 映射 红黑树 1.链表链表是linux内核中最简单...
  • oyhy_
  • oyhy_
  • 2017年05月08日 22:43
  • 132

Linux内核数据结构之链表

链表 在学习《Linux内核设计与实现》中链表结构时,对(我看的内核是2.6的,在其他版本对链表的定义可能不在这个目录中)中的宏定义:container_of()很困惑,所以google一番,现记录...
  • zaizai09
  • zaizai09
  • 2013年09月10日 21:43
  • 669

linux内核数据结构之链表

linux内核数据结构之链表 1、前言    最近写代码需用到链表结构,正好公共库有关于链表的。第一眼看时,觉得有点新鲜,和我之前见到的链表结构不一样,只有前驱和后继指针,而没有数...
  • Baoge_leopard
  • Baoge_leopard
  • 2014年07月02日 00:07
  • 373

Linux内核数据结构(二)

队列队列也是一种链表,只是针对队列的操作只能是从队尾插入,从队首删除。在操作系统中有很多这种数据结构的用武之地,一般是一个进程产生数据,另外一个进程处理数据,如Linux中网络数据包的处理,进程之间使...
  • LifeProgramming
  • LifeProgramming
  • 2011年01月05日 16:27
  • 2204

深入浅出NIO Channel和Buffer

前言 Java NIO 由以下几个核心部分组成: BufferChannelSelector 传统的IO操作面向数据流,意味着每次从流中读一个或多个字节,直至完成,数据没有被缓存在任何地方。NI...
  • dancheren
  • dancheren
  • 2017年04月02日 22:02
  • 295
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深入浅出Linux之内核数据结构
举报原因:
原因补充:

(最多只允许输入30个字)