《给开发者的底层原理课 - 掘金小册》PDF 下载

hdbeta.com
  • 更新时间: 2024-06-29
  • 文件大小: 13.5 MB
  • 关注热度: 293
资源信息 / Information
挖坑的张师傅我目前的主要工作集中在基础架构、DevOps 和边缘计算等领域。在日常工作中,我经常会遇到业务方面奇奇怪怪的问题,涉及容器网络、文件 I/O、内存等方面。在解决这些问题的过程中,我意识到,要找到问题的根因,需要扎实的底层原理知识作为支撑,否则只能靠算命。
基础篇
CPU 篇
内存篇
IO 篇
容器篇
基础篇 的内容涵盖了多个核心工具和技术的使用及原理,主要包含下面这些内容:
了解 GDB 的基本使用方法,包括如何启动调试、设置断点、查看变量和单步执行等;
揭开 GDB 的神秘面纱,深入探讨 GDB 的工作机制,了解其如何通过 ptrace 系统调用实现对被调试程序的控制和调试;
讲解如何使用 QEMU 和 GDB 调试 Linux 内核;
简单了解汇编语言的基本概念,能结合搜索引擎和大模型看懂理解汇编代码,从汇编的角度理解 C/C++、Go 的诸多细节;
探讨同步机制和锁的实现原理,介绍计算机先驱们是如何优化锁的;
带你深入理解线程本地存储 TLS 的实现原理;
介绍 Linux 系统中的时钟源和高性能计时方法,以及 vdso 系统调用的实现和应用;
介绍零拷贝技术的原理和实现,了解如何通过零拷贝提高数据传输效率;
介绍 LD_PRELOAD 的使用方法和应用场景,介绍在审计、故障注入、性能分析上的应用;
深入分析系统调用的实现原理,如何传参,系统调用涉及的上下文切换等;
介绍 ftrace 和 trace-cmd 工具的使用方法,《给开发者的底层原理课 - 掘金小册》PDF 下载 ePub 下载,方便你追踪内核调用过程,理解业务的调用会触发那些内核函数;
手写 tcpdump。
CPU 篇 包含下面这些内容:
进程线程的本质,详细讲解 Linux 内核中 task_struct 结构;
介绍进程的各种状态及其转换条件,帮助你理解进程的生命周期,尤其是 D 状态等;
讲解孤儿进程和僵尸进程的概念及其处理方法;
探讨 Kubernetes 中的 pause 容器和僵尸进程问题;
介绍 D 状态进程的含义及其对系统负载的影响,如何构造 D 状态的进程;
详细讲解进程上下文切换的本质,让你了解上下文切换发生什么,了解其对系统性能的影响;
介绍完全公平调度(CFS)算法的原理和实现,理解线程是如何分配到 CPU 时间的;
介绍实时进程调度算法的原理和实现,很多内核线程都是以实时调度策略运行的,我们需要搞懂实时调度算法到底意味着什么;
介绍火焰图的概念和使用方法,帮助你分析和优化 CPU 性能;
讲解 CPU 亲和性和超线程技术的原理和应用,了解在多核处理器中我们应该注意什么;
通过实际代码示例,讲解如何手写协程,帮你了解协程的本质。
内存篇 包含下面这些内容:
理解虚拟内存和物理内存的概念;
比较 brk 和 mmap 两种内存分配系统调用的原理和应用场景,了解内存是如何分配的;
介绍进程内存分布的基本概念和结构,这在我们分析进程的内存占用时十分有用;
了解什么是缺页中断 PageFault;
深入分析 Linux OOM 机制,了解 overcommit、oom_score_adj 等概念;
讲解 malloc 和 free 函数的底层实现原理,理解 ptmalloc、jemalloc 等内存分配器的角色。
IO 篇 主要包含下面这些内容:
介绍虚拟文件系统(VFS)的概念和四大数据结构,理解 Linux 一切皆文件的精妙设计;
了解文件描述符(fd)分配的最低未使用原则;
重点理解文件描述符表(进程级)、打开文件列表(系统级)、i-node 表(系统级)这三者之间的关系;
剖析 epoll 源码,理解等待队列、epoll 数据结构、事件回调等知识。
容器篇 主要介绍容器原理以及网络相关的知识:
支撑容器实现的实现原理:cgroup、namespace、rootfs 等概念;
容器网络基石:veth、bridge、tun/tap 等;
剖析内核层 conntrack 的实现;
理解 iptables 的基础概念与自定义规则链;
详细介绍 DNS 的实现原理以及在各大语言中的注意事项;
介绍 ARP 的基础知识以及 GC 的注意事项;
通过源码走读,介绍 socket 编程中的核心函数的内核层实现。
下载地址 / Download