Linux内核源码分析课程

根据工作中,常用的内核底层技术点定制课程体系
五大技术专题、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小时

老师答疑工作问题课程问题

Linux 内核源码分析教程

课程适学人群

  • Android\ java开发人群.
  • C/C+ +后台开发人群
  • Linux嵌入式开发人群
  • Linux驱动开发人群
  • Linux内核开发人群
  • Linux虚拟化开发人群
  • 研究Linux内核(兴趣爱好)人群
  • 应用层开发想掌握底层原理人群

你可能感兴趣的:(Linux,linux)