課程簡介
介紹
- 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
Course - Ionic 4 and Angular for Developers
機器翻譯
也許更多的練習對lerning來說可能更好,但時間很少
Gianpiero Arico' - Urmet Spa
Course - 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
Course - Flutter Development Bootcamp with Dart
That the trainer adapts to our needs
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Course - The Yocto Project - An Overview - hands-on
The trainer was enthusiastic, kind, and loved the topic