感谢您发送咨询!我们的团队成员将很快与您联系。
感谢您发送预订!我们的团队成员将很快与您联系。
课程大纲
简介
- 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)
一切正常。
Adrian Rybka - SEOyon
课程 - Flutter Development Bootcamp with Dart
机器翻译
非常有用的附加信息
Grzegorz - Comp S.A.
课程 - BLoC Pattern
机器翻译
培训师的演讲技巧和沟通方式。
Gianpiero Arico - Urmet Spa
课程 - Embedded Linux Systems Architecture
机器翻译