1.进程描述符及任务结构
Linux内核把进程存放在叫做任务队列的双向循环链表中。链表中的每一项都是类型为task_struct,称为进程描述符的结构。进程描述符包含一个具体进程的所有信息。
task_struct相对较大,在32位的机器长,它大约有1.7K字节。进程描述符中的数据能完整的描述一个正在执行的程序:它打开的文件、进程的地址空间、挂起的信号、进程的状态,还有其他...
分类:
系统相关 时间:
2015-05-29 18:11:24
阅读次数:
241
最近在看Linux内核的代码,第一个想了解的是Linux内部所使用的数据结构:链表。事实上Linux 内核使用的链表是双向循环链表.跟普通的链表一样,它的每个节点包含两个域:数据域和指针域,其中数据域很明确,就是用户自己的数据,没啥好说的,具体得看用户想通过链表组织什么数据。指针域是一个结构体如下:...
分类:
系统相关 时间:
2015-05-25 16:05:12
阅读次数:
123
LinkedListLinkedList基于双向循环链表实现。也可以被当做堆栈,队列或双端队列进行操作。非线程安全。下面直接贴ArrayList的Java实现(只贴了部分代码),来源JDK1.8.0_25/src.zip。 /** * ****双向链表对应的数据结构********* ...
分类:
编程语言 时间:
2015-05-24 21:40:43
阅读次数:
138
#include
using namespace std;template
struct Node
{
Node *next;
Node *prve;
Type data;
Node(Type d = Type()):data(d),next(NULL),prve(NULL){}
};t...
分类:
编程语言 时间:
2015-05-23 14:14:41
阅读次数:
125
LinkedList
LinkedList基于双向循环链表实现。也可以被当做堆栈,队列或双端队列进行操作。非线程安全。下面直接贴ArrayList的Java实现(只贴了部分代码),来源JDK1.8.0_25/src.zip。
/**
* ****双向链表对应的数据结构*********
* 包含:节点值item
* 前驱 pre
* ...
分类:
编程语言 时间:
2015-05-20 22:22:46
阅读次数:
189
今天总结线性表中的双向循环链表。
什么是双向循环链表?
看名字估计也就知道了,首相他是一个循环链表,也就是最后一个结点的指针域不为空,而是指向头结点,其次与单向循环链表相比,它是双向的。所谓双向,就是给每个结点再增加一个指针域,这个指针域指向前一个结点。
即是下面这样(来自百度图片):
为什么要用双向循环链表?
无论单链表还是单向循环链表,都只有一个指针域,它们都是直...
分类:
编程语言 时间:
2015-05-09 10:17:56
阅读次数:
228
1.单链表代码:包含了尾插法,插入,删除操作。
有头结点的单链表也是为了在第一个位置插入和删除时候容易,不需要另外讨论
#include
#include
typedef struct Linklist
{
int key;
Linklist *next;
}Linklist;
Linklist* create_end()
{
Linklist *head=(Link...
分类:
编程语言 时间:
2015-05-06 15:05:03
阅读次数:
322
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
/**********************************************************************
* Copyright (c)2015,...
分类:
其他好文 时间:
2015-04-27 18:32:49
阅读次数:
129
伙伴系统 是一种 只 可以 分配 2的 幂次方 个 空间的 ,回收 内存 时 只 合并 “伙伴空间” 的一种 动态内存管理方式。
例如 一个 空间 大小 为 64 的 内存,伙伴 系统 为 这 64 的内存 建立 一组 双向循环 链表,分别 管理着 2的 0 次方,2的1 次方幂,2的 2 次方幂。。。2的6次方幂的 可用空间。
即使 我们 只想分配 一个 大小 为3的 空间,系统 却 只...
分类:
其他好文 时间:
2015-04-17 11:46:08
阅读次数:
151
Linux 内核list_head 学习(一)http://www.cnblogs.com/zhuyp1015/archive/2012/06/02/2532240.html在Linux内核中,提供了一个用来创建双向循环链表的结构 list_head。虽然linux内核是用C语言写的,但是list_...
分类:
系统相关 时间:
2015-04-10 11:15:34
阅读次数:
254