Linux核心分析及套用

Linux核心分析及套用

《Linux核心分析及套用》是2018機械工業出版社出版的圖書,作者是陳科。

基本介紹

  • 中文名:Linux核心分析及套用
  • 作者:陳科
  • 出版社:機械工業出版社
  • 出版時間:2018年7月
  • 開本:16 開
  • ISBN:9787111604082
內容簡介,圖書目錄,作者簡介,

內容簡介

本書由架構師親力打造,分享了他十多年後端開發經驗,特別是圍繞Linux系統進行的服務開發經驗。本書共8章,主要內容包括:第1章介紹Linux對進程和執行緒的實現原理,並分析了Memcached和Nginx工作進程池模型的實現;第2章介紹並發的概念以及Linux中的並發相關工具,然後分析常見開源軟體的並發問題;第3章介紹Linux是如何進行記憶體管理的,分析了Memcached和Redis的記憶體管理機制。第4章介紹Linux系統對中斷進行的封裝和實現;第5章介紹I/O的全過程,以及某些開源系統中I/O相關調用的實現等;第6章介紹Linux檔案系統的整體架構及核心概念,然後介紹ext4檔案系統的特點,以及TFS小檔案系統的設計思路;第7章介紹Linux進程隔離技術,以及Docker容器的部分實現;第8章介紹Linux網路層數據的流轉過程,以及lvs如何在netfilter上定製,後分析了Nginx伺服器socket監聽初始化的過程。

圖書目錄

