Linux内核源码分析课程-第五代大纲
零声教育
2022-08-01
课程购买地址
腾讯课堂 Linux内核源码分析课程
零声教育-Linux内核源码分析课程大纲 V5.2
进程管理专题
内存管理专题
网络协议栈专题
设备驱动管理专题
文件系统及内核活动组件专题
零声服务与内核参考书籍资料
1.3 进程调度进阶部分
1.2 进程管理提高部分
1.1 进程管理基础部分
2.1 内存管理基础部分
2.2 内存管理进阶部分
3.1 网络协议栈架构(一)
3.2 网络协议栈架构(二)
4.1 设备驱动基础架构
4.2 Linux设备模型
4.4 字符设备操作
4.5 块设备操作
5.1 虚拟文件系统
5.2 磁盘文件系统
1.1.1 Linux操作系统进程分析
1.1.2 存储器结构与分区存储管理
1.1.4 文件管理基础架构
1.1.5 x86处理器架构
1.1.6 汇编基础与寻址方式
1.2.1 Linux内核源码组织结构分析
1.2.2 进程原理与生命周期及系统调用
1.2.6 进程内核do_fork()/kernel_clone()函数分析
1.2.5 task_struct数据结构分析
实战操作:内核数据结构(链表和红黑树)
1.3.1 进程调度策略
1.3.2 四种进程优先级
1.3.3 五大调度类解析
1.3.4 多核调度分析
1.3.5 SMP调度类处理器负载均衡
实战操作:进程优先级与调度策略
实战操作:调试Linux内核模块
实战操作:动手编译自己Linux内核
实战操作:进程间通信详解与实现
SCHED_DEADLINE
SCHED_FIFO
SCHED_RR
SCHED_NORMAL
调度优先级
静态优先级
正常优先级
实时优先级
stop_sched_class
dl_sched_class
rt_sched_class
cfs_sched_class
idle_shced_class
调度组与调度域
负载计算与均衡算法
2.1.2 SMP/NUMA模型组织
2.1.3 物理内存组织结构与模型
2.1.4 页表/页表缓存原理
2.1.5 处理器缓存机制及SMP缓存一致性
2.1.6 内存分配器(bootmem/memblock)
实战操作:伙伴系统算法与实现
2.1.7 块分配器(Slab/Slub/Slob)原理实现
实战操作:slab缓存API系统调用实现详解
实战操作:进程地址空间在内核(VMA实现)
实战操作:kmalloc/vmalloc(系统调用实现)
2.2.1 不连续内存分配器原理
2.2.3 LRU算法与反向映射
2.2.4 缺页异常分析
2.2.5 内存反碎片技术
2.2.6 内存检测与死锁检测
2.2.7 内核调优参数
2.2.8 内存屏障与内核互斥原理
2.2.9 内存与Kasan工具分析
2.2.10 页回收原理机制
实战操作:内存池原理及实现
2.2.12 内核调试方法printk/oops分析
实战操作:perf性能分析工具
写时复制缺页异常
do_page_fault函数分析
文件映射缺页中断
匿名页面缺页异常
计算扫描页数
收缩活动页链表
回收不活动页
页交换与回收slab缓存
perf原理机制与安装配置
perf采集数据命令29种工具应用
perf采集数据至火焰图分析
编译器屏障
3.1.1 套接字及分层模型
3.1.3 TCP/UDP协议栈分析
3.1.6 传输层分析
3.1.7 IPsec(互联网安全协议)
3.1.8 IPv4策略路由选择
3.1.9 无线子系统分析
802.11 MAC帧结构分析
扫描/身份验证/关联
高吞吐量(802.11n)
网状网络(802.11s)
3.2.1 Linux内核邻接子系统分析
3.2.2 高级路由选择
3.2.3 IPv6协议分析
3.2.4 InfiniBand栈的架构
3.2.5 NIC数据包接收与发送分析
3.1.10 Netfilter内核防火墙报文处理
组播路由选择
策略路由选择
多路径路由选择
InfiniBand组件与编址
InfiniBand功能与数据包
4.6 NIC网络接口卡
4.1.1 I/O体系结构
4.1.2 内核块设备详解
块设备I/O操作集合及源码分析
通用磁盘及分区源码分析
4.2.1 深度剖析LDM
4.2.2 设备模型和sysfs
LDM数据结构分析
设备驱动程序原理与实现
kobject结构分析
kobj_type/内核对象集合
sysfs文件及属性
轮询sysfs属性文件
4.4.1 主设备与次设备
4.4.2 打开设备文件
4.4.3 分配与注册字符设备
4.4.4 写文件操作实现
open/release方法
read/write方法
llseek/poll方法
填充file_operations结构体
4.5.1 块设备表示与数据结构
4.5.4 BIO数据结构
4.5.6 ioctl系统调用详解
4.5.7 总线系统模块
ISA总线
PCI/PCI-E总线
USB总线
4.6.1 数据结构
4.6.2 缓冲区管理与并发控制
实战操作:NIC网卡驱动架构实现
套接字缓冲区
网络设备接口
5.2.1 Ext2文件系统
实战操作:proc文件系统分析与实现
Ext2物理结构
Ext2数据结构分析
Ext2文件系统操作
5.1.1 文件系统类型与文件模型研究
5.1.2 VFS数据结构
5.1.3 文件系统调用
5.1.4 挂载文件系统
5.1.5 无持久文件系统
超级块(super_block)
挂载描述符(mount结构体)
索引结点(inode结构体)
目录项缓存(dentry结构体)
打开/关闭文件
创建/删除文件
读/写文件实现
文件回写技术原理/接口实现
系统调用mount处理流程
绑定挂载/挂载命名空间
挂载/注册rootfs文件系统
proc文件系统
proc数据结构
初始化及装载proc
数据读写实现
计算机基础技术
进程原理
Linux特性与内核版本
进程特征与调度算法
死锁产生必要条件
进程状态及转换
进程调度策略与调度依据
主存储器结构及技术指标
分区存储管理技术
物理内存与虚拟内存
1.1.3 存储管理
CPU(中央处理器)和内存
64位通用寄存器结构
x86平台
Linux内核(五大子系统关系)
内核源码目录结构详解
如何快速掌握阅读内核源码方法与技巧
1.2.7 RCU机制及内存优化屏障
1.2.8 内核内存布局和堆管理
1.2.4 实时调度类及SMP和NUMA
1.2.3 调度器及CFS调度器
写时复制原理
进程内存布局
进程堆栈管理
系统调用实现
2.1.1 虚拟地址空间布局架构
FIB信息_缓存_下一跳
生成及接收ICMPv4重定向消息
内存管理架构
用户虚拟地址空间布局
内核地址空间布局
系统调用sys_mmap/sys_munmap
物理内存组织三级结构
五大常见内存访问错误
Kasan内核检测工具应用
/proc/sys/kernel/
/proc/sys/vm/
/proc/sys/fs/
2.2.2 页表缓存(TLB)与巨型页
TLB表项格式及管理
ASID原理/VMID原理
处理器对巨型页的支持
标准巨型页原理及查看
bootmem分配器原理
memblock分配器原理及分配流程
伙伴系统原理机制
分配页和释放页实现
发起页回收
内存碎片整理算法
虚拟可移动区域技术原理
处理器屏障
ARM64处理器内存屏障分析
套接字通信基础
网络分层模型
套接字分析
发送与接收UDP数据包分析
发送与接收TCP数据包分析
IPsec基础知识部分
XFRM框架/策略/状态
传输模式/隧道模式/IPsec高可靠性
NIC实现原理与NIC分类
NIC数据包发送与接收流程分析
实战操作:内核Netlink套接字及实战
Netfilter5种挂接点详解
注册Netfilter钩子回调函数源码分析
Iptables基础/表和链及过滤规则
流控制传输协议(SCTP)
数据报拥塞控制协议(DCCP)
5.2.2 Ext4_日志JBD2
Ext4文件系统特性
Ext4文件系统数据结构
Ext4_日志JBD2
2.2.11 缓存着色
内存缓存数据结构
空闲对象链表及着色
数据结构设计与API系统调用
内核模块与用户应用程序设计
创建与释放邻居API接口分析
ARP协议(IPv4)发送与接收请求分析
Netfilter框架简介
数据包选择Iptables
数据包过滤
NAT(网络地址转换)
连接跟踪与数据包操纵
NAT钩子回调函数分析
NIC网卡驱动的recv与sk_buff
NIC网卡open与stop的实现
NIC编译与用户态协议栈
系统总线(PCI、ISA、SCSI、USB等)
与外设交互及控制设备
访问设备详解
4.6.3 网络吞吐量
协议性能
驱动程序性能
实战操作:字符设备驱动通信
字体设备驱动数据结构设计
数据发送端设计
数据读取端设计
Makefile文件设计
make及字符设备驱动测试
删除字符设备驱动模块
4.5.2 向系统添加磁盘及分区
4.5.3 打开块设备文件
通用驱动程序模型
4.5.5 I/O调度
4.3 资源分配
4.3.1 资源管理
4.3.2 I/O内存分析
4.3.3 I/O端口分析
USB设备驱动分析
磁盘文件系统(DF)
网络文件系统(NF)
inode
链接
API编程接口
管理proc数据项
系统控制机制
sysfs文件系统
sysfs数据结构
装载文件系统
文件和目录操作
向sysfs添加数据内容
PCI设备驱动分析
5.3 数据同步
5.3.1 内核定时器
5.3.2 原子操作与屏障
5.3.3 自旋锁机制
5.3.4 互斥锁
5.3.5 读写锁与RCU
实战操作:同步管理RCU实现
5.4 内核活动组件
5.4.1 中断处理流程及IRQ
5.4.2 irq_desc数据结构分析
5.4.3 开启_禁止中断
5.4.4 软硬中断分析
5.4.5 中断控制器及域详解
5.4.6 tasklet_等待队列_工作队列
5.4.7 审计规则及数据结构分析
5.5 开源社区介绍
5.5.1 如何参与开源社区
5.5.2 如何提交Linux内核补丁
实战操作:内存映射详解
数据结构分析
系统调用实现
创建/删除内存映射
自旋锁的实现与变体
spin_lock()/raw_spin_lock()函数分析
mutex数据结构分析
互斥锁的快速与慢速通道
乐观自旋锁等待机制
mutex_unlock()函数分析
6.1 零声服务
6.2
内核参考书籍资料
6.2.1 《Linux设备驱动开发详解》 宋宝华 编著
6.2.2 《深入Linux内核架构》(德)莫尔勒著 郭旭 译
6.2.3 《Linux内核设计与实现》 原书第3版 作者:拉芙(RobertLove)
6.2.4 《深入理解LINUX网络技术内幕》 作者[意] Christian Benvenuti 著
6.2.5 《深入理解LINUX内核》 第三版 [美] 博韦 著, 陈莉君,张琼声,张宏伟 译
6.1.1 学习方法
每次课的知识体系 总结到技术博客
不理解的技术点 与老师们进行沟通
6.1.2 面试跳槽
简历梳理 技术凸显
模拟面试 技术表示
薪资谈判 福利争取
offer选择 职业规划
段式存储管理
页式存储管理
文件基础知识部分
Linux文件系统
VFS(虚拟文件系统)
汇编基础技术部分
常用寻址方式
总线速度及主机控制器
传输模式与寻址方法
USB驱动总线数据结构分析
PCI基础架构
PCI数据结构分析
PCI驱动讲解
网络接口及IP地址实现
实战操作:epoll原理及系统调用
epoll原理与API分析
epoll内核实现
水位调优参数min_free_kbytes
页面分配参数lowmem_reserve_ratio
3.1.2 sk_buff与net_device详解
从套接字缓冲区获取TCP首部
net_device结构分析
sk_buff结构分析
ipv6协议基础架构
接收IPv6数据包
发送IPv6数据包
3.1.5 网络层分析
接收分组原理与分析
发送分组原理与分析
分组转发原理与分析
3.1.4 ICMP协议分析
发送/接收ICMPv4消息
发送/接收ICMPv6消息
proc分析与常用文件模块
proc文件调用与实现