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

陳華才

  • 出版商: 人民郵電
  • 出版日期: 2020-08-01
  • 定價: $708
  • 售價: 8.5$602
  • 語言: 簡體中文
  • 頁數: 568
  • 裝訂: 平裝
  • ISBN: 7115444927
  • ISBN-13: 9787115444929
  • 相關分類: Linux
  • 立即出貨

買這商品的人也買了...

商品描述

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

作者簡介

陳華才

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

目錄大綱


目錄:
第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
後記
參考文獻