-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
9/20 新書到! 8/30 新書到! 8/23 新書到! 8/16 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

深入Linux內核架構與底層原理(第2版)

( 簡體 字)
作者:劉京洋類別:1. -> 作業系統 -> Linux
譯者:
出版社:電子工業出版社深入Linux內核架構與底層原理(第2版) 3dWoo書號: 55915
詢問書籍請說出此書號!

有庫存
NT售價: 695

出版日:6/1/2022
頁數:568
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121436895
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

推 薦 序 一

Linux操作系統在超級計算機、互聯網服務、桌面系統、移動和嵌入式設備等領域使用廣泛,相關的從業人員和興趣愛好者一直對Linux的理論和實踐有較大需求。本人作為互聯網領域的從業人員,非常榮幸可以提前閱讀書中的內容。本書內容從內核層面出發,結合作者多年的實踐,對各個子系統的設計、實現和演化進行梳理。我認為本書具有以下特點。
第一個特點是解釋透徹。Linux發展至今已經超過25年,源代碼融合了不同時期的演進和變化,回顧當時的背景,有助于清晰了解源代碼作者的意圖和目標。
第二個特點是實踐性強。在技術領域,實踐往往能加深讀者對相關概念的理解,本書中的很多案例都可以作為實驗,感興趣的讀者可在單機環境或者虛擬機環境完成。
第三個特點是指路明燈。Linux內核的子系統和模塊非常多,覆蓋的應用范圍也很廣,面面俱到顯然是不現實的。作者希望更多地展示代碼背后的思想,以及對其思考后的理解,這比單純的技術講解更有營養價值,同時也鼓勵讀者在閱讀時形成自己的見解,學會查閱相關的技術資料。
第四個特點是與時俱進。近幾年,業界利用Linux構建很多熱點應用,本書在很多方面覆蓋了Linux的新功能,對從業者有較大幫助。

總的來講,本人閱讀本書后收獲頗豐,對工作也有很大幫助,希望其他讀者也能從中獲取價值。本人也是一名開源愛好者,感謝作者的辛勤付出,編寫出這本內容詳盡的Linux著作,希望Linux和其他開源社區發展得越來越好。

李文俊

推 薦 序 二

在當今移動互聯網和人工智能技術快速發展的時代,無論是服務器端程序還是智能終端(手機、手表、電視)程序,Linux操作系統都是主流的操作系統,應用非常廣泛。基于Linux內核衍生的發行版眾多,包括OpenSuse、RedHat、CentOS、Ubuntu、Android等,在如此廣泛的應用下,熟悉和理解Linux內核原理對于廣大的Linux操作系統研發工程師就顯得尤為重要。理解Linux系統內核原理可以幫助操作系統研發工程師在結合Linux的系統原理,充分利用操作系統資源和機制的基礎上,設計出更穩定、更可靠、更高效的應用程序。同時,學習Linux內核設計(負載均衡、內存管理、網絡框架等)可以指導我們設計更復雜的互聯網技術架構。本書作者擁有多年的Linux內核研發工作經驗,對Linux內核各個模塊的原理進行了深入剖析,通過暢讀本書,我有以下幾方面體會。
第一,數據結構和算法解釋詳盡。數據結構和算法是程序設計和開發的基礎,本書可以作為參考學習Linux內核數據結構設計的參考書。比如,第2章2.2節關于Linux內核數據結構,鏈表、哈希表和動態數組等數據結構;第10章關于路由查找的算法、擁塞控制算法和一致性哈希算法等。本書詳細介紹了Linux內核的數據結構和算法,同時提供了大量的示例代碼。
第二,內核原理和設計剖析透徹。Linux內核有非常多的經典設計,本書都進行了詳細解釋,非常清晰易懂。比如第10章第10.4節關于內核網絡四層負載均衡架構、Netfilter過濾框架都是Linux經典的技術框架,本書對此剖析得很透徹;第12章關于Linux ELF的格式,對Linux程序編譯、加載和運行的原理,都寫得很清晰。
第三,內容實踐性強,與時俱進。書中很多內容都來自作者多年研發工作的總結和實踐積累。比如第12章第12.5節關于二進制安全性、攻擊方式的分析,以及羅列的很多常用的二進制分析工具;第10章關于內核處理TCP連接,以及連接的斷開、四元組、窗口大小來判斷網絡攻擊等,都來自作者實踐工作的總結。
總體來說,這是一本Linux內核原理解讀的經典之作。本書一定能夠深受廣大Linux愛好者的喜愛!

