用“芯”探核基於龍芯的 Linux 內核探索解析

用“芯”探核基於龍芯的 Linux 內核探索解析

作者: 陳華才
出版社: 人民郵電
出版在: 2020-08-01
ISBN-13: 9787115444929
ISBN-10: 7115444927
裝訂格式: 平裝
總頁數: 568 頁





內容描述


這是一本基於龍芯平台,結合Linux -5.4.x版本的內核源代碼來解析Linux內核的書籍。
本書首先介紹了有關龍芯處理器和Linux內核的基礎知識,然後重點講解了內核啟動、
異常與中斷、內存管理、進程管理、顯卡驅動、網卡驅動和電源管理這7大板塊的內容。
本書甚少涉及代碼的細枝末節,而是重點關注代碼實現的主幹流程,
並且創造性地引入了樹形視圖和鍊式視圖這兩種比流程圖更好用的代碼解析方法。
本書適合Linux系統相關的開發人員,特別是基於龍芯處理器做內核開發的技術人員學習參考。


目錄大綱


目錄:
第01章基礎知識
1.1龍芯處理器簡介002
1.1.1龍芯3號功能特徵004
1.1.2龍芯3號處理器核008
1.1.3龍芯電腦基本結構015
1.2 Linux內核簡介018
1.2.1 Linux內核發展簡史019
1.2.2 Linux內核的開發模式021
1.2.3關於長期維護穩定版025
1.2.4龍芯的內核版本選型025
1.3如何高效閱讀代碼027
1.3.1找准入口點028
1.3.2理清主脈絡029
1.3.3顧名思義看功能040
1.3.4理解補丁文件042
1.4如何開發健壯內核045
1.4.1內核代碼風格046
1.4.2合理生成補丁048
1.4.3謹慎對待創新049
第02章內核啟動解析
2.1內核源代碼目錄結構054
2.2內核啟動過程:主核視角055
2.2.1 一入口:kernel_entry 056
2.2.2
二入口:start_kernel() 063
2.2.3重要函數:setup_arch() 070
2.2.4重要函數:trap_init() 083
2.2.5重要函數:init_IRQ() 087
2.2.6重要函數:time_init() 092
2.2.7 1號進程:kernel_init() 096
2.3內核啟動過程:輔核視角104
2.3.1 一入口:smp_bootstrap 105
2.3.2
二入口:start_secondary() 107
2.4本章小結110
第03章異常與中斷解析
3.1寄存器操作113
3.2異常處理解析114
3.2.1復位異常和NMI 115
3.2. 2緩存錯誤異常116
3.2.3 TLB/XTLB異常117
3.2.4其他通用異常126
3.3中斷處理解析137
3.3.1中斷處理的入口137
3.3.2中斷處理的分派140
3.4軟中斷、小任務與工作隊列151
3.4.1軟中斷softirq 151
3.4.2小任務tasklet 154
3.4.3工作隊列workqueue 156
3.5本章小結159
第04章內存管理解析
4.1內存管理相關概念161
4.1.1龍芯3號的高速緩存161
4.1.2龍芯3號的TLB 168
4.1.3龍芯的虛擬地址空間170
4.2物理內存頁幀管理171
4.2.1物理地址空間177
4.2.2夥伴系統算法183
4.3內核內存對像管理201
4.3.1數據結構與API 202
4.3.2核心函數解析209
4.4分頁映射內存管理217
4.4.1持久內核映射221
4.4.2臨時內核映射226
4.4.3非連續內存管理229
4.5進程地址空間管理241
4.5.1數據結構與API 241
4.5.2內存映射250
4.5.3堆區管理257
4.5.4缺頁異常處理258
4.6內存管理其他話題266
4.6.1反向映射267
4.6.2內存回收271
4.6.3巨頁機制274
4.7本章小結275
第05章進程管理解析
5.1進程描述符278
5.1.1運行狀態相關285
5.1.2標識調度相關289
5.1.3其他重要部分295
5.2進程創建296
5.2.1複製新進程296
5.2.2執行新程序308
5.3進程銷毀314
5.3. 1退出程序執行314
5.3.2清理進程資源317
5.4進程調度327
5.4.1基本概念328
5.4.2發展歷史330
5.4.3公平調度策略334
5.4.4調度核心解析347
5.4.5進程切換解析360
5.5其他話題364
5.5.1 CPU負載364
5.5.2調度域與調度組370
5.5.3 NUMA均衡調度374
5.6本章小結380
第06章顯卡驅動解析
6.1顯卡概述382
6.1.1發展簡史及有關概念382
6.1 .2現代顯卡的硬件結構385
6.2 Linux圖形系統架構388
6.2.1 X-Window和Wayland 388
6.2.2直接渲染、間接渲染和顯卡驅動391
6.3 Linux內核顯卡驅動392
6.3.1寄存器讀寫393
6.3.2常用數據結構394
6.3.3顯卡初始化411
6.3.4命令流處理435
6.3.5存儲區域間數據交換439
6.3.6 GPU重置(Reset) 443
6.4本章小結446
第07章網卡驅動解析
7.1網絡子系統概述448
7.2 Linux以太網卡驅動449
7.2.1常用數據結構449
7.2.2網卡初始化452
7.2.3網卡的開與關456
7.2.4數據發送與接收457
7.2.5故障檢測與修復(看門狗) 466
7.3本章小結468
第08章電源管理解析
8.1電源管理概述470
8.2運行時電源管理473
8.2.1動態變頻474
8.2.2自動調核488
8.3系統級睡眠管理507
8.3.1睡眠到內存(待機) 509
8.3.2睡眠到磁盤(休眠) 520
8.4本章小結527
附錄A並發與同步原語
A.1內存屏障529
A.2每CPU變量533
A.3原子操作535
A.4開關搶占539
A.5自旋鎖540
A.6順序鎖544
A.7信號量546
A.8互斥量548
A.9 RCU機制549
A.10其他原語556
附錄B Linux內核大事記
B.1史前時代560
B.2奇偶時代560
B.3快速演進時代562
B.4極速演進時代564
後記
參考文獻


作者介紹


陳華才
博士,高級工程師。
現任江蘇航天龍夢信息技術有限公司副總工程師,負責龍芯3號處理器的內核開發。
作為Linux內核中MIPS/龍芯3號的Maintainer,向Linux內核官方提交了大量的代碼。
陳華才畢業於華中科技大學計算機學院,攻讀博士學位期間,先後在中國電力科學院、
英特爾開源技術中心實習,參與高可靠冗餘系統、Xen虛擬機監控器和Linux內核的研發。
2012年進入中國科學院計算技術研究所博士後流動站,同時被派往江蘇夢蘭集團企業博士後工作站從事博士後研究工作,
其間獲得“江蘇省科技創新團隊”和“常熟市科技創新創業領軍人才”等人才計劃資助。




相關書籍

The Illustrated Network : How TCP/IP Works in a Modern Network, 2/e (Paperback)

作者 Walter Goralski

2020-08-01

Beginning Unreal Engine 4 Blueprints Visual Scripting: Using C++: From Beginner to Pro

作者 Pv Satheesh

2020-08-01

C++ 2013 for C# Developers

作者 Dean C. C. Wills

2020-08-01