深入浅出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内核数据结构之链表

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

Linux内核数据结构kfifo详解

Linux kernal 鬼斧神工,博大精深,让人叹为观止,拍手叫绝。然匠心独运的设计并非扑朔迷离、盘根错节,真正的匠心独运乃辞简理博、化繁为简,在简洁中昭显优雅和智慧,kfifo就是这样一种数据结构...

Linux内核中断相关的数据结构 (三)

中断相关的数据结构 1.      irq_desc struct irq_desc { structirq_data        irq_data; struct timer_rand_...

linux内核中的数据结构

1. 前言 本文介绍linux内核中一些常用的数据结构和操作。 2. 双向链表(list) linux内核中的双向链表通过结构 struct list_head来将各个节点连接起来,...
  • cumtpl
  • cumtpl
  • 2011年10月24日 21:58
  • 150

Linux0.11内核进程数据结构

1 进程结构     union task_union{      struct task_struct task ;      char stack[PAGE_SIZE]  ;   }  ...

linux路由内核实现分析(二)---FIB相关数据结构

FIB结构 用于保存路由规则,路由的查找过程如下:1, 在缓存中搜索路由表项,如果能查到,就直接将对应的一项作为路由规则2, 如果不能查到,就从FIB规则中换算出来,并且在路由缓存中添加表项 fib_...

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

一、链表  1、链表

Linux内核常用数据结构要点

简单总结一下Linux Kernel常用数据结构和选取原则
  • ace_an
  • ace_an
  • 2016年12月22日 13:56
  • 934

学习Linux-4.12内核网路协议栈(1.5)——协议栈的初始化(inet_init主要数据结构)

前面了解到网络初始化申请了两块skb高速缓存和创建了一个/proc/net/protocols文件,现在开始重头戏,网络协议栈的初始化。这篇文章主要介绍网络栈中使用到的主要数据结构。 网络协议栈的内核...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深入浅出Linux之内核数据结构
举报原因:
原因补充:

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