
书: https://pan.baidu.com/s/1untyKaWXt7RJt7udfaVI6A?pwd=44y8
笔记如下:
- Linux内核架构:解析Linux内核的模块化设计,包括进程管理、内存管理、文件系统等核心子系统。
- 内核编译与移植:详细讲解如何配置、编译内核,并移植到ARM/RISC-V等嵌入式设备。
- 进程调度机制:分析CFS(完全公平调度器)、实时调度策略(SCHED_FIFO/SCHED_RR)及其参数调优。
- 内存管理:深入剖析物理内存分配(Buddy System)、虚拟内存(MMU)、Slab分配器及OOM处理机制。
- 设备驱动模型:基于字符设备、块设备和网络设备驱动框架,实现GPIO、I2C等外设驱动开发。
- 中断与时钟:理解上半部/下半部机制(软中断、tasklet、工作队列),以及高精度定时器(hrtimer)的使用。
- 同步与互斥:应用自旋锁(spinlock)、信号量(semaphore)、RCU等机制解决内核态并发问题。
- 文件系统实现:剖析Ext4/Btrfs等文件系统的磁盘布局,并编写简易文件系统模块。
- 内核调试技巧:使用printk、ftrace、kprobe和KGDB进行内核级问题追踪与性能分析。
- 电源管理:实现设备休眠(suspend/resume)、CPU调频(CPUFreq)等低功耗策略。
- 网络协议栈:深入Linux网络子系统,优化TCP/IP协议栈并开发Netfilter钩子函数。
- 容器技术基础:分析Namespace、Cgroups机制如何支撑Docker等容器化技术。
- 安全机制:配置SELinux/AppArmor,理解内核安全模块(LSM)的加载与策略定制。
- 实时性优化:通过PREEMPT-RT补丁改造标准内核,满足硬实时(Hard Real-Time)需求。
- 内核模块开发:编写可动态加载的内核模块(.ko文件),处理版本兼容性与符号导出。
- 性能调优:使用perf、eBPF工具分析系统瓶颈,优化缓存利用与上下文切换开销。
- 交叉开发环境:配置QEMU模拟器与GDB交叉调试,实现内核的远程开发与测试。
- 用户态交互:通过procfs、sysfs、netlink等机制实现内核与用户空间的数据通信。
- 开源社区协作:解读内核邮件列表提交规范,参与补丁提交与代码审核流程。
- AI与内核融合:探索内核层面对NPU加速的支持,及AI推理框架(如TensorFlow Lite)的底层优化。