深入剖析:Linux 内核与系统编程的底层原理https://s.juejin.cn/ds/iPqpXf4P/
本课程全面深入地讲解了 Linux 内核与系统编程的底层原理,内容分为五大部分,每部分内容相对独立,读者可以根据自己的兴趣选择学习:
- 基础篇
- CPU 篇
- 内存篇
- IO 篇
- 容器篇
基础篇
涵盖了从调试工具到内存管理等多个方面,具体内容包括:
- 掌握 GDB 调试的基本操作,深入理解其工作机制和 ptrace 系统调用的应用;
- 学习如何使用 QEMU 和 GDB 调试 Linux 内核;
- 了解汇编语言的基础知识,从汇编视角理解 C/C++、Go 等语言;
- 探讨同步机制和锁的实现原理,以及线程本地存储 TLS 的机制;
- 了解 Linux 系统中的时钟源、高性能计时方法,以及零拷贝技术;
- 学习
LD_PRELOAD
的使用和其在性能分析中的应用; - 分析系统调用的实现原理,掌握 ftrace 和 trace-cmd 工具的使用;
- 手写 tcpdump。
CPU 篇
涵盖了进程和线程的管理,包括:
- 讲解 Linux 内核中的 task_struct 结构,以及进程的状态和转换条件;
- 介绍孤儿进程和僵尸进程,以及 Kubernetes 中的 pause 容器问题;
- 深入理解进程上下文切换和调度算法;
- 介绍火焰图的使用,以及 CPU 亲和性和超线程技术;
- 通过代码示例讲解协程的实现。
内存篇
主要讲解了虚拟内存和物理内存的概念,以及内存分配和回收的机制:
- 理解虚拟内存和物理内存的基本概念;
- 比较 brk 和 mmap 等内存分配系统调用的原理和应用;
- 了解进程内存分布的结构和缺页中断 PageFault;
- 分析 Linux OOM 机制和内存分配器。
IO 篇
主要介绍了虚拟文件系统(VFS)和文件描述符的分配机制:
- 理解 VFS 的概念和四大数据结构;
- 了解文件描述符的分配原则和文件描述符表;
- 剖析 epoll 源码。
容器篇
主要介绍了容器原理和网络相关的知识:
- 讲解支撑容器实现的原理,如 cgroup、namespace、rootfs 等;
- 介绍容器网络的基础知识;
- 剖析内核层的 conntrack 和 iptables;
- 讲解 DNS 和 ARP 的实现原理。
为了帮助读者全面了解课程内容,特附上课程的 思维导图
:
适宜人群
本课程内容广泛,适合以下人群学习:
- 开发工程师:通过学习 Linux 内核原理,能写出更高效、更高质量的代码。
- 运维/DevOps 工程师:深入理解 Linux 系统,有助于快速定位和解决系统问题。
- 测试开发工程师:掌握系统编程,能更有效地开发测试工具。
- 技术爱好者:探索 Linux 内核的奥秘,对操作系统和计算机体系结构有更深刻的认识。