根据工作中,常用的内核底层技术点定制课程体系
五大技术专题、20个实战操作模块、2w+代码
课程目标:3-5个月帮助学员掌握内核底层必备技术
5个专题全面提升内核在工作中的常用技术点:进程管理专题、内存管理专题、网络协议栈专题、设备驱动管理专题、文件系统及内核组件专题
一、进程管理专栏
1.1 进程管理基础部分
-
Linux内核源码组织结构
- Linux内核5个子系统关系
- Linux内核源码目录结构详解
- 如何快速掌握阅读内核源码方法与技巧
-
进程原理及系统调用详解
- 进程/进程生命周期
- task_ struct数据结构
- 进程优先级/系统调用
-
调度器及CFS调度器
-
实时调度类/SMP/NUMA
-
进程优先级与调度策略案例分析
-
RCU机制及内存优化屏障
-
内存布局和堆管理
-
多核调度分析
-
内核数据结构:链表和红黑树案例分析
1.2 进程管理案例分析
-
编译自己Linux内核实战分析
-
进程管理4大常用API案例分析
-
系统调用API1
- kthread_create_on_node案例分析
- wake_up_process案例分析
-
系统调用API2
- 获取进程NICE值案例分析
- 设置进程NICE值案例分析
-
系统调用API3
- complete_all案例分析
- _wake_up_sync_key案例分析
-
RCU案例实战分析
-
模拟cfs调度器案例分析
-
进程间通信案例分析
-
SMP调度详解
二、内存管理专栏
2.1 内存管理基础部分
-
虚拟地址空间布局架构
- 内存管理架构分析
- 虚拟地址空间布局
-
内存映射原理机制
-
物理内存组织结构
- 系统调用sys_ mmap/sys munmap
- 内存模块及三级结构
-
引导内存分配器原理
- bootmem分配器原理
- memblock分配器原理
-
伙伴分配器
- 伙伴分配器原理
- 分配页及释放页
-
Slab分配器详解
-
不连续页分配器及页表
-
用户空间缺页异常
-
页表缓存(TLB)与巨型页
- TLB表项格式及管理
- ASID原理NMID原理
- 处理器对巨型页的支持
- 标准巨型页原理及查看
- 巨型页池
-
页回收机制详解
- 发起页回收
- 回收不活动页
- 页交换
- 计算扫描页数
- 收缩活动页链表
- 回收slab缓存
-
内存反碎片技术
- 虚拟可移动区域技术原理
- 内存碎片整理算法
2.2 内存管理案例分析
-
伙伴系统算法案例分析
-
设计per-qpu变量案例分析
-
缺页异常分析
- 写时复制缺页异常
- 文件映射缺页中断
- 匿名页面缺页异常.
- do_page_fault函数分析
-
内核调优参数
- /proc/sys/kernel/
- /proc/sys/vm/
- /proc/sys/fs/
- 水位调优参数min_free_kbytes
- 页面分配参数lowmem_reserve_ratio
-
内存管理meminfo&zoneinf信息分析
-
分配物理页实战分析
-
进程虚拟区间实战分析
-
vmalloc案例实战分析
-
kmalloc案例实战分析
-
kzalloc&kcallolc案例实战分析
-
创建slab缓存案例实战分析
-
创建内存池案例实战分析
-
slab分配器案例实战分析
-
内存映射案例实战分析
-
统计进程虚拟区间页数案例分析
-
缓存着色
-
处理器缓存机制
-
文件页缓存
-
内存与Kasan工具分析
- 五大常见内存访问错误
- Kasan内核检测工具应用
三、设备驱动专栏
3.1 设备驱动基础部分
-
I/O体系结构
- 系统总线(PCI、ISA、 SCSI、 USB等)
- 外设交互及总线控制设备
- 访问设备深度详解
-
内核块设备详解
- 块设备I/O操作及源码分析
- 通用磁盘及磁盘分区源码分析
-
文件系统关联及字符设备操作
- inode/字符设备及块设备操作
- cdev数据结构及读写操作
-
资源分配及总线系统
- 资源分配_I/O内存_I/O端口
- device数据结构/PCI总线/USB总线
-
内核插入模块及删除模块
- 内核模块基础知识
- module_init/module_exit
- insmod/mmod/dmesg
-
PCI设备驱动讲解
- PCI基础及拓扑关系
- pci_host_bridge/pci_bus/pci _dev
- PC驱动讲解与实现
-
USB设备驱动详解
- 总线速度及主机控制器
- 传输模式与寻址方法
- USB驱动总线数据结构分析
-
字符设备操作
-
主设备与次设备
-
打开设备文件
-
分配与注册字符设备
-
写文件操作实现
- open/release方法
- read/write方法
- llseek/ poll方法
- 填充file_operations结构体
-
3.2 设备驱动案例分析
-
USB设备驱动架构分析
- USB系统架构
- 传输模式与寻址方法
- USB驱动总线数据结构分析
-
USB驱动分析
- USB基础及层次详解
- USB驱动常见数据结构
-
以以网驱动分析
- 网络设备驱动框架
- sk_buff/net_device/napi_struct
-
USB3.0设备控制器驱动分析
- USB控制器分析
- dwc3_event/dwc3_event_buffer
-
输入设备驱动程序
- 输入设备驱动程序基础及分析
- 核心数据结构input_dev
- 常用内核编程API接口
-
V4L2视频设备驱动框架
- V4L2视频设备驱动
- V4L2驱动数据结构分析
- V4L2框架常用API详解
-
字符设备驱动项目实战分析
-
字符设备驱动通信案例分析
- 字体设备驱动数据结构设计
- 数据发送端设计
- 数据读取端设计
- Makefile文件设计
- make及字符设备驱动测试
- 删除字符设备驱动模块
-
杂项(MISC)驱动实例分析
四、文件系统专栏
4.1 文件系统基础部分
-
通用文件模型
- 磁盘文件系统(DF)
- 虚拟文件系统(VF)
- 网络文件系统(NF)
- 链接
- API编程接口
-
VFS数据结构
- 超级块(super_block)
- 挂载描述符(mount结构体)
- 索引结点(inode结构体)
- 目录项缓存(dentry结构体)
-
处理VFS对象及标准函数
-
Ext2文件系统
- Ext2物理结构
- Ext2数据结构分析
- Ext2文件系统操作
-
Ext4_日志JBD2
- Ext4文件系统特性
- Ext4文件系统数据结构
- Ext4_日志JBD2
-
proc文件系统
- proc数据结构
- 初始化及装载proc
- 管理proc数据项
- 数据读写实现
- 系统控制机制
-
简单文件系统
- 顺序文件
- 使用libfs编写FS
- 调试文件系统
-
文件系统API : vfs_fstat/fget/get_max_files
-
挂载文件系统
- 系统调用mount处理流程
- 绑定挂载/挂载命名空间
- 挂载/注册rootfs文件系统
-
文件系统调用
- 打开/关闭文件
- 创建/删除文件
- 读/写文件实现
- 文件回写技术原理/接口实现
-
sysfs文件系统
- sysfs数据结构
- 装载文件系统.
- 文件和目录操作
- 向sysfs添加数据内容
4.2 文件系统案例分析
- proc文件系统案例实战分析
- debugfs案例实战分析
- super_block案例分析
五、网络协议栈专栏
5.1 网络协议栈基础部分
-
套接字及分层模型
- 套接字通信基础
- 网络分层模型
-
套接字缓冲区及net_device
- sk_buff数据结构分析
- net_device数据结构分析
- 从套接字缓冲区获取TCP首部
-
内核邻接子系统
- 邻接子系统基础
- ARP协议(IPv4)
-
内核Netlink套接字案例分析
- 数据结构设计与API系统调用
- 内核模块与用户应用程序设计
- 网络接口及IP地址实现
-
网络层分析
- 接收分组原理与分析
- 分组转发原理与分析
- 发送分组原理与分析
-
TCP/UDP协议栈分析
- 套接字分析
- 发送与接收UDP数据包分析
- 发送与接收TCP数据包分析
-
传输层分析
- 流控制传输协议(SCTP)
- 数据报拥塞控制协议(DCCP)
-
ICMP协议分析
- 发送/接收ICMPv4消息
- 发送/接收ICMPv6消息
-
NIC数据包接收与发送分析
- NIC原理机制
- NIC数据包接收与发送流程分析
-
IPsec(互联网安全协议)
- IPsec基础知识部分
- XFRM框架/策略/状态
- 传输模式/隧道模式/IPsec高可靠性
-
Netfilter框架分析
- Netfilter架构分析
- Netfilter挂接点
- Netfilter连接跟踪
-
epoll分析
- epoll系统调用
- epoll数据结构
- epoll内核实现
-
IPv4路由选择子系统
- FIB表
- ICMPv4重定向消息
-
高级路由选择
- 组播路由选择
- 策略路由选择
-
IPv6协议分析
- IPv6协议基础架构
- 接收IPv6数据包
- 发送IPv6数据包
-
InfiniBand架构
- InfiniBand组件与编址
- InfiniBand功能与数据包
-
无线子系统分析
- 802.11 MAC帧结构分析
- 扫描/身份验证/关联
- 高吞吐量(802.11n)
- 网状网络(802.11s)
5.2 网络协议栈案例分析
-
epoll原理及系统调用案例分析
-
NIC网卡驱动案例实战分析
- NIC网卡驱动的recv与sk_buff
- NIC网卡open与stop的实现
- NIC编译与用户态协议栈
-
RDMA栈架构
-
Netfilter内核防火墙报文处理
- Iptables基础/表和链及过滤规则
- Netfilter 5种挂接点详解
- netfilter注册和注销钩子函数
六、中断管理和基础专栏
6.1 中断管理部分
-
ARM64异常处理技术
- 异常级别与分类
- 异常向量表与异常处理
-
中断及软中断
-
tasklet_等待队列工作队列
-
中断控制器及域
-
中断处理流程
-
禁止开启中断
-
处理器间中断
-
软中断分析
-
审计规则及数据结构
-
中断管理API案例分析
- tasklet_init/tasklet_schedule
- _tasklet_hi_schedule/tasklet_kill
- tasklet_disable_nosync/tasklet_disable
- setup_irq/request_threaded _irq/irq_set_chip_data
-
中断管理之保存中断上下文
-
内核调试方法printk案例分析
-
gdb调试内核和模块案例分析
-
perf性能分析具案例分析
- perf原理机制与安装配置
- perf采集数据命令29种工具应用
- perf采集数据至火焰图分析
-
开源社区
- 如何参与开源社区
- 如何提交Linux内核补丁
6.2 内核基础部分
-
Linux操作系统进程
- 计算机基础技术
- 进程原理
- Linux特性与内核版本
- 进程特征与调度算法
- 死锁产生必要条件
- 进程状态及转换
- 进程调度策略与调度依据
-
存储器结构与分区存储管理
- 主存储器结构及技术指标
- 分区存储管理技术
- 物理内存与虚拟内存
-
存储管理
-
- 段式存储管理
- 页式存储管理
-
文件管理基础架构
- 文件基础知识
- Linux文件系统
- VFS(虚拟文件系统)
-
x86处理器架构
- CPU(中央处理器)和内存
- x86平台
- 64位通用寄存器结构
-
汇编基础与寻址方式
-
汇编基础技术
-
常用寻址方式
- 立即寻址
- 直接寻址
- 间接寻址
- 变址寻址
- 相对寻址
- 基址寻址
-
KVM架构基础
- CPU虚拟化技术
- I/O虚拟化技术
- 内存虚拟化技术
- 网络虚拟化技术
-
内核定时器
-
互斥锁分析
-
自旋锁机制
-
原子变量案例实战分析
-
信号量案例实战分析
-
自旋锁项目实战分析
-
顺序锁案例实战分析
-
互斥锁项目实战分析
-
全套138个课时,每天坚持2-3小时
老师答疑工作问题课程问题
课程适学人群
- Android\ java开发人群.
- C/C+ +后台开发人群
- Linux嵌入式开发人群
- Linux驱动开发人群
- Linux内核开发人群
- Linux虚拟化开发人群
- 研究Linux内核(兴趣爱好)人群
- 应用层开发想掌握底层原理人群