Linux 内核双向链表
双向链表在内核中是一个非常常见的存在,从数据的关联,队列的创建,每一个子系统中,都有他的影子存在,它属于内核最基本的一个部件。那么他虽然是非常的常见,但是要弄清楚他也不是那么容易,因为他与平常自己设计的双向链表还不太一样。 目录 一个普通的双向链表 对于一个普通的双向链表而言,我们多数会这么设计。 …
- 7.86k
- 11
- 阅读全文
双向链表在内核中是一个非常常见的存在,从数据的关联,队列的创建,每一个子系统中,都有他的影子存在,它属于内核最基本的一个部件。那么他虽然是非常的常见,但是要弄清楚他也不是那么容易,因为他与平常自己设计的双向链表还不太一样。 目录 一个普通的双向链表 对于一个普通的双向链表而言,我们多数会这么设计。 …
SysRq 魔键是一组由 Linux 内核解析的组合键,他使得用户可以直接执行各种低级指令,这些操作与当时的系统状态无关。例如从冻结中恢复,或者在不破坏文件系统的情况下重启系统,他的效果类似与直接按住了计算机的硬件重置按钮(电源开关),但是它具有更多的选项和更多的控制权。 通过这个组合键,为用户提供…
目录 说在前面的废话 本章开始,我会深入代码进行分析,逐步的剖析最新版本(5.3 版本)的 io_uring 代码实现逻辑1,内核代码并不是那么容易就描述得清晰的,每一个小小的判断或者小小的 flag 都有自己的历史,最终导致的就是代码逻辑上晦涩难懂,尤其是没有从原始代码开始理解的小伙伴,看到最终的…
目录 IO 到底怎么啦 当前 Linux 对文件的操作有很多种方式,最古老的最基本就是 read 和 write 这样的原始接口,这样的接口简洁直观,但是真的是足够原始,效率什么自然不是第一要素,当然为了符合 POSIX 标准,我们需要它。一段时间之后,程序员们发现,人们需要更为简单的 API,于是…
很早以前就想写一下关于 initcall 的相关知识点,但是一直苦于没有特别强烈的需求以及自己的懒惰才拖到现在,其实一直在想要不要写一篇这样的文章,毕竟目前网上能够查阅到几乎所有的资料,不过也没有什么关系,就当是为了记忆把之前的一些理解写下来。 目录 module_init 与其他的 __initc…
为什么想起写这篇文章呢?第一是最近在研究 kdump/kexec 等系列的内核崩溃现场保护能力,所以有相关的技术积累,但是这篇文章不打算什么分析,因为接下来的文章我会分析什么是 kdump 以及如何实现内核崩溃现场保护;第二是因为方便记忆,我自己平常不太喜欢写 Word 这种类型的工作总结,比较喜欢…
目录 Docker 安装 为什么想到使用 Docker 呢?是因为 Docker 能够提供给我一个相对比较干净的系统而不需要关心宿主机到底多么杂乱(我这么做真的是因为我的宿主机太乱了,各种复杂的依赖和操蛋的资源共享方式)。首先需要安装一个 Docker 的服务程序,我的宿主机是 UbuntuKyli…
自接触计算机开始前前后后大约接触过不下于 100 本计算机相关的书籍,这其中有写得很棒的当然也有写得很糟糕的书籍 1,写得棒的我接下来将为入行者一一推荐。 目录 新手入行 C 程序设计语言 如果你是新手入行者,那么我推荐你先从学习 Linux 操作以及基本的 C 语言开始, 不论你之后从事什么工作,…
总有这样一群人,不计报酬不辞辛苦的为这个世界的美好添砖加瓦,在这一类人中的某一些人,他们开创了许多伟大的开源工程,这些工程也许会随着年代的久远逐渐被替代,但仍然有一些随着时光流逝变得愈发强大,这其中就包括了 Linux 内核工程。还有一群怀揣着梦想的人,总是提醒自己不断的变得强大,变得专业,所以依托…