感谢您发送咨询!我们的团队成员将很快与您联系。
感谢您发送预订!我们的团队成员将很快与您联系。
课程大纲
引言
- GNU/Linux的简要历史
- 许可协议
- 内核版本管理
- 发布周期
- 内核树
- 主线内核
- 内核空间与用户空间
- 机制与策略
- 内核驱动替代方案
- RTOS与Linux对比
内存管理
- 虚拟内存与物理内存
- 内核中的内存分配
- 页
- 区域
- API
- slab分配器
内核补丁
- 生命周期
- git
- 内核源代码
- 创建补丁
- 检查补丁
- 修复补丁
- 提交补丁
- 代码审计
内核模块
- 获取内核源代码
- 配置/编译/安装
- 设备驱动(静态链接,运行时加载)
- init/exit
- 许可协议
- EXPORT SYMBOL GPL
- 外部模块的Makefile
- module-init-tools
- 内核树中的模块
- Kconfig
- 参数传递
- sparse
字符驱动
- 架构
- 用户/内核接口
- I/O子系统
- VFS
- sysfs(设备、总线、驱动、类)
- kobject/ktype/kset
- Linux内核驱动模型
- 设备文件
-
字符驱动
- 初始化
- 注册
- open、release
- cdev、cdev_add、cdev_del等
- 主/次设备号
- udev、udevmonitor、udevadm
高级字符驱动操作
- ioctl
- 非锁定ioctl
- 兼容ioctl
- 用户空间API
- 内核空间API
- 进程生命周期
- 睡眠/阻塞
- 睡眠/唤醒
- 等待队列
- 惊群效应
- poll/select
内核调试
- 调试
-
内核调试
- 使用git进行二分查找
- 内核的调试支持
- printk、syslogd、klogd、日志级别、速率限制、调试级别、选择子系统调试
- 通过debugfs查询进行调试
- oops调试、触发oops
- Magic SysRq键
- 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 小时
客户评论 (5)
非常有用的附加信息
Grzegorz - Comp S.A.
课程 - BLoC Pattern
机器翻译
Edward是一位出色的引导者
Zibusiso Ncube - Agricatural Research Council
课程 - Ionic 4 and Angular for Developers
机器翻译
Miguel对该主题的知识非常广泛。他使培训易于理解,流程安排得当,根据需要在每个部分逐步添加新功能。他涵盖了所有被要求的内容,并详细回答了每一个问题。这是一次非常愉快的体验。
Paul Coaton - SEMPCheck Services
课程 - Flutter Development Bootcamp with Dart
机器翻译
我认为内容(包括理论和实践)都非常出色,完全符合我们的需求和期望。练习虽然具有挑战性,但都是可以完成的。
Mike Kleinau - iVolve
课程 - Introduction to Embedded Linux (Hands-on training)
机器翻译
培训师充满热情,态度友好,并且非常热爱这个主题
Isaac Murphy - Royal New Zealand Airforce
课程 - Build Native iOS and Android Apps with Flutter
机器翻译