Contents 目  錄
前言
第1章 進程與執行緒 1
1.1 進程和執行緒的概念 1
1.1.1 進程的歷史 1
1.1.2 執行緒的不同玩法 3
1.2 Linux對進程和執行緒的實現 5
1.2.1 Linux中的進程實現 6
1.2.2 進程創建之後 12
1.2.3 核心執行緒和進程的區別 13
1.2.4 用戶執行緒庫pthread 15
1.3 進程的調度 16
1.3.1 進程調度機制的架構 16
1.3.2 進程切換的原理 19
1.3.3 調度中的CPU親和度 21
1.4 在應用程式中管理進程和執行緒 22
1.4.1 Memcached執行緒池模型分析 22
1.4.2 Nginx進程模型分析 24
1.5 處理進程和執行緒的相關工具 25
1.5.1 開發環境調試執行緒 25
1.5.2 進程崩潰調試方法 26
1.5.3 strace工具 28
1.5.4 SystemTap工具 29
1.5.5 DTrace工具 30
1.6 本章小結 32
第2章 並發 33
2.1 什麼是並發 34
2.1.1 並發是如何產生的 34
2.1.2 並發會帶來什麼問題 34
2.1.3 如何解決並髮帶來的問題 35
2.2 作業系統會在哪些場景遇到並發 35
2.3 Linux中並發工具的實現 37
2.3.1 原子變數 37
2.3.2 自旋鎖 38
2.3.3 信號量 42
2.3.4 互斥鎖 43
2.3.5 讀寫鎖 43
2.3.6 搶占 44
2.3.7 per-cpu變數 45
2.3.8 RCU機制 48
2.3.9 記憶體屏障 51
2.4 常見開源軟體中的並發問題分析 54
2.4.1 Nginx原子性 54
2.4.2 Memcached中的互斥鎖 55
2.4.3 Redis無鎖解決方案 56
2.4.4 Linux中驚群問題分析 57
2.4.5 解決MyCat同步問題 65
2.4.6 false-sharing問題解決方案 67
2.5 本章小結 69
第3章 記憶體管理 70
3.1 為什麼需要記憶體管理 71
3.2 MMU和地址空間 73
3.2.1 虛擬地址、線性地址、物理地址 73
3.2.2 MMU的記憶體管理機制 74
3.3 Linux中的分段和分頁機制 79
3.3.1 分段機制 79
3.3.2 分頁機制 80
3.4 Linux的記憶體管理 82
3.4.1 物理記憶體管理 83
3.4.2 進程地址空間管理 86
3.5 Linux的記憶體分配和管理 89
3.5.1 物理記憶體分配算法 89
3.5.2 slab分配器 95
3.5.3 核心態記憶體管理 105
3.5.4 用戶態記憶體申請 109
3.6 棧記憶體分配和管理 109
3.7 記憶體管理案例分析 110
3.7.1 Memcached記憶體管理機制分析 110
3.7.2 Redis記憶體管理機制分析 113
3.8 本章小結 115
第4章 中斷機制 116
4.1 x86系統的中斷機制 116
4.1.1 x86中斷架構 117
4.1.2 x86在保護模式下的中斷 117
4.2 Linux對中斷的支持和實現 119
4.2.1 初始化IRQ中斷門 120
4.2.2 中斷回響流程 120
4.2.3 中斷回調handler註冊過程 122
4.3 Linux加速中斷處理的機制 122
4.3.1 軟中斷 122
4.3.2 tasklet 126
4.3.3 工作佇列 128
4.4 系統調用 132
4.5 時鐘中斷 134
4.6 信號處理機制 135
4.7 Nginx信號處理機制 139
4.8 本章小結 141
第5章 輸入輸出 142
5.1 I/O在Linux中的生命周期 143
5.1.1 vfs層 143
5.1.2 檔案系統層 144
5.1.3 Block層 152
5.1.4 scsi層 156
5.1.5 I/O流程總結 157
5.2 I/O調度器 159
5.3 多佇列機制 161
5.4 I/O多路復用實現 163
5.5 Redis對epoll的封裝 170
5.6 Nginx檔案異步I/O 175
5.7 tail指令為何牛 177
5.8 零拷貝技術套用分析 179
5.8.1 mmap 180
5.8.2 sendf?ile 181
5.8.3 mmap和sendf?ile在開源軟體中的使用 183
5.9 本章小結 186
第6章 檔案系統 187
6.1 Linux檔案系統架構 187
6.2 檔案系統的主要功能 189
6.2.1 檔案系統的安裝 190
6.2.2 檔案路徑查找 191
6.3 ext4檔案系統 201
6.3.1 磁碟布局 201
6.3.2 inode定位 203
6.3.3 碎片問題解決方案 204
6.3.4 extent tree結構 204
6.4 淘寶TFS小檔案系統分析 206
6.5 本章小結 207
第7章 Linux的進程隔離技術與Docker容器 208
7.1 虛擬化相關技術 208
7.2 Linux進程隔離技術 209
7.2.1 chroot 209
7.2.2 namespace 210
7.2.3 cgroup 212
7.3 Docker容器的部分實現 219
7.3.1 新版Docker架構 220
7.3.2 containerd的實現 221
7.4 本章小結 241
第8章 Linux網路層數據流分析 242
8.1 數據在網路層的流轉 242
8.1.1 sk_buff結構 243
8.1.2 數據流轉過程 244
8.2 socket接口層的實現 248
8.2.1 socket系統初始化 248
8.2.2 socket創建 250
8.2.3 socket綁定 251
8.2.4 socket監聽 253
8.2.5 socket接受連線 254
8.2.6 新連線的到來 257
8.2.7 socket整體流程 259
8.3 netf?ilter和lvs 260
8.3.1 netf?ilter 260
8.3.2 lvs 263
8.4 網路相關的一些參數 265
8.4.1 Java socket相關的參數 265
8.4.2 Linux TCP相關佇列 267
8.5 Nginx伺服器監聽socket初始化過程 268
8.6 本章小結 274

作者簡介

陳科 曾在阿里巴巴等多家知名網際網路公司擔任架構師、技術總監等職位,參與設計和開發了多個應對高並發、高可用的網際網路系統,對Linux系統以及圍繞Linux生態體系的開源軟體有深入研究,熱愛分享,在UPYUN、DBA 、高可用架構群等組織的會議或者討論組中做過專題分享。

相關詞條

熱門詞條

聯絡我們