韓方
2022年3月

前 言

本書第1版在上市后,收到很多讀者反饋的寶貴意見。本書第2版在第1版的基礎上進行了大范圍的修訂和完善,特別感謝在這個過程中林奕、姚奕濤的勘誤幫助。
本書第2版加入了Linux與其他操作系統的對比分析,因為不同的操作系統有著不同點和相同點,通過對比分析可以讓讀者更容易系統理解設計,甚至產生新的設計。
學習Linux內核最好的方法是閱讀源碼,但是只看源碼往往會無從下手,或者很難理解其中的設計思路。本書與實現方式相結合,對案例所涉及的每個模塊都提供了設計思路,可以幫助讀者知其然并知其所以然。
我工作在與內核相關的應用領域,所以,本書的內容都是從實踐中提煉出來的,希望所提煉的內容能夠幫助讀者,讓讀者更好地理解和實現系統設計。如果你是初學者,希望你能從本書中了解Linux從哪里來,要到哪里去的問題。如果你是產業實踐者,希望你能通過內容與我共鳴。
歡迎讀者提出任何形式的批評與意見,你們對本書的每一個觀點都是我改進的動力和指引。
內容簡介:

本書主要描述Linux系統的總體框架和設計思想,包含很多可以直接操作的實例。編寫本書的目的是希望讀者對Linux系統背后的邏輯有一個全面的了解。本書對比較核心且常用的技術點有更加深入的解釋,對實際使用Linux系統工作大有裨益,同時,選擇重點的方向進行源碼級深度分析,包含大量的案例,而且增加了與Windows同類操作系統的對比,涉及Fuchsia?OS和Android系統的一些實現,對操作系統的描述更清晰。 本書適合Linux系統開發人員、嵌入式系統開發人員閱讀,也可供計算機相關專業的師生閱讀。
目錄:

