Linux內(nèi)核剖析高級培訓(xùn)班 |
班級規(guī)模及環(huán)境--熱線:4008699035 手機(jī):15921673576/13918613812( 微信同號) |
堅持小班授課,為保證培訓(xùn)效果,增加互動環(huán)節(jié),每期人數(shù)限3到5人。 |
課程目標(biāo) |
通過本課程的學(xué)習(xí),學(xué)員可以:
1)全面認(rèn)識和了解Linux內(nèi)核的框架,并以此為基礎(chǔ)掌握學(xué)習(xí)Linux內(nèi)核、分析閱讀Linux內(nèi)核源碼的方法,真正地邁過那道無形的門坎。
2)掌握、分析、鉆研某個子系統(tǒng)在Linux內(nèi)核中實現(xiàn)機(jī)制的方法,并了解Linux內(nèi)核中的進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)。
3)了解如何參與Linux內(nèi)核的開發(fā)和測試,以及一些常用的調(diào)試手段和工具。
4)掌握Linux設(shè)備驅(qū)動的開發(fā)方法。
5)掌握Android運行所需要的Linux內(nèi)核開發(fā)和技巧。 |
入學(xué)要求 |
學(xué)員學(xué)習(xí)本課程應(yīng)具備下列基礎(chǔ):
◆ 能夠使用Linux操作系統(tǒng)。
◆
掌握C語言基礎(chǔ)。
◆
熟悉操作系統(tǒng)基礎(chǔ)理論。 |
培養(yǎng)對象 |
◆
對Linux內(nèi)核感興趣,卻苦于不知如何下手者。
◆
學(xué)習(xí)Linux內(nèi)核良久,卻收益不大者。
◆
有志從事Linux內(nèi)核和Linux驅(qū)動開發(fā)的工程師。
◆ 有志從事Android底層開發(fā)的工程師。 |
開課時間和上課地點 |
上課地點:【上海】:同濟(jì)大學(xué)(滬西)/新城金郡商務(wù)樓(11號線白銀路站) 【深圳分部】:電影大廈(地鐵一號線大劇院站)/深圳大學(xué)成教院 【北京分部】:北京中山/福鑫大樓 【南京分部】:金港大廈(和燕路) 【武漢分部】:佳源大廈(高新二路) 【成都分部】:領(lǐng)館區(qū)1號(中和大道) 【沈陽分部】:沈陽理工大學(xué)/六宅臻品 【鄭州分部】:鄭州大學(xué)/錦華大廈 【石家莊分部】:河北科技大學(xué)/瑞景大廈 【廣州分部】:廣糧大廈 【西安分部】:協(xié)同大廈
近開課時間(周末班/連續(xù)班/晚班):Linux內(nèi)核開班時間:2024年11月18日.....(請抓緊報名) |
實驗設(shè)備和授課方式 |
☆資深工程師授課
☆注重質(zhì)量
☆邊講邊練
☆合格學(xué)員免費推薦工作
專注高端培訓(xùn)17年,曙海提供的課程得到本行業(yè)的廣泛認(rèn)可,學(xué)員的能力
得到大家的認(rèn)同,受到用人單位的廣泛贊譽(yù)。
★實驗設(shè)備請點擊這兒查看★ |
新優(yōu)惠 |
☆在讀學(xué)生憑學(xué)生證,可優(yōu)惠500元。 |
質(zhì)量保障 |
1、培訓(xùn)過程中,如有部分內(nèi)容理解不透或消化不好,可免費在以后培訓(xùn)班中重聽;
2、培訓(xùn)結(jié)束后免費提供半年的技術(shù)支持,充分保證培訓(xùn)后出效果;
3、培訓(xùn)合格學(xué)員可享受免費推薦就業(yè)機(jī)會。 |
課程大綱
--- Linux內(nèi)核剖析培訓(xùn)班 |
第一階段 |
全面認(rèn)識和了解Linux內(nèi)核的框架,掌握學(xué)習(xí)Linux內(nèi)核、分析閱讀Linux內(nèi)核源碼的方法。 |
第1章
Linux內(nèi)核的基本面
1.1
Linux內(nèi)核成長史
1.2
多變的Linux內(nèi)核版本號
1.3
獲取Linux內(nèi)核的源代碼
1.4
ALinux內(nèi)核與那些發(fā)行版
1.5
Linux內(nèi)核是如何工作的
·“Linux虛擬機(jī)”——系統(tǒng)調(diào)用
·臺前——文件系統(tǒng)
·幕后——進(jìn)程調(diào)度
·幕后——內(nèi)存管理
·模塊化的Kernel
第2章
Linux內(nèi)核的按需配置與編譯
2.1
按需配置Linux內(nèi)核
·配置方式的多種選擇
·認(rèn)識常見的配置選項
·重視.config文件
2.2
為Linux內(nèi)核打補(bǔ)丁
2.3
編譯Linux內(nèi)核
·認(rèn)識一些與編譯有關(guān)的目錄與文件
·構(gòu)建編譯環(huán)境
·備份是重要得
·編譯步驟
·一些實用的小技巧
2.4
Linux內(nèi)核的文檔及編譯
2.5
【實驗】配置、編譯Linux 2.6內(nèi)核
第3章
瀏覽Linux內(nèi)核源碼
3.1
所需的技術(shù)基礎(chǔ)
3.2
Linux內(nèi)核的體系結(jié)構(gòu)
3.3
Linux內(nèi)核源碼樹
3.4
使用vim+cscope+ctags
3.5
Linux內(nèi)核代碼的特點
·gcc擴(kuò)展的使用
·內(nèi)嵌匯編
3.6
Linux內(nèi)核中的鏈表
3.7
代碼樣例
3.7
【實驗】配置vim瀏覽內(nèi)核源碼
第4章
如何分析Linux內(nèi)核源碼
4.1
Linux內(nèi)核學(xué)習(xí)的心理問題
4.2
kernel地圖:Kconfig與Makefile
·看懂Kconfig與Makefile
·利用Kconfig與Makefile定位目標(biāo)代碼
4.3
分析Linux內(nèi)核源碼如何入手
·分析README
·分析Kconfig與Makefile
·態(tài)度決定一切:從初始化函數(shù)開始
4.4
【實驗】定位并分析某個子系統(tǒng)或模塊在內(nèi)核中的實現(xiàn)
|
第二階段 |
掌握分析鉆研某個子系統(tǒng)在內(nèi)核中實現(xiàn)機(jī)制的方法,了解內(nèi)核中的進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)。 |
第5章 開始之前——Before we
begin
5.1
系統(tǒng)初始化
5.2
Linux內(nèi)核中的時間
5.3
系統(tǒng)調(diào)用
5.4
中斷與中斷處理
5.5
Linux內(nèi)核中的同步
第6章
子系統(tǒng)的初始化
6.1
Linux內(nèi)核選項解析
·Linux內(nèi)核選項
·注冊Linux內(nèi)核選項
·兩次解析
6.2
那些入口函數(shù)
·.initcall.init節(jié)
·do_initcalls()函數(shù)
6.3
以PCI子系統(tǒng)為例
6.4
【實驗】分析某個子系統(tǒng)的初始化過程
第7章
進(jìn)程管理與調(diào)度
7.1
Linux中的進(jìn)程
7.2
進(jìn)程的來源:fork和clone
7.3
所有美好的事物都會結(jié)束:進(jìn)程退出
7.4
內(nèi)核線程
7.5
進(jìn)程調(diào)度
·O(1)調(diào)度
·CFS調(diào)度
7.6
不確定的Multi-thread
第8章
內(nèi)存管理
8.1
物理地址、邏輯地址與虛擬地址
8.2
分頁
8.3
內(nèi)存在內(nèi)核中的分配
8.4
進(jìn)程的內(nèi)存組織
8.5
內(nèi)存映射mmap
8.6
頁面緩存
第9章
虛擬文件系統(tǒng)VFS
9.1
VFS的體系結(jié)構(gòu)
9.2
理解VFS的那些數(shù)據(jù)結(jié)構(gòu)
9.3
VFS的緩存機(jī)制
9.4
文件系統(tǒng)的注冊與安裝
9.5
文件系統(tǒng)的日志管理
|
第三階段 |
了解如何參與Linux內(nèi)核的開發(fā)和測試,以及一些常用的調(diào)試手段和工具。 |
第10章 Intent
Receiver
10.1
工具鏈及其生成
10.2
Linux內(nèi)核中的Makefile
10.3
嚴(yán)格遵守Linux內(nèi)核的編碼風(fēng)格
10.4
添加代碼到Linux內(nèi)核
10.5
為什么Linux內(nèi)核沒有穩(wěn)定的API?
10.6
如何提交補(bǔ)丁
10.7
學(xué)會使用Git
10.8
【實驗】安裝Git并用它來來獲取新的Linux內(nèi)核源碼
第11章
一些上鏡的Linux內(nèi)核調(diào)試手段與工具
11.1
Linux內(nèi)核對調(diào)試的支持
11.2
二分法與printk
11.3
獲取Linux內(nèi)核信息
11.4
調(diào)試福音之oops
11.5
神奇的SysRq
11.6
調(diào)試?yán)髦瓽DB
11.7
調(diào)試?yán)髦甋ystemtap
11.8
Linux內(nèi)核崩潰轉(zhuǎn)儲
11.9
利用模擬器
11.10
【實驗】分析一個oops
11.11
【實驗】配置GDB調(diào)試環(huán)境并調(diào)試Linux內(nèi)核
第12章
子系統(tǒng)的初始化
12.1
Linux內(nèi)核測試的4個階段
12.2
性能分析與調(diào)優(yōu)工具
·CPU性能分析與調(diào)優(yōu)
·Memory性能分析與調(diào)優(yōu)
·IO性能分析與調(diào)優(yōu)
·Network性能分析與調(diào)優(yōu)
12.3
oprofile
12.4
啟動速度調(diào)優(yōu)
12.5
【實驗】Linux內(nèi)核性能測試并提交Linux內(nèi)核測試報告
|
第四階段 |
掌握驅(qū)動的開發(fā)方法,掌握Android運行所需要的Linux內(nèi)核開發(fā)和技巧。 |
第13章
驅(qū)動開發(fā)的方法論
13.1
模塊化的Linux內(nèi)核
13.2
第一個模塊“Hello
World!”
13.3
重中之重:設(shè)備模型
·總線、設(shè)備和驅(qū)動
·在USB子系統(tǒng)上的投影
13.4
驅(qū)動開發(fā)三件寶:spec、datasheet與Linux內(nèi)核源碼
13.5
sysfs
13.6
【實驗】結(jié)合設(shè)備模型分析一個Linux內(nèi)核中現(xiàn)有的驅(qū)動
13.7
【實驗】編寫一個簡單的模塊
第14章
Android環(huán)境的相關(guān)介紹
14.1
Android的歷史和介紹
14.2
Android和Linux的扯不清理還亂的關(guān)系
14.3
取得Android的源代碼和編譯生成可執(zhí)行環(huán)境
14.4
Android源代碼構(gòu)成和運行原理
14.5
加入新的處理器支持到Android框架
第15章
移植Android所需要的Linux內(nèi)核
15.1
Android運行所需要對Linux內(nèi)核作的修改
15.2
Android對現(xiàn)有驅(qū)動所必須做的修改
·鍵盤、鼠標(biāo)驅(qū)動和鍵值映射
·顯示驅(qū)動
·audio驅(qū)動
15.3
編譯和拓展Android的啟動分區(qū)boot.img
15.4
Android的啟動過程分析和調(diào)試技術(shù)
15.5
【實驗】生成一個可供Android啟動的Linux內(nèi)核
15.6
【實驗】制作和生成一個可運行的boot.img
第16章
實現(xiàn)Android的硬件抽象層
16.1
Android的硬件抽象層的原理和構(gòu)成
16.2
實現(xiàn)ril,完成Android的移動網(wǎng)絡(luò)功能支持
16.3
libhardware_legacy接口
16.4
libhardware接口
16.5
藍(lán)牙支持
16.6
【實驗】將一個wifi驅(qū)動加入Android硬件抽象層
|
|