摘要:
Linux内核的同步机制:等待队列 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。在Linux2.4.21中,等待队列在源代码树include/linux/wait.h中,这是一个通过list_head连接的典型双循环链表,如下图所示。 在这个链表中,有两种数据结构:等待队列头(wait_queue_head_t)和等待... 阅读全文
摘要:
前几天在看驱动的时候碰到了等待队列,上网去搜了一下,再结合代码看了一下,深有体会.在 kernel 里,wait_queue 的应用很广,举凡 device driver,semaphore 等方面都会使用到 wait_queue 来 implement。所以,它算是 kernel 里蛮 基本的一个数据结构。 首先,我们得明白,linux中的所有的进程都由task_struct这个结构管理。在生... 阅读全文
摘要:
相信很多写程序的人都写过 socket 的程序。当我们 open 一个 socket 之后,接着去读取这个 socket,如果此时没有任何资料可供读取,那 read 就会 block 住。(这是没有加上 O_NONBLOCK 的情形),直到有资料可读取才会传回来。在 Linux kernel 里有一个数据结构可以帮助我们做到这样的功能。这个数据结构就是这里要跟各位介绍的 wait queue。在 ... 阅读全文
摘要:
今天在看流量控制的代码时,特别留意了一下list_head的结构,发现它只有指针域,没有数据域,觉得有点困惑,一般的链表节点都包括两部分:数据域和指针域。linux里为何能这么用呢?股沟一下,原来是这么回事。在Linux内核链表中,不是在链表结构中包含数据,而是在数据结构中包含链表节点。 深入分析 Linux 内核链表 本文详细分析了 2.6.x 内核中链表结构的实现,并通过实... 阅读全文
摘要:
最近因为工作关系,看了一些数学书。我以TAMU的两位教授所著的一本小书为例发表一些浅见。该书名为A First Course in Wavelets with Fourier Analysis(国内有电子工业出版社的影印版本)。 一、背景 傅立叶分析是所有理工科学生都多少知道一点的,傅立叶分析的主要内容有傅立叶级数、傅立叶变换等。傅立叶级数是所有学过工科高等数学课程的学生都知道的。而作为电子工... 阅读全文
摘要:
《Linux内核设计与实现》 简称LKD,从入门开始,介绍了诸如进程管理、系统调用、中断和中断处理程序、内核同步、时间管理、内存管理、地址空间、调试技术等方面,内容比较浅显易懂,个人认为是内核新人首先必读的书籍。新人得有此书,足矣! 《深入理解Linux内核》 简称ULK,相比于LKD的内容不够深入、覆盖面不广,ULK要深入全面得多。 前面这两本,一本提纲挈领,一本全面深入... 阅读全文