课程大纲
介绍
- GNU 简史/Linux
- 发 牌
- 内核版本控制
- 发布周期
- 内核树
- 主线
- 内核 vs. 用户空间
- 机制与策略
- 内核驱动程式替代方案
- RTOS 与 Linux
记忆体 Management
- 虚拟记忆体与物理记忆体
- 内核中的记忆体分配
- 页面
- 区
- 应用程式介面
- 板
内核补丁
- 生命周期
- git
- 内核源
- 创建补丁
- 检查补丁
- 修复补丁
- 船舶补丁
- 经审核的代码
内核模组
- 获取内核源
- 配置/构建/安装
- 装置驱动程式(静态连结,在运行时载入)
- 初始化/退出
- 发 牌
- 汇出元件 GPL
- 树外makefile
- 模组初始化工具
- 内核树中的模组
- K配置
- 参数传递
- 稀疏
Char 驱动程式
- 建筑
- 使用者/内核介面
- I/O 子系统
- VFS
- sysfs (设备、总线、驱动程式、类)、
- kobject/ktype/kset
- Linux 内核驱动程式模型
- 设备档
- char 驱动程式
- 初始化
- 注册
- 打开、释放
- cdev, cdev add, cdev del,...
- 主/辅编号
- udev、udevmonitor、udevadm
高级 Charachter 驱动程式操作
- ioctl
- 解锁的ioctl
- Compat ioctl
- 用户空间 API
- 内核空间 API
- 流程生命周期
- 休眠/阻塞
- 睡觉/醒来
- 等待伫列
- 雷霆群
- 轮询/选择
内核调试
- 错误
- 调试
- 调试内核
- 使用 Git 进行二进位搜索
- 内核的调试支援
- printk syslogd, klogd, loglevels, 速率限制, debug levels, 调试级别, debug selective subsystems 调试选择性子系统
- 通过查询 debugFS 进行调试
- OOPS 调试, 断言 OOPS
- Magic SysRq 金钥
- KGDB/KDB 资料库
- JTAG
描图
- 全球科夫
- LCOV
- oprofile
- ftrace
- 不,追踪者
- 函数跟踪器
- sched 开关跟踪器
- 函数 Graph Tracer
- 动态示踪剂
- 跟踪 cmd/内核鲨鱼
- 性能
- LTTng
中断
- 中断与轮询
- 中断
- 程式部分
- 可重入性
- 事件
- 中断处理程式
- 共用中断处理程式
- 中断流
- 中断控制
推迟工作
- 上半部分/下半部分
- SoftIRQ
- 微线程
- 工作伫列
- 螺纹交互
并发
- 关键区域/区域
- 原子
- 争用条件
- 同步
- 锁定
- 锁定解决方案
- 僵局
- 冲突
- 要锁定什么?
- 可以使用什么?
- 原子操作
- 旋转锁
- 读写器自旋锁
- 信号
- 二进位信号量
- 互斥锁
- reader-writer 信号量
- 完成变数
- 顺序锁
- 禁用抢占
- Orderig 和 Barriers
时间
- 赫兹
- 吉菲斯
- 大/小延迟
- 内核计时器
硬体 I/O
- I/O 埠
- I/O 记忆体
- 如何处理访问寄存器的副作用?
使用者-内核 Communication
- put(get)_user()
- 复制到(从)_user()
- 内核 I/O
- 记忆体映射
- procfs
- sysfs
- 调试
- 继电器FS
- 网联
- ioctl
可移植性
- 字长
- 不透明类型
- 已签名/未签名的字元
- 数据对齐
- 整体推广
- 代码重用
- 内脏
- 系统刻度
- 页面大小
- 指令排序
- SMP/抢占/记忆体增强型
除非另有说明,否则内容和本课程大纲根据署名-非商业性使用-相同方式共用 4.0 国际 (CC BY-NC-SA 4.0) 获得许可。
要求
- 基本熟悉最终使用者使用 GNU/Linux 系统
- 基本熟悉命令行shell
- 用户空间 / 应用程式开发的基本知识
- 中级 C 语言程式设计知识
- 应该以前参加 过嵌入式 GNU/Linux Systems Architecture 并且/或对那里概述的主题有很好的理解
客户评论 (5)
Edward 是一位了不起的主持人
Zibusiso Ncube - Agricatural Research Council
课程 - Ionic 4 and Angular for Developers
机器翻译
也许更多的练习对lerning来说可能更好,但时间很少
Gianpiero Arico' - Urmet Spa
课程 - Embedded Linux Systems Architecture
机器翻译
Miguel's knowledge of the subject was extensive. He made the training easy to understand and the flow was balanced; adding on to each section with new features as needed. He covered everything that was asked and answered each and every question thoroughly. It was a very pleasant experience.
Paul Coaton - SEMPCheck Services
课程 - Flutter Development Bootcamp with Dart
The trainer was enthusiastic, kind, and loved the topic
Isaac Murphy - Royal New Zealand Airforce
课程 - Build Native iOS and Android Apps with Flutter
Learning the steps required to implement the MVVM model.