io_uring(1) – 我们为什么会需要 io_uring

io_uring(1) – 我们为什么会需要 io_uring

io_uring IO 到底怎么啦 当前 Linux 对文件的操作有很多种方式,最古老的最基本就是 read 和 write 这样的原始接口,这样的接口简洁直观,但是真的是足够原始,效率什么自然不是第一要素,当然为了符合 POSIX 标准,我们需要它。一段时间之后,程序员们发现,人们需要更为简单的 API,于是出现了 pread 和 pwrite 它允许我们在读写时直接传递 offset,显而易见它表现的更为优秀,…

Linux 各种 initcall 的调用原理

Linux 各种 initcall 的调用原理

Linux 很早以前就想写一下关于 initcall 的相关知识点,但是一直苦于没有特别强烈的需求以及自己的懒惰才拖到现在,其实一直在想要不要写一篇这样的文章,毕竟目前网上能够查阅到几乎所有的资料,不过也没有什么关系,就当是为了记忆把之前的一些理解写下来。 module_init 与其他的 __initcall 很早以前,不理解模块是如何插入到内核中的,特地的分析了一次 module_init 是如何工作的,…

使用 Qemu 虚拟 ARM64 平台演示 kdump 崩溃转存

使用 Qemu 虚拟 ARM64 平台演示 kdump 崩溃转存

ARM64 为什么想起写这篇文章呢?第一是最近在研究 kdump/kexec 等系列的内核崩溃现场保护能力,所以有相关的技术积累,但是这篇文章不打算什么分析,因为接下来的文章我会分析什么是 kdump 以及如何实现内核崩溃现场保护;第二是因为方便记忆,我自己平常不太喜欢写 Word 这种类型的工作总结,比较喜欢 Markdown 这种标记性语言,他方便我很快的排版以及很好的代码展示,所以我写到了这里,既方便了…

Ubuntu 下的 Docker 安装与使用

Ubuntu 下的 Docker 安装与使用

docker Docker 安装 为什么想到使用 Docker 呢?是因为 Docker 能够提供给我一个相对比较干净的系统而不需要关心宿主机到底多么杂乱(我这么做真的是因为我的宿主机太乱了,各种复杂的依赖和操蛋的资源共享方式)。首先需要安装一个 Docker 的服务程序,我的宿主机是 UbuntuKylin,直接通过 Docker 的官方安装手册安装即可。 [jackieliu@localhost ~]$ s…

Linux 软件工程师的书籍推荐

Linux 软件工程师的书籍推荐

Linux 自接触计算机开始前前后后大约接触过不下于 100 本计算机相关的书籍,这其中有写得很棒的当然也有写得很糟糕的书籍 1,写得棒的我接下来将为入行者一一推荐。 新手入行 C 程序设计语言 如果你是新手入行者,那么我推荐你先从学习 Linux 操作以及基本的 C 语言开始, 不论你之后从事什么工作,C 语言学习了总是有好处的,毕竟他能够使你一通百通,作为远古语言并且一直长青自然是有他的道理。 以上三本书…

如何往 Linux 内核社区提交代码

如何往 Linux 内核社区提交代码

Linux 总有这样一群人,不计报酬不辞辛苦的为这个世界的美好添砖加瓦,在这一类人中的某一些人,他们开创了许多伟大的开源工程,这些工程也许会随着年代的久远逐渐被替代,但仍然有一些随着时光流逝变得愈发强大,这其中就包括了 Linux 内核工程。还有一群怀揣着梦想的人,总是提醒自己不断的变得强大,变得专业,所以依托于这些优秀的工程开始自己的探索之路,这其中刚好就包括你我。 不论你的 Java 写得多么的溜,C 语…

我与 Shadowsocks 的科学上网之旅

我与 Shadowsocks 的科学上网之旅

Shadowsocks 那段历史 我喜欢新技术,从最开始的时候会抱着比如计算机报或者类似的杂志隔空想象黑客技术,在自己的脑子中推敲如何 SQL 注入如何盗取 QQ 号等等方法。随着时间推移我接触到了搜索引擎,那个时候 Google 还没有退出中国,那段时间是美好的也是无奈的,尽管我不关心政治与审查,但是这次闹得全球沸沸扬扬的事件让我在很长的一段时间失去了能够利用 Google 查阅资料的能力。 后来上了大学,学校的校园网…

Linux 操作系统读写寄存器

Linux 操作系统读写寄存器

Linux 今天与大家分享如何在 Linux 操作系统中读写寄存器,当然对于熟悉嵌入式系统的人来讲早就烂熟如心,但是还是写出来方便交流与提示后来者。 Linux 内核中操作寄存器 其实对于 Linux 内核中操作寄存器是一件特别简单的事情,首先你需要知道你要操作寄存器的地址,有可能是网卡状态寄存器,有可能是门铃寄存器等等,不管是什么寄存器他都是在内存中映射出来的一段地址。 #include <linux…

自旋锁 spin_lock、 spin_lock_irq 以及 spin_lock_irqsave 的区别

自旋锁 spin_lock、 spin_lock_irq 以及 spin_lock_irqsave 的区别

Linux 能够停留下来认真读这篇文章的人大部分都已经了解了什么是自旋锁,至少知道自旋锁就是不停的询问资源有没有准备好的一把锁,这个从概念上很容易理解,当然他的内在也是很容易实现。 为什么需要自旋锁 很多时候我们并不能采用其他的锁,比如读写锁、互斥锁、信号量等。一方面这些锁会发生上下文切换,他的时间是不可预期的,对于一些简单的、极短的临界区完全是一种性能损耗;另一方面在中断上下文是不允许睡眠的,除了自旋锁以外…

加载更多