課程大綱:
一、進(jìn)入 Linux 的精彩世界
1、Linux 的特點(diǎn)、版本演進(jìn)與發(fā)展方向
2、GNU 與 GPL
3、Linux 系統(tǒng)組成、啟動(dòng)流程
4、開(kāi)發(fā)環(huán)境構(gòu)建
5、GNU 工具鏈
6、文件系統(tǒng)組成
二、Linux 內(nèi)核進(jìn)程調(diào)度
1、進(jìn)程生命周期
2、進(jìn)程調(diào)度算法
3、進(jìn)程調(diào)度時(shí)機(jī)
4、Linux實(shí)時(shí)性
5、SMP、CPU 熱插拔與負(fù)載均衡
6、Cgroups
三、Linux 內(nèi)核內(nèi)存管理
1、MMU 系統(tǒng)
2、page 與 zone
3、buddy 系統(tǒng)
4、slab、kmalloc
5、進(jìn)程的內(nèi)存消耗
6、page cache 與 swap
7、內(nèi)存泄露剖析
四、Linux 內(nèi)核文件系統(tǒng)
1、虛擬文件系統(tǒng)
2、inode、dentry、file 和 superblock
3、文件系統(tǒng)與 block 層
五、內(nèi)核編程主要 API 剖析
1、同步與并發(fā)
2、等待隊(duì)列
3、內(nèi)核延時(shí)
4、內(nèi)存申請(qǐng)和釋放
5、定時(shí)器與高精度定時(shí)器
6、中斷頂?shù)装氩?/span>
—— 軟中斷
—— tasklet
—— 工作隊(duì)列
—— threaded_irq
7、中斷及軟中斷負(fù)載均衡
8、Linux內(nèi)核線程
9、IO 與內(nèi)存訪問(wèn)
10、DMA 與 cache 一致性
六、Linux 內(nèi)核模塊
1、內(nèi)核模塊 init 和 exit
2、輸入?yún)?shù)
3、輸出參數(shù)
七、Linux 內(nèi)核調(diào)試方法
1、printk
2、Oops 和 panic
3、initcall_debug
4、suspend/resumedebug
5、earlyprintk與 low level debug
6、使用仿真器
7、proc 和 sys
8、grabserial
9、soft 和hard lockup
八、Linux 設(shè)備驅(qū)動(dòng)模型
1、Linux設(shè)備分類(lèi)
2、Sys,總線,設(shè)備和驅(qū)動(dòng)
3、熱插拔
4、電源管理
5、udev
九、設(shè)備驅(qū)動(dòng)并發(fā)控制與 I/O 模型
1、Linux 字符設(shè)備驅(qū)動(dòng)結(jié)構(gòu)
2、Linux 設(shè)備驅(qū)動(dòng)中的并發(fā)控制
3、Linux 設(shè)備驅(qū)動(dòng)中的阻塞與非阻塞 I/O
4、Linux 多路復(fù)用 I/O
5、Signal IO 與 AIO
6、用戶空間 I/O 與多線程設(shè)計(jì)原則
7、C10K 問(wèn)題
十、Linux 復(fù)雜設(shè)備驅(qū)動(dòng)
1、設(shè)備驅(qū)動(dòng)分層框架
2、platform 驅(qū)動(dòng)
3、基于 I2C/SPI/USB 等總線的驅(qū)動(dòng)
4、塊設(shè)備驅(qū)動(dòng)與塊 I/O 調(diào)度
5、網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)
十一、將 Linux 移植到一個(gè)新的 SoC
1、early_printk
2、L2 cache
3、OS timer
4、clk tree
5、GPIO
6、pinmux
7、IRQ chip
8、DMA
9、MACH_INIT
10、設(shè)備樹(shù)(device tree)
11、社區(qū)維護(hù)
課程周期:
24課時(shí)(45分/課時(shí))

