https://github.com/0xAX/linux-insides/tree/master/DataStructures
http://blog.jobbole.com/108527/
转载于:https://www.cnblogs.com/zengkefu/p/6929639.html
Linux-Insides 是一系列 Linux 内核的展示。它通过分享 Linux 内核的内部知识来增加人们对 Linux 内核或者其他低级别主题的兴趣。
基数树 正如你所知道的 Linux 内核通过许多不同库以及函数提供各种数据结构以及算法实现。 这个部分我们将介绍其中一个数据结构 Radix tree。Linux 内核中有两个文件与 radix tree 的实现和API相关: include/linux/radix-tree.h lib/radix-tree.c 首先说明一下什么是 radix tree 。Radix tree 是一种 压缩 tr
Linux内核对很多数据结构提供不同的实现方法,比如,双向链表,B+树,具有优先级的堆等等。 这部分考虑这些数据结构和算法。 双向链表 基数树 位数组
这不是 linux-insides 中的一般章节。正如你从题目中理解到的,它主要描述 Linux 内核中的内部系统数据结构。比如说,中断描述符表 (Interrupt Descriptor Table), 全局描述符表 (Global Descriptor Table) 。 大部分信息来自于 Intel 和 AMD 官方手册。
Linux 内核中的位数组和位操作 除了不同的基于链式和树的数据结构以外,Linux 内核也为位数组(或称为位图(bitmap))提供了 API。位数组在 Linux 内核里被广泛使用,并且在以下的源代码文件中包含了与这样的结构搭配使用的通用 API: lib/bitmap.c include/linux/bitmap.h 除了这两个文件之外,还有体系结构特定的头文件,它们为特定的体系结构提供优化
双向链表 Linux 内核自己实现了双向链表,可以在 include/linux/list.h 找到定义。我们将会从双向链表数据结构开始内核的数据结构。为什么?因为它在内核里使用的很广泛,你只需要在 free-electrons.com 检索一下就知道了。 首先让我们看一下在 include/linux/types.h 里的主结构体: struct list_head { struct list
本附录列出了本书中描述的 Linux 使用的主要的数据结构。为了在页面上访得下,它们经过了少量的编辑。 Block_dev_struct block_dev_struct 数据结构用于登记可用的块设备,让 buffer cache 使用。它们放在 blk_dev 向量表中。 参见 include/linux/blkdev.h struct blk_dev_struct { void (*reque