• 好好学习,天天向上~
  • 欢迎欢迎~

标签:linux笔记

linux笔记

Linux学习第26节,内核中的“中断”下半部工作队列机制 24小时内最新

第24节提到,在处理中断时,Linux 内核为了解决“又想做得快,又想做得多”的矛盾,将一次完整的中断处理分为“上半部”和“下半部”两部分,耗时较多但是对实时性要求不高的处理统统放入下半部。 2.6.26 版本的 Linux 内核有软中断、tasklet和工作队列三种形式的“下...

lcc 13小时前 6℃ 0评论 0

linux笔记

Linux学习第25节,内核中的“中断”下半部tasklet机制

上一节较为详细的讨论了 Linux 内核中的“软中断”机制,通过这种模拟硬件中断的设计,中断处理程序可以设计的尽可能小而快,而将余下的较为复杂的工作放入“稍后”执行的软中断中。 不过,软中断在不同的处理器上可以同时运行多个,所以任何共享数据都需要做好严格的同步管理,如果通过互斥...

lcc 6天前 17℃ 0评论 0

linux笔记

Linux学习第24节,内核中的“中断”下半部

上一节介绍了 Linux 中的“中断”机制,明白了 Linux 内核在中断机制的设计中陷入了“两难”的境地:一方面希望中断处理程序有能力做足够多的工作,另一方面又希望中断处理程序能够尽快完成,以避免被中断打断的代码段停止时间过长,影响整个系统的效率。 而且,中断处理程序不在进程...

lcc 1周前 (02-13) 21℃ 0评论 1

linux笔记

Linux学习第23节,内核中的“中断”机制

前面几节,我们主要分析和讨论了 Linux 内核中常用的几种数据结构(链表、队列、映射、二叉树、红黑树)以及相关C语言代码实现,这是研究 Linux 内核其他内容的基础,本节将介绍一下内核中的“中断”机制。 中断的基本概念 现在来设想一个简单,但是又很常见的场景:当用户按下键盘...

lcc 2周前 (02-05) 27℃ 0评论 0

linux笔记

linux学习22,linux内核中的红黑树是怎样设计和使用C语言实现的?

上一节较为详细的讨论了普通二叉搜索树的局限性,在此基础上引出了红黑树的概念并介绍了其原理。在文章最后提到,为了维护一棵红黑树,在插入或者删除节点后,需要对二叉树做重着色和变换操作。那么,为什么要做重着色和变换操作呢?怎么做呢?本节将结合 linux 内核源代码讨论之。 为什么红...

lcc 3周前 (01-30) 21℃ 0评论 0

linux笔记

linux学习21,自平衡二叉树和红黑树的原理和特点

二叉搜索树的局限性 上一节较为详细的介绍了C语言中的二叉搜索树,提到数据采取二叉搜索树的结构存储,可以获得不错的搜索性能。 二叉搜索树之所以有不错的搜索效率,是因为在往树中插入数值时,始终严格的遵守左子节点值比父节点值小,右子节点值比父节点大的准则。以搜索 12 为例: 从根节...

lcc 4周前 (01-26) 37℃ 0评论 2

linux笔记

linux学习第20节,二叉树的特性和插入、查询、删除等基本操作

前面几节较为详细的讨论了 linux 内核常用的链表、队列、映射等几种数据结构,本节将介绍C语言中另一种重要的数据结构——二叉搜索树(通常简称为BST),并且将一行一行写出相关的C语言代码。 二叉树的概念 树结构是一个多层的特定数据结构,每个节点之间通过指针连接(这点有些像链表)...

lcc 4周前 (01-24) 43℃ 0评论 0

linux笔记

linux学习19,内核中的“队列”数据类型

前面两节较为详细的讨论了 linux 内核中链表的设计,以及相关的C语言代码实现。本节再来看看 linux 内核中另外一种常用的数据类型:队列。 “队列”数据结构适合处理“生产者”和“消费者”编程模型 事实上,不仅仅是 linux 内核,基本上稍微有些规模的编程项目都会用到“队列...

lcc 1个月前 (01-22) 57℃ 0评论 0

linux笔记

linux学习18,内核是如何操作链表的

上一节较为详细的介绍了 linux 内核中链表的设计与实现,能够看出,内核实际上是将链表“塞入”数据结构的。事实上,为了方便的操作这些链表,linux内核实现了一系列方法,本节将了解此。 链表的初始化 正如上一节介绍的,list_head 本身没有记录额外的信息,它仅仅起到连接...

lcc 1个月前 (01-21) 43℃ 0评论 0