自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 零拷贝到底快在哪?

通过 200MB 文件的 benchmark 测试,对传统 read+write 与 sendfile 零拷贝两种数据传输方案进行了对比。实验数据显示:传统方案耗时294ms、触发十万余次系统调用、涉及 2 次 CPU 拷贝;sendfile 方案耗时 126ms、仅 1 次系统调用、0 次 CPU 拷贝。两者耗时差距约 2.3倍。本文从代码实现、系统调用跟踪、底层原理三个层面对差距成因进行拆解分析。

2026-07-27 01:53:18 608

原创 锁的进阶:自旋锁,死锁与条件变量

从自旋锁的硬件原语出发,经过手写实现、benchmark 验证、cache bouncing 分析,再到死锁的复现与排查,最后用条件变量实现了一个完整的生产者消费者模型。

2026-07-21 18:35:53 629

原创 C++ 多线程入门:创建线程、加锁、计数

从线程创建到竞态解决,用代码跑通多线程编程的四个核心问题:线程怎么开、生命周期怎么管、共享数据为什么出错、mutex 和 atomic 怎么选。

2026-07-17 02:42:24 704

原创 ext4文件系统详解--hexdump看清磁盘布局

用 dd 创建 32MB 空白镜像,mkfs.ext4 格式化后,用 hexdump 逐块读出来:超级块里的魔数 0xEF53、块位图里哪几个 bit 置 1了、文件内容直接躺在哪个数据块里——全都明明白白。 读完能理解 ext4 在磁盘上到底长什么样,以及怎么用最原始的方式去验证它。

2026-07-14 17:25:48 877

原创 硬链接和软链接的区别--inode 详解

本文从 stat 命令出发,通过 ln、strace 等工具的实验验证,深入拆解 inode 结构、文件名与 inode 的分离设计、硬链接与软链接的本质区别,以及 rm删除文件的底层原理(unlink + 引用计数)。同时涵盖目录的底层实现差异(ext4 线性列表 vs XFS B 树索引),最后给出三个真实排查场景。适合对 Linux文件系统想深入理解而不是停留在表面使用的读者。

2026-07-12 20:21:32 655

原创 malloc(1) 背后的 brk 与 mmap —— glibc 内存分配源码探究

本文通过 malloc(1) 这一最小内存分配请求,借助 strace 和 sbrk 观察 glibc 的内存分配行为。实验发现首次 brk 扩展量为 132 KB,远大于请求的 1 字节。针对这一现象,对照 glibc 2.39 源码,逐层梳理了 chunk 数据结构、多级缓存分配路径、top chunk 机制、mmap 阈值切换及 free 回收路径。

2026-07-11 17:11:06 586

原创 Linux CFS 完全公平调度器深度拆解

从零拆解 Linux CFS 调度器:vruntime 公式怎么算、nice 值怎么影响权重、为什么用红黑树、调度延迟和最小粒度如何权衡、时钟中断到进程切换的完整流程、上下文切换慢在哪。配合内核源码验证核心逻辑,适合想深入理解调度器原理的读者。

2026-07-09 03:08:16 818

原创 g++ 从入门到忘记

本文介绍了g++编译器的基本使用和编译原理。主要内容包括: gcc与g++的区别:g++专门用于编译C++,会自动链接C++标准库,而gcc编译C++需要手动链接。 在Linux系统上安装g++的方法和版本检查命令。 简单C++程序的编译运行示例,解释了g++命令的基本用法和-o参数的作用。 详细拆解了g++编译的四个阶段: 预处理(展开头文件和宏) 编译(生成汇编代码) 汇编(生成机器码) 链接(生成可执行文件) 通过具体示例展示了预处理和编译阶段的效果,包括宏展开和汇编代码生成。 文章使用简单的数学计算

2026-07-07 01:30:44 532 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除