编辑
2025-11-25
系统知识
0

本文将在Ubuntu22.04下搭建一个QEMU的运行环境,并编译Linux内核源码,随后通过QEMU来调试Linux内核,用以辅助Linux内核的学习。

事实上,我在Ubuntu22.04Ubuntu24.04下都试过了,流程上是一样的,但是Ubuntu24.04因为内核版本太新(至少对于在写这篇文章的时间点来说),踩了一些细节上的坑,最终调试效果并不好,所以我还是建议选用Ubuntu22.04

编辑
2025-11-23
系统知识
0

本篇文章中,我会根据我目前的工作经验,并结合相关资料,从基本流程上简要地探究一下PCIE DMA操作的交互流程。

适用PCIE的设备有很多类型,典型的就是网卡、NVMe SSD、GPU,不同系统上细节也不同,因此我将以Linux为例,进行相关研究。

我们不需要过分追求某个细分主题下的详细内容,因为每个主题都很复杂,不是一篇文章就可以讲完的,本文旨在让你想通完成一个PCIE DMA的操作大体上都会经历什么。

编辑
2025-11-22
网络知识
0

本文旨在用纯软件的方法,来模拟真实的二层网络,我将采用Docker来模拟一台真实的主机,用OVS(Open vSwitch)来模拟一台真实的二层交换机,并构造一个稍有复杂性的网络拓扑。

注意,我所模拟出的网络,是可以和真实物理网络进行交互的,这其中的核心思想是将一台真实的主机看作一个网络,即在这台主机上利用纯软件的方法来构建一个网络。

本文不涉及任何编程实现,你只需要准备好VMwareUbuntu22.04DockerOVS

这比用网络模拟器好玩多了,因为无论是虚拟机还是Docker容器里,你都是真的可以跑你自己的东西的。

编辑
2025-06-01
杂七杂八的想法
0

我对学习的一个看法就是,它确实不是一件很容易做到的事情,也的的确确是反人性的。

趋利避害是人的天性之一,学习在一定程度上是可以归类到“害”这个类别里面的,这会导致我们下意识的躲避学习。

而我个人认为,关于学习,首要的关键不是“如何学习”之类的方法论(但这不意味方法不重要),而是应该先搞清楚我们不愿意学习的原因,也就是使学习成为“害”的原因,在这之后再谈“如何学习”。

这个道理很简单,知道了不愿意学习的原因,那就从这些个原因入手,去解决不愿意学习这件事,才有学习方法的后话,你连学都没开始学,知道那么多学习方法又有什么用呢。

编辑
2025-01-14
系统知识
0

在多线程编程当中,经常会遇到一些诸如“同步/异步”,“并发/并行”这样的相似基本概念。

这些概念对初学者来说往往很容易混淆,网络上分散着各式各样的说法,有些甚至是矛盾的,这就导致了一个经典问题,“不知道该听谁的”。

因此我在这里谈一谈我对这些概念的主观理解,不是教你怎么想,而是看我怎么想

事实上,也不是非要听谁的,重点是多动手实践思考,然后总结经验形成自己的理解。

单纯的复刻他人的想法,容易遗忘的同时,也没法在生产实践中能很好的指导你,到底不是自己的东西,尽信书不如无书。