联系我们

课程大纲

简介

  • GNU/Linux简史
  • 许可
  • 内核版本控制
  • 发布周期
  • 内核树
  • 主线
  • 内核与用户空间
  • 机制与策略
  • 内核驱动替代方案
  • RTOS与Linux

内存管理

  • 虚拟内存与物理内存
  • 内核中的内存分配
  • 区域
  • API
  • slab

内核补丁

  • 生命周期
  • git
  • 内核源码
  • 创建补丁
  • 检查补丁
  • 修复补丁
  • 提交补丁
  • 代码审核

内核模块

  • 获取内核源码
  • 配置/编译/安装
  • 设备驱动(静态链接,运行时加载)
  • 初始化/退出
  • 许可
  • EXPORT SYMBOL GPL
  • 树外Makefile
  • module-init-tools
  • 内核树中的模块
  • Kconfig
  • 参数传递
  • sparse

字符驱动

  • 架构
  • 用户/内核接口
  • I/O子系统
  • VFS
  • sysfs(设备、总线、驱动、类)
  • kobject/ktype/kset
  • Linux内核驱动模型
  • 设备文件
  • 字符驱动

    • 初始化
    • 注册
    • 打开、关闭
    • cdev、cdev添加、cdev删除等
    • 主/次设备号
    • udev、udevmonitor、udevadm

高级字符驱动操作

  • ioctl
  • 非阻塞ioctl
  • 兼容ioctl
  • 用户空间API
  • 内核空间API
  • 进程生命周期
  • 睡眠/阻塞
  • 睡眠/唤醒
  • 等待队列
  • 惊群效应
  • poll/select

内核调试

  • 调试
  • 调试内核

    • 使用git进行二分查找
    • 内核调试支持
    • printk、syslogd、klogd、日志级别、速率限制、调试级别、调试特定子系统
    • 通过debugfs查询调试
    • oops调试、断言oops
    • Magic SysRq Key
    • kgdb/kdb
    • JTAG

追踪

  • gcov
  • lcov
  • oprofile
  • ftrace

    • nop追踪器
    • 函数追踪器
    • 调度切换追踪器
    • 函数图追踪器
    • 动态追踪器
  • trace-cmd/kernelshark
  • perf
  • LTTng

中断

  • 中断与轮询
  • 中断
  • 程序段
  • 可重入性
  • 事件
  • 中断处理程序
  • 共享中断处理程序
  • 中断流程
  • 中断控制

延迟工作

  • 上半部/下半部
  • 软中断
  • 任务队列
  • 工作队列
  • 线程化中断

并发

  • 临界区
  • 原子操作
  • 竞态条件
  • 同步
  • 锁解决方案
  • 死锁
  • 争用
  • 锁什么?
  • 可用工具

    • 原子操作
    • 自旋锁
    • 读写自旋锁
    • 信号量
    • 二元信号量
    • 互斥量
    • 读写信号量
    • 完成变量
    • 顺序锁
    • 禁用抢占
    • 排序与屏障

时间

  • HZ
  • Jiffies
  • 大/小延迟
  • 内核定时器

硬件I/O

  • I/O端口
  • I/O内存
  • 如何应对访问寄存器的副作用?

用户-内核通信

  • put(get)_user()
  • copy to(from)_user()
  • 内核I/O
  • 内存映射
  • procfs
  • sysfs
  • debugfs
  • relayfs
  • netlink
  • ioctl

可移植性

  • 字长
  • 不透明类型
  • 有符号/无符号字符
  • 数据对齐
  • 整数提升
  • 代码重用
  • 字节序
  • 系统滴答
  • 页大小
  • 指令排序
  • SMP/抢占/高内存

除非另有说明,本课程内容及大纲均遵循署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)许可。

要求

  • 基本熟悉作为终端用户使用GNU/Linux系统
  • 基本熟悉命令行界面
  • 基本了解用户空间/应用开发
  • 具备中级C语言编程知识
  • 强烈建议参加嵌入式GNU/Linux系统架构课程,或对该课程内容有较好理解
 35 小时

客户评论 (3)

即将举行的公开课程

课程分类