第1章 操作系統總覽 1
1.1 操作系統簡介 1
1.2 如何形成一個內核 4
1.3 主要操作系統與Linux的對比 6
1.3.1 Linux和Android 6
1.3.2 Windows下Linux運行環境的發展 8
1.3.3 Fuchsia OS與Windows、Linux的對比 9
第2章 系統結構 15
2.1 Linux內核整體結構 15
2.1.1 內核模塊 17
2.1.2 內核符號表 23
2.2 Linux內核數據結構 25
2.2.1 鏈表與哈希表 25
2.2.2 雙向鏈表 26
2.3 hlist 28
2.3.1 llist 34
2.3.2 樹與IDR 37
2.3.3 xarray 38
第3章 鎖與系統調用 46
3.1 原子操作 47
3.1.1 內存一致性 51
3.1.2 原子類型定義 54
3.1.3 cmpxchg實現 56
3.2 引用計數 60
3.3 自旋鎖 65
自旋鎖的性能 77
3.4 讀寫鎖與順序鎖 79
3.5 信號量 82
3.6 讀寫信號量 86
3.6.1 獲得讀鎖 87
3.6.2 鎖狀態與鎖交接 90
3.6.3 鎖持有 92
3.6.4 等待鏈表 94
3.6.5 讀鎖慢速路徑 99
3.7 互斥鎖 103
3.8 RCU鎖 110
3.8.1 RCU鎖基本接口 114
3.8.2 grace period等待 115
3.8.3 SRCU 117
3.8.4 RCU鎖、讀寫鎖與順序鎖對比 118
3.8.5 hlist中的RCU鎖 119
3.8.6 reuseport中的RCU鎖 121
3.9 引用計數 123
percpu-ref 124
第4章 信號、中斷與系統調用 129
4.1 信號 129
4.1.1 Linux信號處理機制的設計 129
4.1.2 Windows的Event語義設計 139
4.2 中斷 141
4.2.1 IDT(中斷描述符表) 141
4.2.2 IPI中斷 148
4.3 系統調用 156
4.3.1 系統調用原理 156
4.3.2 vsyscall與VDSO 163
4.3.3 系統調用截斷 168
第5章 Linux系統的啟動與進程 171
5.1 Linux啟動過程的組件 171
5.1.1 啟動過程相關組件 171
5.1.2 最小系統的制作和啟動 182
5.2 內核啟動流程:EFI stub 183
5.3 進程 199
5.3.1 進程概述 199
5.3.2 進程內存和PID 201
5.3.3 進程生命周期 205
第6章 調度 220
6.1 任務調度 220
6.1.1 調度優先級 220
6.1.2 上下文切換 223
6.1.3 運行隊列與調度類 228
6.1.4 調度域、調度組與調度實體 230
6.1.5 TTWU(喚醒) 239
6.2 時鐘 244
6.2.1 時鐘概念 244
6.2.2 計時器與定時器 248
6.3 Futex系統調用 256
6.4 C-State 263
第7章 內存管理 275
7.1 地址空間 275
7.1.1 64位Linux地址空間 275
7.1.2 32位Linux地址空間 276
7.2 尋址 280
7.2.1 64位下的尋址 280
7.2.2 Intel的硬件四級尋址過程 284
7.2.3 操作系統的頁狀態和權限控制 291
7.2.4 頁框回收算法 293
7.2.5 段寄存器 301
7.3 堆內存管理 306
7.3.1 用戶空間與內核空間的堆內存管理 306
7.3.2 Buddy思想與Slab思想 307
7.3.3 內存回收(PFRA) 314
7.3.4 BDI 316
第8章 存儲 319
8.1 VFS 319
8.1.1 文件句柄與文件描述符表 319
8.1.2 _alloc_fd、fd_install、dup2與close_on_exec 322
8.1.3 open系統調用 325
8.1.4 flock文件鎖與文件內容鎖 328
8.2 通用塊層 339
8.2.1 通用塊層功能概覽 339
8.2.2 bio和bio_set 342
8.2.3 request和request_queue 343
8.2.4 電梯算法 345
8.3 緩存層 354
8.3.1 Linux與Windows在緩存設計上的不同 354
8.3.2 Linux下的緩存機制 355
8.4 文件系統與Ext4 362
8.4.1 Linux文件系統的特性與框架 362
8.4.2 文件系統的種類 367
8.4.3 文件系統的抽象:VFS 372
8.4.4 Ext4文件系統實踐 375
8.5 預讀機制 383
8.5.1 預讀機制框架 383
8.5.2 預讀算法 388
第9章 套接字(socket) 393
9.1 socket概覽 393
9.1.1 socket類型與接口 394
9.1.2 Linux socket連接模型 397
9.1.3 Linux socket的鎖 398
9.1.4 epoll 400
9.2 Netlink 402
9.2.1 Netlink消息格式 402
9.2.2 Netlink功能模塊 406
9.2.3 genetlink的使用 408
9.2.4 inet_diag模塊 410
9.2.5 RTNETLINK 414
9.3 BPF與eBPF 418
9.3.1 BPF 419
9.3.2 eBPF 422
第10章 網絡 430
10.1 網絡架構 430
10.2 IP 434
10.2.1 路由條目的意義 434
10.2.2 IP管理 437
10.2.3 IP隧道 439
10.3 TCP 446
10.3.1 TCP的無損特性 446
10.3.2 TCP的連接狀態 447
10.3.3 TCP擁塞控制 452
10.4 負載均衡 460
10.4.1 負載均衡的核心技術點 460
10.4.2 四層負載均衡常見架構 461
10.4.3 一致性哈希和分布式哈希 463
10.5 網絡服務質量與安全性 465
10.5.1 TCP安全性 465
10.5.2 QoS 469
10.5.3 NAT 472
10.6 netfilter 475

第11章 設備管理 479
11.1 設備模型 479
11.1.1 sys文件系統 479
11.1.2 設備變化通知用戶端 484
11.1.3 設備類型 485
11.2 tty子系統 491
11.2.1 tty框架與ttyS硬件 491
11.2.2 terminal硬件 493
11.2.3 tty結構 494
11.2.4 getty、login與shell 496
11.2.5 /dev/ptmx與/dev/pts/n 496
11.2.6 SSH 501
11.3 PCI與USB 502
11.3.1 PCI 502
11.3.2 USB 510
第12章 二進制 516
12.1 二進制原理 516
12.1.1 編譯、鏈接與執行 516
12.1.2 裸程序 518
12.1.3 加載器 519
12.1.4 鏈接過程 523
12.2 ELF格式 525
12.2.1 ABI 525
12.2.2 ELF 529
12.3 函數調用約定 547
12.4 二進制安全 552
序: