日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux多线程编程书籍推荐:linux大牛之路从这几本书開始总结

發(fā)布時間:2023/12/20 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux多线程编程书籍推荐:linux大牛之路从这几本书開始总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

 linux多線程編程是指基于Linux操作系統(tǒng)下的多線程編程,包含多任務(wù)程序的設(shè)計,并發(fā)程序設(shè)計,網(wǎng)絡(luò)程序設(shè)計。數(shù)據(jù)共享等。Linux系統(tǒng)下的多線程遵循POSIX線程接口,稱為pthread。編寫Linux下的多線程程序,須要使用頭文件pthread.h,連接時須要使用庫libpthread.a。

小編今天就來把幾本linux多線程編程書籍推薦給大家,希望可以幫助到想要了解和學(xué)習(xí)linux多線程編程的攻城獅們。

  linux多線程編程書籍推薦no.1:《精通Linux》

  


  我們學(xué)習(xí)Linux的原因可能各不相同。對于IT從業(yè)者(如系統(tǒng)運維人員)來說,他們須要了解本書中的差點兒全部內(nèi)容。

對于Linux軟件架構(gòu)和開發(fā)者來說。他們相同須要了解這些內(nèi)容,以便發(fā)揮操作系統(tǒng)的最大功效。對于研究人員和學(xué)生來說,本書可以讓他們理解為什么我們要這樣設(shè)置系統(tǒng)。本書菜鳥與老鳥通吃。既可作為菜鳥的新手教程。也可以作為老鳥的進階指南。

  linux多線程編程書籍推薦no.2:《Linux設(shè)備驅(qū)動開發(fā)具體解釋:基于最新的Linux 4.0內(nèi)核》

  


  歷時8年。三次重構(gòu)。內(nèi)窖愈加爐火純青。

  所有代碼更新至全新的Linux4.0版本號。

  全面解說ARM Linux新版本號內(nèi)核架構(gòu),如設(shè)備樹等。

  不只注重知識和程序的解說,更注重程序的思想、演變、架構(gòu)和算法。

  linux多線程編程書籍推薦no.3:《深度實踐KVM:核心技術(shù)、管理運維、性能優(yōu)化與項目實施》

  


  中國運維領(lǐng)域里劃時代著作。國內(nèi)頂尖KVM專家和運維專家多年大規(guī)模生產(chǎn)環(huán)境實踐經(jīng)驗總結(jié),國內(nèi)數(shù)十位運維專家鼎力支持和推薦。

  從核心技術(shù)、管理運維、性能優(yōu)化、項目實施等多個維度系統(tǒng)、深入解說KVM虛擬化技術(shù)的工作原理、應(yīng)用方法和技術(shù)生態(tài)。并針對生產(chǎn)環(huán)境中的各種難題給出了解決方式。

  linux多線程編程書籍推薦no.4:《Linux性能優(yōu)化大師》

  


  本書適合廣大Linux用戶深入學(xué)習(xí),并適合計算機專業(yè)本科、碩士等專業(yè)的學(xué)生學(xué)習(xí)參考。

  為特定server的應(yīng)用程序調(diào)整關(guān)鍵參數(shù)。從而產(chǎn)生優(yōu)異的性能。

  linux多線程編程書籍推薦no.5:《精通Linux內(nèi)核網(wǎng)絡(luò)》

  


  專注于各網(wǎng)絡(luò)協(xié)議實現(xiàn)技術(shù)的精髓及其遵循的指導(dǎo)方針和原則。

  重點解說數(shù)據(jù)包在Linux內(nèi)核網(wǎng)絡(luò)棧中的傳輸過程。闡述其與網(wǎng)絡(luò)各層及各子系統(tǒng)之間的交互。

  從網(wǎng)絡(luò)開發(fā)人員視角,配合清晰圖表。深入剖析Linux內(nèi)核網(wǎng)絡(luò)子系統(tǒng)的內(nèi)部細節(jié)及核心實現(xiàn)。

  最詳盡的Linux內(nèi)核網(wǎng)絡(luò)專著,深入剖析IPsec、Wireless、InfiniBand等重要內(nèi)核網(wǎng)絡(luò)子系統(tǒng)。

  linux多線程編程的學(xué)習(xí)一定要與時俱進。杜絕閉門造車。以上的linux多線程編程書籍推薦假設(shè)還是不能滿足你的需求,你還想要尋找很多其它重磅的計算機好書,請點擊關(guān)注》》計算機圖書頻道。



《精通Linux內(nèi)核網(wǎng)絡(luò)》討論Linux 內(nèi)核網(wǎng)絡(luò)棧的實現(xiàn)及其原理,深入而詳盡地分析網(wǎng)絡(luò)子系統(tǒng)及其架構(gòu),主要內(nèi)容包含:內(nèi)核網(wǎng)絡(luò)基礎(chǔ)知識、Netlink 套接字、ARP、鄰居發(fā)現(xiàn)和ICMP 等重要協(xié)議的實現(xiàn)、IPv4 和IPv6 的深入探索、Linux 路由選擇、Netfilter 和IPsec 的實現(xiàn)、Linux 無線網(wǎng)絡(luò)、InfiniBand 等。


《精通Linux內(nèi)核網(wǎng)絡(luò)》不僅適合從事網(wǎng)絡(luò)相關(guān)項目的專業(yè)人員參考,也能為相關(guān)研究人員和學(xué)生提供極大幫助。?

作譯者

Rami Rosen?
資深軟件project師。Linux內(nèi)核網(wǎng)絡(luò)專家。

從業(yè)十余年間,參與過多個尖端Linux內(nèi)核項目,曾就Linux內(nèi)核網(wǎng)絡(luò)和虛擬化發(fā)表過多篇文章,并做過多次演講。博客地址:http://ramirose.wix.com/ramirosen
譯者簡單介紹:
袁國忠?
自由譯者;2000年起專事翻譯,主譯圖書,偶譯新聞稿、軟文。出版譯著40余部,當(dāng)中包含《C++ Prime Plus中文版》《CCNA學(xué)習(xí)指南》《CCNP ROUTE學(xué)習(xí)指南》《面向模式的軟件架構(gòu):模式系統(tǒng)》《Android應(yīng)用UI設(shè)計模式》《風(fēng)投的選擇:誰是下一個十億美元級公司》等,總計700余萬字。專事翻譯前,從事過三年化工產(chǎn)品分析和開發(fā),做過兩年雜志和圖書編輯。?

文件夾

第1章 緒論 1
1.1 Linux網(wǎng)絡(luò)棧 2
1.2 網(wǎng)絡(luò)設(shè)備 4
1.2.1 網(wǎng)絡(luò)設(shè)備中的NAPI 5
1.2.2 數(shù)據(jù)包的收發(fā) 5
1.2.3 套接字緩沖區(qū) 7
1.3 Linux內(nèi)核網(wǎng)絡(luò)開發(fā)模型 10
1.4 總結(jié) 12
第2章 Netlink套接字 13
2.1 Netlink簇 13
2.1.1 Netlink套接字庫 15
2.1.2 結(jié)構(gòu)sockaddr_nl 15
2.1.3 用于控制TCP/IP聯(lián)網(wǎng)的用戶
空間包 15
2.1.4 內(nèi)核Netlink套接字 16
2.1.5 Netlink消息報頭 20
2.1.6 NETLINK_ROUTE消息 22
2.1.7 在路由選擇表中加入和刪除
路由選擇條目 24
2.2 通用Netlink協(xié)議 25
2.2.1 創(chuàng)建和發(fā)送通用Netlink消息 29
2.2.2 套接字監(jiān)視接口 31
2.3 總結(jié) 32
2.4 高速參考 32
第3章 Internet控制消息協(xié)議(ICMP) 36
3.1 ICMPv4 36
3.1.1 ICMPv4的初始化 37
3.1.2 ICMPv4報頭 38
3.1.3 接收ICMPv4消息 42
3.1.4 發(fā)送ICMPv4消息:目的地
不可達 43
3.2 ICMPv6 47
3.2.1 ICMPv6初始化 47
3.2.2 ICMPv6報頭 48
3.2.3 接收ICMPv6消息 49
3.2.4 發(fā)送ICMPv6消息 52
3.3 ICMP套接字(ping套接字) 55
3.4 總結(jié) 56
3.5 高速參考 56
3.5.1 方法 56
3.5.2 表格 57
3.5.3 procfs條目 58
3.5.4 使用iptables創(chuàng)建“目的地
不可達”消息 59
第4章 IPv4 61
4.1 IPv4報頭 62
4.2 IPv4的初始化 63
4.3 接收IPv4數(shù)據(jù)包 64
4.4 接收IPv4組播數(shù)據(jù)包 67
4.5 IP選項 69
4.5.1 時間戳選項 71
4.5.2 記錄路由選項 74
4.5.3 IP選項和分段 82
4.5.4 創(chuàng)建IP選項 84
4.6 發(fā)送IPv4數(shù)據(jù)包 85
4.7 分段 89
4.7.1 高速路徑 90
4.7.2 慢速路徑 93
4.8 重組 94
4.9 轉(zhuǎn)發(fā) 99
4.10 總結(jié) 101
4.11 高速參考 101
4.11.1 方法 102
4.11.2 宏 104
第5章 IPv4路由選擇子系統(tǒng) 105
5.1 轉(zhuǎn)發(fā)和FIB 105
5.2 在路由選擇子系統(tǒng)中進行查找 107
5.3 FIB表 110
5.3.1 FIB信息 110
5.3.2 緩存 115
5.3.3 下一跳 115
5.3.4 策略路由選擇 117
5.3.5 FIB別名 118
5.4 ICMPv4重定向消息 121
5.4.1 生成ICMPv4重定向消息 122
5.4.2 接收ICMPv4重定向消息 123
5.4.3 IPv4路由選擇緩存 125
5.5 總結(jié) 126
5.6 高速參考 126
5.6.1 方法 127
5.6.2 宏 128
5.6.3 表 128
5.6.4 路由標(biāo)志 129
第6章 高級路由選擇 131
6.1 組播路由選擇 131
6.1.1 IGMP 132
6.1.2 組播路由選擇表 133
6.1.3 組播轉(zhuǎn)發(fā)緩存(MFC) 134
6.1.4 組播路由器 136
6.1.5 vif設(shè)備 137
6.1.6 IPv4組播接收路徑 138
6.1.7 方法ip_mr_forward() 141
6.1.8 方法ipmr_queue_xmit() 143
6.1.9 方法ipmr_forward_finish() 145
6.1.10 組播流量中的TTL 146
6.2 策略路由選擇 146
6.2.1 策略路由選擇的管理 147
6.2.2 策略路由選擇的實現(xiàn) 147
6.3 多路徑路由選擇 148
6.4 總結(jié) 149
6.5 高速參考 149
6.5.1 方法 149
6.5.2 宏 151
6.5.3 procfs組播條目 152
6.5.4 表 152
第7章 Linux鄰接子系統(tǒng) 153
7.1 鄰接子系統(tǒng)的核心 153
7.1.1 創(chuàng)建和釋放鄰居 160
7.1.2 用戶空間和鄰接子系統(tǒng)之間
的交互 161
7.1.3 處理網(wǎng)絡(luò)事件 163
7.2 ARP協(xié)議(IPv4) 163
7.2.1 ARP:發(fā)送請求 165
7.2.2 ARP:接收請求和應(yīng)答 168
7.3 NDISC協(xié)議(IPv6) 174
7.3.1 反復(fù)地址檢測(DAD) 174
7.3.2 NIDSC:發(fā)送請求 176
7.3.3 NDISC:接收鄰居請求和
通告 179
7.4 總結(jié) 185
7.5 高速參考 186
7.5.1 方法 186
7.5.2 宏 189
7.5.3 結(jié)構(gòu)neigh_statistics 190
7.5.4 表 191
第8章 IPv6 192
8.1 IPv6簡單介紹 192
8.2 IPv6地址 193
8.2.1 特殊地址 193
8.2.2 組播地址 194
8.3 IPv6報頭 195
8.4 擴展報頭 197
8.5 IPv6初始化 199
8.6 自己主動配置 200
8.7 接收IPv6數(shù)據(jù)包 201
8.7.1 本地投遞 204
8.7.2 轉(zhuǎn)發(fā) 206
8.8 接收IPv6組播流量 210
8.9 組播偵聽者發(fā)現(xiàn)(MLD) 211
8.9.1 增加和退出組播組 212
8.9.2 MLDv2組播偵聽者報告 215
8.9.3 組播源過濾 215
8.10 發(fā)送IPv6數(shù)據(jù)包 220
8.11 IPv6路由選擇 221
8.12 總結(jié) 221
8.13 高速參考 221
8.13.1 方法 221
8.13.2 宏 224
8.13.3 表 224
8.13.4 特殊地址 225
8.13.5 IPv6路由選擇表的管理 226
第9章 Netfilter 227
9.1 Netfilter框架 227
9.2 Netfilter掛接點 228
注冊Netfilter鉤子回調(diào)函數(shù) 229
9.3 連接跟蹤 230
9.3.1 連接跟蹤的初始化 231
9.3.2 連接跟蹤條目 234
9.3.3 連接跟蹤輔助方法和期望
連接 238
9.3.4 iptables 241
9.3.5 投遞到當(dāng)前主機 243
9.3.6 轉(zhuǎn)發(fā)數(shù)據(jù)包 245
9.3.7 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT) 245
9.3.8 NAT鉤子回調(diào)函數(shù)和連接
跟蹤鉤子回調(diào)函數(shù) 247
9.3.9 NAT鉤子回調(diào)函數(shù) 250
9.3.10 連接跟蹤擴展 252
9.4 總結(jié) 253
9.5 高速參考 253
9.5.1 方法 253
9.5.2 宏 255
9.5.3 表 255
9.5.4 工具和庫 256
第10章 IPsec 257
10.1 概述 257
10.2 Internet密鑰交換(IKE) 257
10.3 IPsec和加密 259
10.4 XFRM框架 259
10.4.1 XFRM的初始化 260
10.4.2 XFRM策略 260
10.4.3 XFRM狀態(tài)(安全關(guān)聯(lián)) 263
10.5 IPv4 ESP的實現(xiàn) 266
10.6 接收IPsec數(shù)據(jù)包(傳輸模式) 268
10.7 發(fā)送IPsec數(shù)據(jù)包(傳輸模式) 271
10.8 XFRM查找 272
10.9 IPsec的NAT穿越功能 275
10.10 總結(jié) 276
10.11 高速參考 276
10.11.1 方法 276
10.11.2 表 278
第11章 第4層協(xié)議 280
11.1 套接字 280
11.2 創(chuàng)建套接字 281
11.3 用戶數(shù)據(jù)包協(xié)議(UDP) 285
11.3.1 UDP的初始化 286
11.3.2 發(fā)送UDP數(shù)據(jù)包 287
11.3.3 接收來自網(wǎng)絡(luò)層(L3)的
UDP數(shù)據(jù)包 290
11.4 傳輸控制協(xié)議(TCP) 293
11.4.1 TCP報頭 293
11.4.2 TCP的初始化 295
11.4.3 TCP定時器 296
11.4.4 TCP套接字的初始化 297
11.4.5 TCP連接的建立 297
11.4.6 接收來自網(wǎng)絡(luò)層(L3)的
TCP數(shù)據(jù)包 298
11.4.7 發(fā)送TCP數(shù)據(jù)包 299
11.5 流控制傳輸協(xié)議(SCTP) 300
11.5.1 SCTP數(shù)據(jù)包和數(shù)據(jù)塊 301
11.5.2 SCTP塊頭 302
11.5.3 SCTP塊 302
11.5.4 SCTP關(guān)聯(lián) 303
11.5.5 建立SCTP關(guān)聯(lián) 305
11.5.6 接收SCTP數(shù)據(jù)包 305
11.5.7 發(fā)送SCTP數(shù)據(jù)包 306
11.5.8 SCTP心跳 306
11.5.9 SCTP多流 306
11.5.10 SCTP多宿主 307
11.6 數(shù)據(jù)報擁塞控制協(xié)議(DCCP) 307
11.6.1 DCCP報頭 307
11.6.2 DCCP的初始化 309
11.6.3 DCCP套接字的初始化 310
11.6.4 接收來自網(wǎng)絡(luò)層(L3)的
DCCP數(shù)據(jù)包 311
11.6.5 發(fā)送DCCP數(shù)據(jù)包 311
11.6.6 DCCP和NAT 312
11.7 總結(jié) 313
11.8 高速參考 313
11.8.1 方法 313
11.8.2 宏 315
11.8.3 表 315
第12章 無線子系統(tǒng) 317
12.1 mac80211子系統(tǒng) 317
12.2 802.11 MAC幀頭 318
12.3 802.11 MAC幀頭的其它成員 320
12.4 網(wǎng)絡(luò)拓撲 321
12.4.1 基礎(chǔ)設(shè)施BSS 321
12.4.2 IBSS(對等模式) 322
12.5 省電模式 322
12.5.1 進入省電模式 322
12.5.2 退出省電模式 322
12.5.3 處理組播/廣播緩沖區(qū) 323
12.6 管理層 325
12.6.1 掃描 325
12.6.2 身份驗證 325
12.6.3 關(guān)聯(lián) 325
12.6.4 又一次關(guān)聯(lián) 325
12.7 mac80211的實現(xiàn) 326
12.7.1 接收路徑 328
12.7.2 傳輸路徑 328
12.7.3 分段 329
12.7.4 mac80211 debugfs 330
12.7.5 無線模式 331
12.8 高吞吐量(IEEE 802.11n) 331
12.9 網(wǎng)狀網(wǎng)絡(luò)(802.11s) 334
12.9.1 HWMP 335
12.9.2 組建網(wǎng)狀網(wǎng)絡(luò) 336
12.10 Linux無線開發(fā)流程 337
12.11 總結(jié) 337
12.12 高速參考 338
12.12.1 方法 338
12.12.2 表 341
第13章 InfiniBand 343
13.1 RDMA和InfiniBand概述 343
13.1.1 RDMA棧的組織結(jié)構(gòu) 344
13.1.2 RDMA技術(shù)的長處 345
13.1.3 InfiniBand硬件組件 345
13.1.4 InfiniBand中的編址 345
13.1.5 InfiniBand的功能 346
13.1.6 InfiniBand數(shù)據(jù)包 346
13.1.7 管理實體 347
13.2 RDMA資源 348
13.2.1 RDMA設(shè)備 348
13.2.2 PD 350
13.2.3 AH 350
13.2.4 MR 350
13.2.5 FMR池 351
13.2.6 MW 352
13.2.7 CQ 352
13.2.8 XRC 353
13.2.9 SRQ 353
13.2.10 QP 355
13.2.11 工作請求的處理 360
13.2.12 RDMA架構(gòu)支持的操作 361
13.2.13 組播組 365
13.2.14 用戶空間RDMA API
和內(nèi)核級RDMA API
的區(qū)別 365
13.3 總結(jié) 366
13.4 高速參考 366
第14章 高級主題 372
14.1 網(wǎng)絡(luò)命名空間 372
14.1.1 命名空間的實現(xiàn) 373
14.1.2 UTS命名空間的實現(xiàn) 381
14.1.3 網(wǎng)絡(luò)命名空間的實現(xiàn) 383
14.1.4 網(wǎng)絡(luò)命名空間的管理 388
14.2 cgroup 392
14.2.1 cgroup的實現(xiàn) 393
14.2.2 cgroup設(shè)備控制器:一個
簡單演示樣例 395
14.2.3 cgroup內(nèi)存控制器:一個
簡單演示樣例 396
14.2.4 net_prio模塊 396
14.2.5 分類器cls_cgroup 397
14.2.6 掛載cgroup子系統(tǒng) 398
14.3 頻繁輪詢套接字 399
14.3.1 全局啟用 400
14.3.2 對特定套接字啟用 401
14.3.3 調(diào)整和配置 401
14.3.4 性能 401
14.4 Linux藍牙子系統(tǒng) 401
14.4.1 HCI層 404
14.4.2 HCI連接 406
14.4.3 L2CAP 407
14.4.4 BNEP 407
14.4.5 藍牙數(shù)據(jù)包接收示意圖 408
14.4.6 L2CAP擴展功能 409
14.4.7 藍牙工具 409
14.5 IEEE 802.15.4和6LoWPAN 410
14.5.1 鄰居發(fā)現(xiàn)優(yōu)化 411
14.5.2 Linux內(nèi)核的6LoWPAN
實現(xiàn) 412
14.6 NFC 415
14.6.1 NFC標(biāo)簽 415
14.6.2 NFC設(shè)備 416
14.6.3 通信模式和操作模式 416
14.6.4 主機控制器接口 417
14.6.5 Linux對NFC的支持 417
14.6.6 用戶空間架構(gòu) 421
14.6.7 Android NFC 421
14.7 通知鏈 422
14.8 PCI子系統(tǒng) 425
14.9 組合網(wǎng)絡(luò)設(shè)備 428
14.10 PPPoE協(xié)議 428
14.10.1 PPPoE報頭 429
14.10.2 PPPoE的初始化 430
14.10.3 PPPoE數(shù)據(jù)包的收發(fā) 432
14.11 Android 435
14.11.1 Android聯(lián)網(wǎng)技術(shù) 436
14.11.2 Android內(nèi)部原理:資料 437
14.12 總結(jié) 438
14.13 高速參考 438
14.13.1 方法 438
14.13.2 宏 443
附錄A Linux API 444
附錄B 網(wǎng)絡(luò)管理 520
附錄C 術(shù)語表 537?


性能調(diào)優(yōu)有時被稱為"黑色藝術(shù)",由于有時有效地調(diào)整一個系統(tǒng),要求具有更深層次的知識,且須要了解一個系統(tǒng)的硬件和軟件組成。以及系統(tǒng)之間的相互作用。

性能優(yōu)化是針對特定環(huán)境來定制系統(tǒng)的配置過程,或者是讓某個特定的應(yīng)用程序得到更好的響應(yīng)時間或吞吐量的過程。
《Linux性能優(yōu)化大師》首先對Linux 操作系統(tǒng)進行了深入剖析,并對最經(jīng)常使用的企業(yè)監(jiān)控工具Benchmark 及其它監(jiān)控工具進行了具體的介紹。此外分析了系統(tǒng)中識別和分析瓶頸的過程,最后闡述怎樣使用性能衡量工具。以及怎樣對系統(tǒng)的4 大子系統(tǒng)進行調(diào)整,使系統(tǒng)以最優(yōu)狀態(tài)應(yīng)對不同的工作環(huán)境。
《Linux性能優(yōu)化大師》適合廣大Linux 用戶深入學(xué)習(xí),并適合計算機專業(yè)本科、碩士等專業(yè)的學(xué)生學(xué)習(xí)參考。?

作譯者

趙永剛,2006-2008年期間主要從事思科網(wǎng)絡(luò)研究,并在2008年獲得思科CCNA 與CCNP國際認證。

2009至今一直在從事Linux系統(tǒng)的研究。并在2009年和2010年分別獲得紅帽RHCE和RHCA國際認證。

文件夾

第1章深入理解Linux操作系統(tǒng) 1
1.1 Linux進程管理 1
1.1.1 什么是進程 2
1.1.2 進程的生命周期 2
1.1.3 線程 3
1.1.4 進程優(yōu)先級和nice等級 4
1.1.5 上下文切換 4
1.1.6 中斷處理 5
1.1.7 進程狀態(tài) 5
1.1.8 進程的內(nèi)存段 6
1.1.9 Linux CPU調(diào)度程序 7
1.2 Linux內(nèi)存體系結(jié)構(gòu) 8
1.2.1 物理內(nèi)存和虛擬內(nèi)存 8
1.2.2 虛擬內(nèi)存管理 10
1.3 Linux文件系統(tǒng) 12
1.3.1 虛擬文件系統(tǒng) 12
1.3.2 文件系統(tǒng)日志 13
1.3.3 Ext2 13
1.3.4 Ext3 15
1.3.5 Ext4 15
1.3.6 XFS 18
1.3.7 Btrfs 19
1.3.8 JFS 20
1.3.9 ReiserFS 20
1.4 Linux 磁盤 I/O 子系統(tǒng) 20
1.4.1 I/O子系統(tǒng)的體系結(jié)構(gòu) 20
1.4.2 Cache 20
1.4.3 塊層 23
1.4.4 I/O 設(shè)備驅(qū)動程序 25
1.4.5 RAID與文件系統(tǒng) 26
1.5 Linux 網(wǎng)絡(luò)子系統(tǒng) 26
1.5.1 網(wǎng)絡(luò)化的實現(xiàn) 26
1.5.2 TCP/IP 30
1.5.3 Offload 32
1.5.4 Bonding模塊 32
1.6 了解Linux性能度量標(biāo)準(zhǔn) 32
1.6.1 處理器度量標(biāo)準(zhǔn) 32
1.6.2 內(nèi)存度量標(biāo)準(zhǔn) 33
1.6.3 塊設(shè)備度量標(biāo)準(zhǔn) 34
1.6.4 網(wǎng)絡(luò)接口度量標(biāo)準(zhǔn) 34
第2章 監(jiān)控工具 35
2.1 介紹 35
2.2 工具功能概述 35
2.3 監(jiān)控工具 36
2.3.1 top 36
2.3.2 uptime 38
2.3.3 ps、pstree 38
2.3.4 free 43
2.3.5 mpstat 44
2.3.6 vmstat 46
2.3.7 iostat 50
2.3.8 netstat、ss 53
2.3.9 sar 58
2.3.10 numastat 70
2.3.11 pmap 72
2.3.12 iptraf 73
2.3.13 tcpdump和wireshark 76
2.3.14 strace和ltrace 92
2.3.15 gnuplot 97
2.3.16 Gnome System Monitor 106
2.3.17 KDE System Guard 114
第3章 Benchmark工具 123
3.1 CPU2006 124
3.1.1 安裝與執(zhí)行 126
3.1.2 runspec命令 130
3.1.3 配置文件 139
3.2 STREAM 167
3.2.1 什么是STREAM 167
3.3 Bonnie++ 172
3.4 Netperf 177
3.4.1 Netperf介紹 177
3.4.2 Netperf設(shè)計 178
3.4.3 CPU使用率 179
3.4.4 全局命令行選項 181
3.4.5 使用Netperf測量"批量數(shù)據(jù)"傳輸 186
3.4.6 使用Netperf測量"請求/響應(yīng)" 192
3.4.7 使用netperf來測試整體性能 196
3.4.8 使用netperf測量雙向傳輸 201
3.4.9 omni測試 203
3.4.10 其它的nerperf測試 206
第4章分析性能瓶頸 208
4.1 識別系統(tǒng)瓶頸 208
4.1.1 收集信息 208
4.1.2 分析server性能 210
4.2 CPU瓶頸 210
4.2.1 查找CPU瓶頸 211
4.2.2 SMP 211
4.2.3 性能調(diào)整選項 211
4.3 內(nèi)存瓶頸 212
4.3.1 查找內(nèi)存瓶頸 212
4.3.2 性能調(diào)整選項 213
4.4 磁盤瓶頸 214
4.4.1 查找磁盤瓶頸 214
4.4.2 性能調(diào)整選項 216
4.5 網(wǎng)絡(luò)瓶頸 216
4.5.1 查找網(wǎng)絡(luò)瓶頸 216
4.5.2 性能調(diào)整選項 217
第5章調(diào)整操作系統(tǒng) 218
5.1 調(diào)整原則 218
5.1.1 變更管理 219
5.2 安裝注意事項 219
5.2.1 安裝 219
5.2.2 檢查當(dāng)前的配置 220
5.2.3 最小化資源使用 227
5.2.4 SELinux 231
5.2.5 編譯內(nèi)核 232
5.3 更改內(nèi)核參數(shù) 233
5.3.1 proc文件系統(tǒng) 233
5.3.2 存儲參數(shù)的位置 235
5.3.3 使用sysctl命令 235
5.4 調(diào)整處理器子系統(tǒng) 235
5.4.1 調(diào)整進程優(yōu)先級 236
5.4.2 CPU親和力 237
5.4.3 平衡中斷 240
5.4.4 NUMA系統(tǒng) 240
5.5 調(diào)整內(nèi)存子系統(tǒng) 243
5.5.1 內(nèi)存回收(設(shè)置內(nèi)核交換和刷新臟數(shù)據(jù)行為) 243
5.5.2 調(diào)整swap 245
5.5.3 HugeTLBfs 247
5.5.4 內(nèi)存同頁合并 250
5.6 調(diào)整磁盤子系統(tǒng) 252
5.6.1 安裝Linux前的硬件注意事項 252
5.6.2 I/O調(diào)度的調(diào)整和選擇 254
5.6.3 文件系統(tǒng)的選擇和調(diào)整 258
5.6.4 虛擬化存儲 261
5.7 調(diào)整網(wǎng)絡(luò)子系統(tǒng) 263
5.7.1 網(wǎng)卡綁定 263
5.7.2 巨幀 265
5.7.3 速度與雙工模式 266
5.7.4 添加網(wǎng)絡(luò)緩沖區(qū) 268
5.7.5 添加數(shù)據(jù)包隊列 270
5.7.6 添加傳輸隊列長度 270
5.7.7 配置offload 271
5.7.8 Netfilter 對性能的影響 272
5.7.9 流量特性的注意事項 275
5.7.10 額外的TCP/IP調(diào)整 276
5.8 限制資源使用 278?


虛擬化技術(shù)是大數(shù)據(jù)和云計算應(yīng)用中的核心技術(shù),經(jīng)過幾年的友展,KVM已經(jīng)很成熟和穩(wěn)定,逐漸代替Xen等商業(yè)虛擬化技術(shù)和產(chǎn)品,成為該領(lǐng)域其實的標(biāo)準(zhǔn)。由于採用KVM技術(shù)的業(yè)務(wù)規(guī)模都比較大。生產(chǎn)環(huán)境大多比較復(fù)雜,加上KVM整個技術(shù)生態(tài)中涉及的技術(shù)較多,使用起來有一定的門檻,企業(yè)的學(xué)習(xí)成本較高。
當(dāng)KVM技術(shù)在國內(nèi)鮮有人使用時。本書作者團隊就開始鉆研并在生產(chǎn)環(huán)境中使用,短短幾年內(nèi),就為公司節(jié)省了上億的運莒成本。幫助公司多個處于生命周期末的游戲項目實現(xiàn)扭虧為盈。本書中全部的知識和經(jīng)驗都來自國內(nèi)一線的互聯(lián)網(wǎng)公司的生產(chǎn)環(huán)境。比方金山西山居、盛大游戲等,最大的特點就是業(yè)務(wù)規(guī)模大、環(huán)境復(fù)雜,很具有代表性,極為珍貴。
本書從多個維度具體解說了KVM虛擬化原理、技術(shù)及性能調(diào)優(yōu)、軟硬件選型,生產(chǎn)環(huán)境虛擬化項目實施方法。開源管理平臺介紹及部署。虛擬化后端存儲方案。開源分布式文件系統(tǒng)GIusterFS、Ceph在虛擬化中的用法,虛擬化監(jiān)控、報警、應(yīng)急方案的制定,并附有大量生產(chǎn)環(huán)境案例。?

作譯者

肖力,資深運維專家。擁有15年運維經(jīng)驗,就職于金山西山居,擔(dān)任系統(tǒng)運維經(jīng)理,曾就職于盛大游戲,在運維圈有極大的影響力。國內(nèi)最頂尖的KVM專家之中的一個,從2009年開始研究KVM技術(shù)。是國內(nèi)較早在生產(chǎn)環(huán)境大規(guī)模實踐KVM的人之中的一個。積累了很豐富的經(jīng)驗。


熱衷于技術(shù)傳播,一直在無私地為運維領(lǐng)域的發(fā)展做貢獻,維護有微信訂閱號“KVM虛擬化實踐”。分享了大量KVM和運維領(lǐng)域的干貨內(nèi)容。同一時候還運營著多個運維相關(guān)的微信群。此外。他還是華章“運維前線”系列圖書的總策劃。無償?shù)卦诮M織大量愿意無私分享經(jīng)驗的運維project師們來參與寫作。
汪愛偉。資深運維專家。安居客資深系統(tǒng)project師,曾就職于阿里云、UCloud、盛大游戲等知名互聯(lián)網(wǎng)公司。對KVM技術(shù)有深入的研究。在虛擬化集群方面有豐富的生產(chǎn)環(huán)境經(jīng)驗。擅長KVM虛擬化項目的實施和運維。
楊俊俊,資深虛擬化技術(shù)專家和運維project師。就職于盛大,擔(dān)任盛大游戲公有云“G云”運維負責(zé)人和Intel聯(lián)合實驗室技術(shù)負責(zé)人。曾任職51。com,精通虛擬化項目的評估與實施,精通開源分布式文件系統(tǒng)在生產(chǎn)環(huán)境的運維與實踐。


趙德祿,資深運維project師和虛擬化project師。就職于攜程,擔(dān)任高級云平臺運維project師。曾就職于盛大游戲,擔(dān)任資深虛擬化project師。精通KVM、OpenStack、OpenvSwitch、桌面虛擬化等技術(shù),在生產(chǎn)環(huán)境下的實踐經(jīng)驗很豐富。

文件夾

本書贊譽
前  言?
第一篇 KVM技術(shù)具體解釋與實踐
第1章 企業(yè)虛擬化選型與KVM介紹 2
1.1 KVM的前世今生 2
1.2 KVM與經(jīng)常使用企業(yè)級虛擬化產(chǎn)品的PK 7
1.3 推斷企業(yè)是否適合使用KVM的標(biāo)準(zhǔn) 9
1.4 本章小結(jié) 10
第2章 開始自己的第一臺虛擬機 11
2.1 serverBIOS設(shè)置 11
2.2 宿主機CentOS 6.5、CentOS 7系統(tǒng)安裝與配置技巧 13
2.3 第一臺虛擬機安裝 15
2.4 本章小結(jié) 21
第3章 CPU、內(nèi)存虛擬化技術(shù)與應(yīng)用場景 22
3.1 NUMA技術(shù)與應(yīng)用 22
3.1.1 KVM虛擬機NUMA調(diào)優(yōu) 24
3.1.2 CPU綁定操作方法 27
3.2 CPU熱加入與應(yīng)用 32
3.3 CPU host-passthrough 技術(shù)與應(yīng)用 36
3.4 CPU Nested 技術(shù)與配置方法 38
3.5 KSM技術(shù)與應(yīng)用 39
3.6 內(nèi)存氣球技術(shù)具體解釋與應(yīng)用 40
3.7 內(nèi)存限制技術(shù)與應(yīng)用 43
3.8 巨型頁內(nèi)存技術(shù)與應(yīng)用 44
3.9 本章小結(jié) 47
第4章 網(wǎng)絡(luò)虛擬化技術(shù)與應(yīng)用場景 48
4.1 半虛擬化網(wǎng)卡技術(shù)具體解釋 48
4.1.1 半虛擬化網(wǎng)卡的配置 49
4.1.2 全虛擬化網(wǎng)卡、半虛擬化網(wǎng)卡性能比較 50
4.1.3 全虛擬化網(wǎng)卡、半虛擬化網(wǎng)卡的應(yīng)用場景 63
4.2 MacVTap和vhost-net技術(shù)原理與應(yīng)用 63
4.2.1 MacVTap技術(shù)與應(yīng)用 64
4.2.2 vhost_net技術(shù) 66
4.3 網(wǎng)卡的中斷與多隊列 66
4.4 網(wǎng)卡PCI Passthrough技術(shù) 71
4.5 SR-IVO虛擬化技術(shù) 72
4.6 虛擬化軟件交換機Open vSwitch的安裝與配置 75
4.6.1 Open vSwitch安裝 75
4.6.2 Open vSwitch典型配置 77
4.7 多網(wǎng)卡綁定與建橋 79
4.8 本章小結(jié) 82
第5章 KVM磁盤虛擬化技術(shù)與應(yīng)用場景 83
5.1 磁盤虛擬化方式性能比較與應(yīng)用場景 83
5.1.1 QEMU磁盤虛擬化方式概述 83
5.1.2 IDE與Virtio性能比較測試 84
5.2 Virtio磁盤緩存方式具體解釋、性能比較與應(yīng)用場景 85
5.2.1 磁盤緩存具體解釋 86
5.2.2 緩存方式的性能比較測試 87
5.2.3 緩存方式的應(yīng)用場景 89
5.3 磁盤鏡像格式 89
5.3.1 QEMU支持的磁盤鏡像格式 89
5.3.2 裸設(shè)備使用 96
5.3.3 KVM虛擬機鏡像管理利器guestfish 97
5.3.4 raw、qcow2、裸盤、lvm性能比較 106
5.3.5 磁盤鏡像格式的應(yīng)用場景 107
5.4 文件系統(tǒng)塊對齊 108
5.4.1 什么是塊對齊 108
5.4.2 塊對齊與塊不正確齊性能比較 109
5.4.3 生產(chǎn)環(huán)境怎樣配置塊對齊 110
5.5 SSD在KVM虛擬化中的使用實踐 111
5.5.1 SSD原理與寫放大 111
5.5.2 SSD在KVM中的使用 112
5.5.3 Flachcache配置與性能測試 117
5.5.4 DM-cache配置 120
5.5.5 LVM cache配置與性能測試 122
5.5.6 生產(chǎn)環(huán)境中SSD使用要點 123
5.6 本章小結(jié) 126
第6章 KVM虛擬機的資源限制 127
6.1 哪些場景要做虛擬機的資源限制 127
6.2 使用CGroups 130
6.3 KVM虛擬機CPU資源限制配置 142
6.4 KVM虛擬機網(wǎng)絡(luò)資源限制 144
6.5 KVM虛擬機磁盤資源限制 150
6.6 本章小結(jié) 151
第7章 物理機轉(zhuǎn)虛擬機實踐 152
7.1 哪些應(yīng)用場景適合做物理機轉(zhuǎn)虛擬機 152
7.2 P2V的技術(shù)實施方案 152
7.3 Windows系統(tǒng)物理機轉(zhuǎn)虛擬機的操作方法 153
7.3.1 WinPE的制作方法 153
7.3.2 Windows系統(tǒng)P2V操作方法 155
7.4 Linux物理server轉(zhuǎn)換虛擬機操作 155
7.5 使用virt-p2v工具進行P2V轉(zhuǎn)換 157
7.6 P2V經(jīng)驗總結(jié) 160
7.7 關(guān)于V2V 160
7.8 本章小結(jié) 160
第8章 KVM桌面虛擬化實踐 161
8.1 桌面虛擬化簡單介紹及Spice協(xié)議 161
8.2 桌面虛擬化實踐經(jīng)驗 162
8.3 本章小結(jié) 167
第二篇 分布式文件系統(tǒng)
第9章 幾種常見開源文件系統(tǒng)在KVM中的應(yīng)用 170
9.1 演示環(huán)境基礎(chǔ)配置 170
9.2 DRBD在KVM中的應(yīng)用 172
9.2.1 DRBD介紹 172
9.2.2 DRBD搭建方法及在KVM中的應(yīng)用 173
9.2.3 DRBD在KVM虛擬化中的優(yōu)化方案 183
9.3 GlusterFS在KVM虛擬化中的應(yīng)用 184
9.3.1 GlusterFS介紹 184
9.3.2 GlusterFS集群搭建與使用 189
9.3.3 GlusterFS在KVM虛擬化中的應(yīng)用 195
9.3.4 GlusterFS在KVM虛擬化中的優(yōu)化方案 198
9.4 Sheepdog在KVM中的應(yīng)用 199
9.4.1 Sheepdog介紹 199
9.4.2 Sheepdog搭建方法及在KVM中的應(yīng)用 201
9.5 MooseFS在KVM中的應(yīng)用 207
9.5.1 MooseFS介紹 208
9.5.2 MFS搭建方法及在KVM虛擬化中的應(yīng)用 208
9.6 本章小結(jié) 213
第10章 Ceph在KVM虛擬化中的應(yīng)用與故障處理 214
10.1 Ceph簡單介紹 214
10.2 Ceph部署方法及在KVM中的應(yīng)用 217
10.2.1 使用ceph-deploy工具部署Ceph 217
10.2.2 掛載CephFS 221
10.2.3 通過Librbd方式使用Ceph RBD 223
10.2.4 使用內(nèi)核方式掛載并使用Ceph RBD 226
10.3 CRUSH算法介紹及調(diào)優(yōu)方法 228
10.3.1 CRUSH算法介紹 228
10.3.2 CRUSH算法調(diào)優(yōu)方法 230
10.4 多角度評估Ceph在KVM虛擬化環(huán)境中的應(yīng)用 234
10.5 Ceph生產(chǎn)環(huán)境搭建案例 240
10.5.1 使用CephFS集中備份虛擬機 240
10.5.2 使用Librbd將虛擬機執(zhí)行在Ceph RBD 241
10.5.3 在CephFS上創(chuàng)建qcow2文件作為云硬盤 242
10.6 Ceph常見故障處理 242
10.6.1 Ceph集群監(jiān)控狀態(tài)檢查 243
10.6.2 Ceph常見錯誤提示的含義與處理方法 244
10.7 本章小結(jié) 245
第三篇 KVM虛擬化管理平臺
第11章 利用OpenStack管理KVM 248
11.1 OpenStack搭建 248
11.1.1 OpenStack簡單介紹 248
11.1.2 控制節(jié)點的安裝 249
11.1.3 計算節(jié)點的安裝 266
11.2 OpenStack有用技巧 269
11.2.1 RabbitMQ Cluster搭建 269
11.2.2 利用Haproxy和Keepalived實現(xiàn)控制節(jié)點高可用 271
11.2.3 冷遷移虛擬機的方法 277
11.3 本章小結(jié) 277
第12章 利用OpenNebula管理KVM 278
12.1 OpenNebula架構(gòu) 278
12.1.1 OpenNebula架構(gòu)介紹 278
12.1.2 OpenNebula組件介紹 279
12.2 在KVM中使用OpenNebula 280
12.2.1 在CentOS 6.5上高速搭建OpenNebula 280
12.2.2 使用OpenNebula創(chuàng)建第一臺KVM虛擬機 285
12.2.3 使虛擬機硬盤創(chuàng)建在宿主機本地硬盤上 288
12.3 OpenNebula常見故障處理 291
12.4 本章小結(jié) 293
第13章 其它管理平臺介紹 294
13.1 ConVirt管理平臺介紹 294
13.1.1 ConVirt的理念 294
13.1.2 ConVirt的架構(gòu) 295
13.2 CloudStack管理平臺介紹 295
13.3 oVirt管理平臺介紹 297
13.4 WebVirtMgr管理平臺介紹 299
13.5 怎樣選擇管理平臺 303
13.6 本章小結(jié) 304
第四篇 KVM虛擬化項目實施
第14章 業(yè)務(wù)性能評估與壓力模型建立 306
14.1 Linux 系統(tǒng)性能數(shù)據(jù)採集原則與方法 306
14.2 Linux 系統(tǒng)壓力模型建立 311
14.3 Windows系統(tǒng)性能數(shù)據(jù)採集原則與方法 314
14.4 Windows 系統(tǒng)壓力模型建立 317
14.5 本章小結(jié) 319
第15章 宿主機選型與基礎(chǔ)性能測試 320
15.1 宿主機CPU選型原則 320
15.2 宿主機內(nèi)存選型注意事項 322
15.3 宿主機硬盤選型 324
15.4 RAID卡選型 326
15.5 server網(wǎng)卡選型 327
15.6 宿主機性能基準(zhǔn)測試實踐 328
15.7 本章小結(jié) 345
第16章 虛擬機鏡像制作、配置與測試 346
16.1 Windows虛擬機制作方法 346
16.1.1 Windows鏡像制作 346
16.1.2 Windows虛擬機sysprep初始化封裝 361
16.2 Linux鏡像制作方法 362
16.2.1 RHEL/CentOS鏡像制作方法 362
16.2.2 Ubuntu、Debian虛擬機配置注意點 364
16.3 虛擬機自己主動配置IP的實現(xiàn)辦法 365
16.3.1 通過DHCP給虛擬機配置IP 365
16.3.2 通過Libvirt實現(xiàn)虛擬機自己主動配置IP 365
16.3.3 筆者生產(chǎn)環(huán)境虛擬機IP自己主動配置的方法 365
16.4 虛擬機鏡像測試 375
16.5 本章小結(jié) 375
第17章 單機虛擬化技術(shù)與生產(chǎn)環(huán)境實踐 376
17.1 單機虛擬化技術(shù)與應(yīng)用場景 376
17.1.1 單機虛擬化的優(yōu)勢和劣勢 377
17.1.2 單機虛擬化技術(shù) 378
17.1.3 單機虛擬化應(yīng)用場景 380
17.2 單機虛擬化生產(chǎn)環(huán)境注意點 381
17.2.1 單機虛擬化災(zāi)備與應(yīng)急方案 381
17.2.2 單機虛擬化生產(chǎn)環(huán)境部署實踐 382
17.3 本章小結(jié) 385
第18章 KVM虛擬化集群技術(shù)與應(yīng)用場景 386
18.1 虛擬化集群設(shè)計思路與架構(gòu) 386
18.2 虛擬化集群的實施流程與技術(shù)方案 389
18.3 虛擬化集群搭建 392
18.3.1 計算節(jié)點配置與管理 392
18.3.2 網(wǎng)絡(luò)設(shè)計與配置 403
18.3.3 虛擬機遷移管理 404
18.3.4 虛擬化集群的備份與恢復(fù) 407
18.4 Dell EqualLogic存儲的管理實踐經(jīng)驗 414
18.5 本章小結(jié) 419
第19章 業(yè)務(wù)遷移到虛擬化環(huán)境流程 420
19.1 性能評估與測試環(huán)境測試 420
19.2 上線前的檢查工作 428
19.3 小規(guī)模部署及逐步切換到虛擬化環(huán)境 429
19.4 本章小結(jié) 430
第20章 宿主機自己主動化運維管理 431
20.1 Puppet簡單介紹與安裝部署 431
20.2 利用Puppet管理宿主機的運維架構(gòu)設(shè)計 436
20.3 利用Puppet配置宿主機初始化操作 441
20.4 利用Puppet管理宿主機配置與更新 442
20.5 利用Puppet推送宿主機的非一致性配置 445
20.6 本章小結(jié) 449
第21章 虛擬化監(jiān)控、報警與應(yīng)急響應(yīng)方案 450
21.1 虛擬化監(jiān)控內(nèi)容 450
21.1.1 宿主機CPU監(jiān)控要點 450
21.1.2 宿主機內(nèi)存監(jiān)控注意點 455
21.1.3 宿主機網(wǎng)絡(luò)監(jiān)控注意點 458
21.1.4 宿主機磁盤監(jiān)控注意點 460
21.1.5 宿主機層面監(jiān)控虛擬機的方法 461
21.2 監(jiān)控軟件Cacti、Zabbix 463
21.2.1 用Cacti監(jiān)控宿主機 464
21.2.2 用Zabbix監(jiān)控宿主機 471
21.3 應(yīng)急方案 487
21.3.1 應(yīng)急方案制定注意要點 487
21.3.2 單機虛擬化應(yīng)急方案 491
21.3.3 集群虛擬化應(yīng)急方案 495
21.4 本章小結(jié) 497
第五篇 KVM虛擬化典型案例
第22章 生產(chǎn)環(huán)境問題案例與分析 500
22.1 游戲在虛擬機上很慢的案例 500
22.2 虛擬機流量過高引起網(wǎng)絡(luò)風(fēng)暴的案例一 502
22.3 虛擬機流量過高引起網(wǎng)絡(luò)風(fēng)暴的案例二 517
22.4 其它生產(chǎn)環(huán)境問題案例 520
22.4.1 共享存儲集群虛擬機遷移故障案例 520
22.4.2 宿主機異常關(guān)機后虛擬機無法啟動案例 522
22.4.3 宿主機使用CentOS 5.6系統(tǒng)問題案例 523
22.4.4 Windows虛擬機網(wǎng)絡(luò)閃斷、不通問題案例 523
22.4.5 Windows 7虛擬機僅僅能使用2個CPU案例 524
22.4.6 生產(chǎn)環(huán)境很奇怪的一個案例 524
22.4.7 U盤在虛擬機上掛載問題案例 526
22.4.8 HP ILO4固件Bug引起宿主機重新啟動案例 528
22.4.9 一次機房斷電引起的問題案例 529
22.4.10 CPU綁定問題案例 531
22.4.11 生產(chǎn)環(huán)境存儲故障導(dǎo)致50個虛擬機丟失案例 532
22.4.12 生產(chǎn)環(huán)境Ubuntu虛擬機故障問題案例 533
22.5 本章小結(jié) 538
附錄 筆者推薦的KVM學(xué)習(xí)資料 539?

對于嵌入式project師來說。進入更高階段后,學(xué)習(xí)Linux設(shè)備驅(qū)動開發(fā)無疑就是職業(yè)生涯的一次“重生”。這是由于Linux設(shè)備驅(qū)動開發(fā)不只涉及操作系統(tǒng)的轉(zhuǎn)換。開發(fā)方式的轉(zhuǎn)換,更重要的是思維上的轉(zhuǎn)變。對于Linux這樣一個復(fù)雜系統(tǒng)。怎樣從復(fù)雜的代碼中抓住設(shè)備驅(qū)動開發(fā)的關(guān)鍵是不論什么一個Linux設(shè)備驅(qū)動開發(fā)人員入門時須要面對的挑戰(zhàn)。除了知識、工具之外,往往還須要思路上的指導(dǎo)。本書不但幫助Linux設(shè)備驅(qū)動開發(fā)的剛開始學(xué)習(xí)的人厘清必要的概念,還從詳細的實例、設(shè)備驅(qū)動開發(fā)的指導(dǎo)原則循序漸進地引導(dǎo)讀者漸入學(xué)習(xí)佳境。

為了讓讀者可以達到Linux設(shè)備驅(qū)動開發(fā)的至臻境地,作者更是從軟件project的角度抽象出設(shè)備驅(qū)動開發(fā)的一般思想。毫無疑問,本書將成為讀者學(xué)習(xí)Linux設(shè)備驅(qū)動開發(fā)過程中的一座“燈塔”。

?

作譯者

宋寶華?
Linux布道者,知名嵌入式系統(tǒng)專家,《Essential Linux Device Drivers》譯者。作為最早從事Linux內(nèi)核與設(shè)備驅(qū)動研究的專家之中的一個,他在眾多國內(nèi)外知名企業(yè)開展Linux技術(shù)培訓(xùn)。他也是一位活躍的Linux開發(fā)人員和深度實踐者,為Linux官方內(nèi)核貢獻了大量的Linux源代碼并承擔(dān)代碼審核工作。至今已向Linux官方內(nèi)核提交逾數(shù)萬行代碼和幾百個補丁。

他的《Linux設(shè)備驅(qū)動開發(fā)具體解釋》系列書在嵌入式Linux開發(fā)人員中有口皆碑,是眾多Linux書籍中為數(shù)不多的暢銷書。

?

文件夾

贊譽?
推薦序一?
推薦序二?
前言?
第1章 Linux設(shè)備驅(qū)動概述及開發(fā)環(huán)境構(gòu)建 1
1.1 設(shè)備驅(qū)動的作用 1
1.2 無操作系統(tǒng)時的設(shè)備驅(qū)動 2
1.3 有操作系統(tǒng)時的設(shè)備驅(qū)動 4
1.4 Linux設(shè)備驅(qū)動 5
1.4.1 設(shè)備的分類及特點 5
1.4.2 Linux設(shè)備驅(qū)動與整個軟硬件系統(tǒng)的關(guān)系 6
1.4.3 Linux設(shè)備驅(qū)動的重點、難點 7
1.5 Linux設(shè)備驅(qū)動的開發(fā)環(huán)境構(gòu)建 8
1.5.1 PC上的Linux環(huán)境 8
1.5.2 QEMU實驗平臺 11
1.5.3 源碼閱讀和編輯 13
1.6 設(shè)備驅(qū)動Hello World:LED驅(qū)動 15
1.6.1 無操作系統(tǒng)時的LED驅(qū)動 15
1.6.2 Linux下的LED驅(qū)動 15
第2章 驅(qū)動設(shè)計的硬件基礎(chǔ) 20
2.1 處理器 20
2.1.1 通用處理器 20
2.1.2 數(shù)字信號處理器 22
2.2 存儲器 24
2.3 接口與總線 28
2.3.1 串口 28
2.3.2 I2C 29
2.3.3 SPI 30
2.3.4 USB 31
2.3.5 以太網(wǎng)接口 33
2.3.6 PCI和PCI-E 34
2.3.7 SD和SDIO 36
2.4 CPLD和FPGA 37
2.5 原理圖分析 40
2.6 硬件時序分析 42
2.6.1 時序分析的概念 42
2.6.2 典型的硬件時序 43
2.7 芯片數(shù)據(jù)手冊閱讀方法 44
2.8 儀器儀表使用 47
2.8.1 萬用表 47
2.8.2 示波器 47
2.8.3 邏輯分析儀 49
2.9 總結(jié) 51
第3章 Linux內(nèi)核及內(nèi)核編程 52
3.1 Linux內(nèi)核的發(fā)展與演變 52
3.2 Linux 2.6后的內(nèi)核特點 56
3.3 Linux內(nèi)核的組成 59
3.3.1 Linux內(nèi)核源碼的文件夾結(jié)構(gòu) 59
3.3.2 Linux內(nèi)核的組成部分 60
3.3.3 Linux內(nèi)核空間與用戶空間 64
3.4 Linux內(nèi)核的編譯及載入 64
3.4.1 Linux內(nèi)核的編譯 64
3.4.2 Kconfig和Makefile 66
3.4.3 Linux內(nèi)核的引導(dǎo) 74
3.5 Linux下的C編程特點 75
3.5.1 Linux編碼風(fēng)格 75
3.5.2 GNU C與ANSI C 78
3.5.3 do { } while(0) 語句 83
3.5.4 goto語句 85
3.6 工具鏈 85
3.7 實驗室建設(shè) 88
3.8 串口工具 89
3.9 總結(jié) 91
第4章 Linux內(nèi)核模塊 92
4.1 Linux內(nèi)核模塊簡單介紹 92
4.2 Linux內(nèi)核模塊程序結(jié)構(gòu) 95
4.3 模塊載入函數(shù) 95
4.4 模塊卸載函數(shù) 97
4.5 模塊參數(shù) 97
4.6 導(dǎo)出符號 99
4.7 模塊聲明與描寫敘述 100
4.8 模塊的使用計數(shù) 100
4.9 模塊的編譯 101
4.10 使用模塊“繞開”GPL 102
4.11 總結(jié) 103
第5章 Linux文件系統(tǒng)與設(shè)備文件 104
5.1 Linux文件操作 104
5.1.1 文件操作系統(tǒng)調(diào)用 104
5.1.2 C庫文件操作 108
5.2 Linux文件系統(tǒng) 109
5.2.1 Linux文件系統(tǒng)文件夾結(jié)構(gòu) 109
5.2.2 Linux文件系統(tǒng)與設(shè)備驅(qū)動 110
5.3 devfs 114
5.4 udev用戶空間設(shè)備管理 116
5.4.1 udev與devfs的差別 116
5.4.2 sysfs文件系統(tǒng)與Linux設(shè)備模型 119
5.4.3 udev的組成 128
5.4.4 udev規(guī)則文件 129
5.5 總結(jié) 133
第6章 字符設(shè)備驅(qū)動 134
6.1 Linux字符設(shè)備驅(qū)動結(jié)構(gòu) 134
6.1.1 cdev結(jié)構(gòu)體 134
6.1.2 分配和釋放設(shè)備號 136
6.1.3 file_operations結(jié)構(gòu)體 136
6.1.4 Linux字符設(shè)備驅(qū)動的組成 138
6.2 globalmem虛擬設(shè)備實例描寫敘述 142
6.3 globalmem設(shè)備驅(qū)動 142
6.3.1 頭文件、宏及設(shè)備結(jié)構(gòu)體 142
6.3.2 載入與卸載設(shè)備驅(qū)動 143
6.3.3 讀寫函數(shù) 144
6.3.4 seek函數(shù) 146
6.3.5 ioctl函數(shù) 146
6.3.6 使用文件私有數(shù)據(jù) 148
6.4 globalmem驅(qū)動在用戶空間中的驗證 156
6.5 總結(jié) 157
第7章 Linux設(shè)備驅(qū)動中的并發(fā)控制 158
7.1 并發(fā)與競態(tài) 158
7.2 編譯亂序和運行亂序 160
7.3 中斷屏蔽 165
7.4 原子操作 166
7.4.1 整型原子操作 167
7.4.2 位原子操作 168
7.5 自旋鎖 169
7.5.1 自旋鎖的使用 169
7.5.2 讀寫自旋鎖 173
7.5.3 順序鎖 174
7.5.4 讀-復(fù)制-更新 176
7.6 信號量 181
7.7 相互排斥體 183
7.8 完畢量 184
7.9 添加并發(fā)控制后的globalmem的設(shè)備驅(qū)動 185
7.10 總結(jié) 188
第8章 Linux設(shè)備驅(qū)動中的堵塞與非堵塞I/O 189
8.1 堵塞與非堵塞I/O 189
8.1.1 等待隊列 191
8.1.2 支持堵塞操作的globalfifo設(shè)備驅(qū)動 194
8.1.3 在用戶空間驗證globalfifo的讀寫 198
8.2 輪詢操作 198
8.2.1 輪詢的概念與作用 198
8.2.2 應(yīng)用程序中的輪詢編程 199
8.2.3 設(shè)備驅(qū)動中的輪詢編程 201
8.3 支持輪詢操作的globalfifo驅(qū)動 202
8.3.1 在globalfifo驅(qū)動中添加輪詢操作 202
8.3.2 在用戶空間中驗證globalfifo設(shè)備的輪詢 203
8.4 總結(jié) 205
第9章 Linux設(shè)備驅(qū)動中的異步通知與異步I/O 206
9.1 異步通知的概念與作用 206
9.2 Linux異步通知編程 207
9.2.1 Linux信號 207
9.2.2 信號的接收 208
9.2.3 信號的釋放 210
9.3 支持異步通知的globalfifo驅(qū)動 212
9.3.1 在globalfifo驅(qū)動中添加異步通知 212
9.3.2 在用戶空間中驗證globalfifo的異步通知 214
9.4 Linux異步I/O 215
9.4.1 AIO概念與GNU C庫AIO 215
9.4.2 Linux內(nèi)核AIO與libaio 219
9.4.3 AIO與設(shè)備驅(qū)動 222
9.5 總結(jié) 223
第10章 中斷與時鐘 224
10.1 中斷與定時器 224
10.2 Linux中斷處理程序架構(gòu) 227
10.3 Linux中斷編程 228
10.3.1 申請和釋放中斷 228
10.3.2 使能和屏蔽中斷 230
10.3.3 底半部機制 230
10.3.4 實例:GPIO按鍵的中斷 235
10.4 中斷共享 237
10.5 內(nèi)核定時器 238
10.5.1 內(nèi)核定時器編程 238
10.5.2 內(nèi)核中延遲的工作delayed_work 242
10.5.3 實例:秒字符設(shè)備 243
10.6 內(nèi)核延時 247
10.6.1 短延遲 247
10.6.2 長延遲 248
10.6.3 睡著延遲 248
10.7 總結(jié) 250
第11章 內(nèi)存與I/O訪問 251
11.1 CPU與內(nèi)存、I/O 251
11.1.1 內(nèi)存空間與I/O空間 251
11.1.2 內(nèi)存管理單元 252
11.2 Linux內(nèi)存管理 256
11.3 內(nèi)存存取 261
11.3.1 用戶空間內(nèi)存動態(tài)申請 261
11.3.2 內(nèi)核空間內(nèi)存動態(tài)申請 262
11.4 設(shè)備I/Oport和I/O內(nèi)存的訪問 267
11.4.1 Linux I/Oport和I/O內(nèi)存訪問接口 267
11.4.2 申請與釋放設(shè)備的I/Oport和I/O內(nèi)存 268
11.4.3 設(shè)備I/Oport和I/O內(nèi)存訪問流程 269
11.4.4 將設(shè)備地址映射到用戶空間 270
11.5 I/O內(nèi)存靜態(tài)映射 276
11.6 DMA 277
11.6.1 DMA與Cache一致性 278
11.6.2 Linux下的DMA編程 279
11.7 總結(jié) 285
第12章 Linux設(shè)備驅(qū)動的軟件架構(gòu)思想 286
12.1 Linux驅(qū)動的軟件架構(gòu) 286
12.2 platform設(shè)備驅(qū)動 290
12.2.1 platform總線、設(shè)備與驅(qū)動 290
12.2.2 將globalfifo作為platform設(shè)備 293
12.2.3 platform設(shè)備資源和數(shù)據(jù) 295
12.3 設(shè)備驅(qū)動的分層思想 299
12.3.1 設(shè)備驅(qū)動核心層和例化 299
12.3.2 輸入設(shè)備驅(qū)動 301
12.3.3 RTC設(shè)備驅(qū)動 306
12.3.4 Framebuffer設(shè)備驅(qū)動 309
12.3.5 終端設(shè)備驅(qū)動 311
12.3.6 misc設(shè)備驅(qū)動 316
12.3.7 驅(qū)動核心層 321
12.4 主機驅(qū)動與外設(shè)驅(qū)動分離的設(shè)計思想 321
12.4.1 主機驅(qū)動與外設(shè)驅(qū)動分離 321
12.4.2 Linux SPI主機和設(shè)備驅(qū)動 322
12.5 總結(jié) 330
第13章 Linux塊設(shè)備驅(qū)動 331
13.1 塊設(shè)備的I/O操作特點 331
13.2 Linux塊設(shè)備驅(qū)動結(jié)構(gòu) 332
13.2.1 block_device_operations結(jié)構(gòu)體 332
13.2.2 gendisk結(jié)構(gòu)體 334
13.2.3 bio、request和request_queue 335
13.2.4 I/O調(diào)度器 339
13.3 Linux塊設(shè)備驅(qū)動的初始化 340
13.4 塊設(shè)備的打開與釋放 342
13.5 塊設(shè)備驅(qū)動的ioctl函數(shù) 342
13.6 塊設(shè)備驅(qū)動的I/O請求處理 343
13.6.1 使用請求隊列 343
13.6.2 不使用請求隊列 347
13.7 實例:vmem_disk驅(qū)動 349
13.7.1 vmem_disk的硬件原理 349
13.7.2 vmem_disk驅(qū)動模塊的載入與卸載 349
13.7.3 vmem_disk設(shè)備驅(qū)動的block_device_operations 351
13.7.4 vmem_disk的I/O請求處理 352
13.8 Linux MMC子系統(tǒng) 354
13.9 總結(jié) 357
第14章 Linux網(wǎng)絡(luò)設(shè)備驅(qū)動 358
14.1 Linux網(wǎng)絡(luò)設(shè)備驅(qū)動的結(jié)構(gòu) 358
14.1.1 網(wǎng)絡(luò)協(xié)議接口層 359
14.1.2 網(wǎng)絡(luò)設(shè)備接口層 363
14.1.3 設(shè)備驅(qū)動功能層 367
14.2 網(wǎng)絡(luò)設(shè)備驅(qū)動的注冊與注銷 367
14.3 網(wǎng)絡(luò)設(shè)備的初始化 369
14.4 網(wǎng)絡(luò)設(shè)備的打開與釋放 370
14.5 數(shù)據(jù)發(fā)送流程 371
14.6 數(shù)據(jù)接收流程 372
14.7 網(wǎng)絡(luò)連接狀態(tài) 375
14.8 參數(shù)設(shè)置和統(tǒng)計數(shù)據(jù) 377
14.9 DM9000網(wǎng)卡設(shè)備驅(qū)動實例 380
14.9.1 DM9000網(wǎng)卡硬件描寫敘述 380
14.9.2 DM9000網(wǎng)卡驅(qū)動設(shè)計分析 380
14.10 總結(jié) 386
第15章 Linux I2C核心、總線與設(shè)備驅(qū)動 387
15.1 Linux I2C體系結(jié)構(gòu) 387
15.2 Linux I2C核心 394
15.3 Linux I2C適配器驅(qū)動 396
15.3.1 I2C適配器驅(qū)動的注冊與注銷 396
15.3.2 I2C總線的通信方法 397
15.4 Linux I2C設(shè)備驅(qū)動 399
15.4.1 Linux I2C設(shè)備驅(qū)動的模塊載入與卸載 400
15.4.2 Linux I2C設(shè)備驅(qū)動的傳輸數(shù)據(jù) 400
15.4.3 Linux的i2c-dev.c文件分析 400
15.5 Tegra I2C總線驅(qū)動實例 405
15.6 AT24xx EEPROM的I2C設(shè)備驅(qū)動實例 410
15.7 總結(jié) 413
第16章 USB主機、設(shè)備與Gadget驅(qū)動 414
16.1 Linux USB驅(qū)動層次 414
16.1.1 主機側(cè)與設(shè)備側(cè)USB驅(qū)動 414
16.1.2 設(shè)備、配置、接口、端點 415
16.2 USB主機控制器驅(qū)動 420
16.2.1 USB主機控制器驅(qū)動的總體結(jié)構(gòu) 420
16.2.2 實例:Chipidea USB主機驅(qū)動 425
16.3 USB設(shè)備驅(qū)動 425
16.3.1 USB設(shè)備驅(qū)動的總體結(jié)構(gòu) 425
16.3.2 USB請求塊 430
16.3.3 探測和斷開函數(shù) 435
16.3.4 USB骨架程序 436
16.3.5 實例:USB鍵盤驅(qū)動 443
16.4 USB UDC與Gadget驅(qū)動 446
16.4.1 UDC和Gadget驅(qū)動的重要數(shù)據(jù)結(jié)構(gòu)與API 446
16.4.2 實例:Chipidea USB UDC驅(qū)動 451
16.4.3 實例:Loopback Function驅(qū)動 453
16.5 USB OTG驅(qū)動 456
16.6 總結(jié) 458
第17章 I2C、SPI、USB驅(qū)動架構(gòu)類比 459
17.1 I2C、SPI、USB驅(qū)動架構(gòu) 459
17.2 I2C主機和外設(shè)眼里的Linux世界 460
第18章 ARM Linux設(shè)備樹 461
18.1 ARM設(shè)備樹起源 461
18.2 設(shè)備樹的組成和結(jié)構(gòu) 462
18.2.1 DTS、DTC和DTB等 462
18.2.2 根節(jié)點兼容性 468
18.2.3 設(shè)備節(jié)點兼容性 470
18.2.4 設(shè)備節(jié)點及l(fā)abel的命名 475
18.2.5 地址編碼 477
18.2.6 中斷連接 479
18.2.7 GPIO、時鐘、pinmux連接 480
18.3 由設(shè)備樹引發(fā)的BSP和驅(qū)動變更 484
18.4 經(jīng)常使用的OF API 490
18.5 總結(jié) 493
第19章 Linux電源管理的系統(tǒng)架構(gòu)和驅(qū)動 494
19.1 Linux電源管理的全局架構(gòu) 494
19.2 CPUFreq驅(qū)動 495
19.2.1 SoC的CPUFreq驅(qū)動實現(xiàn) 495
19.2.2 CPUFreq的策略 501
19.2.3 CPUFreq的性能測試和調(diào)優(yōu) 501
19.2.4 CPUFreq通知 502
19.3 CPUIdle驅(qū)動 504
19.4 PowerTop 508
19.5 Regulator驅(qū)動 508
19.6 OPP 511
19.7 PM QoS 515
19.8 CPU熱插拔 518
19.9 掛起到RAM 522
19.10 執(zhí)行時的PM 528
19.11 總結(jié) 534
第20章 Linux芯片級移植及底層驅(qū)動 535
20.1 ARM Linux底層驅(qū)動的組成和現(xiàn)狀 535
20.2 內(nèi)核節(jié)拍驅(qū)動 536
20.3 中斷控制器驅(qū)動 541
20.4 SMP多核啟動以及CPU熱插拔驅(qū)動 549
20.5 DEBUG_LL和EARLY_PRINTK的設(shè)置 556
20.6 GPIO驅(qū)動 557
20.7 pinctrl驅(qū)動 560
20.8 時鐘驅(qū)動 572
20.9 dmaengine驅(qū)動 578
20.10 總結(jié) 580
第21章 Linux設(shè)備驅(qū)動的調(diào)試 581
21.1 GDB調(diào)試器的使用方法 581
21.1.1 GDB的基本使用方法 581
21.1.2 DDD圖形界面調(diào)試工具 591
21.2 Linux內(nèi)核調(diào)試 594
21.3 內(nèi)核信息打印——printk() 596
21.4 DEBUG_LL和EARLY_PRINTK 599
21.5 使用“/proc” 600
21.6 Oops 606
21.7 BUG_ON()和WARN_ON() 608
21.8 strace 609
21.9 KGDB 610
21.10 使用仿真器調(diào)試內(nèi)核 612
21.11 應(yīng)用程序調(diào)試 613
21.12 Linux性能監(jiān)控與調(diào)優(yōu)工具 616
21.13 總結(jié) 618?



轉(zhuǎn)載于:https://www.cnblogs.com/jzdwajue/p/7243526.html

總結(jié)

以上是生活随笔為你收集整理的linux多线程编程书籍推荐:linux大牛之路从这几本书開始总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩五码| 91在线免费视频观看 | 91精品啪在线观看国产线免费 | 亚洲成av人片 | 一区二区三区免费在线观看视频 | 五月婷婷免费视频 | 精品一区二区三区免费 | 视频在线观看91 | 国产免费一级视频 | 日韩精选在线观看 | www.av在线.com| 成年网站免费在线观看 | 欧美一级一级 | 久久人人精 | 午夜欧美福利 | 人妻精品一区二区三区 | 久草免费在线观看视频 | 国产欧美精品区一区二区三区 | 国产精品二区一区二区aⅴ污介绍 | 极品人妻一区二区三区 | 日本亲近相奷中文字幕 | 98超碰在线 | 国产一区亚洲二区三区 | 五月99久久婷婷国产综合亚洲 | 亚洲国产精品久久久久久久 | 亚洲色图欧美视频 | 99久久精品国产色欲 | 免费人妻一区二区三区 | 日韩欧美日本 | 牛牛精品一区 | 热99这里只有精品 | 日本大尺度激情做爰hd | 色在线免费 | 在线成人观看 | 黑人玩弄人妻一区二区三区免费看 | 亚洲成人精品网 | 岛国久久久 | 国产又粗又长又大视频 | 天天操天天操天天干 | 在线观看国产成人 | 日韩一区在线看 | 18无套直看片红桃 | 激情福利| 95精品视频 | 网站久久久 | av在线大全 | 六月天综合网 | 国产香蕉视频在线观看 | 亚洲最大黄色网址 | 狠狠成人| 91网在线播放 | 久久久无码18禁高潮喷水 | 国产又粗又猛又黄又爽无遮挡 | 在线观看三级网站 | 久久精品69| 999福利视频 | 五月婷婷中文 | 日韩女人性猛交 | 国产三级精品在线 | 九九热在线观看 | 日本a级一区 | 亚色综合| 91秘密入口 | www.av88| 久久riav| 成年人福利网站 | 污污网站在线播放 | 国产一卡二 | 在线视频www| 国产精品亚洲αv天堂无码 伊人性视频 | 91中文| 视频网站在线观看18 | 免费看黄禁片 | 丝袜黄色片| 朝桐光一区二区三区 | 免费麻豆av | 久久九九久久九九 | 色老头免费视频 | 一区二区三区四区亚洲 | 日本网站在线免费观看 | 欧美日韩精品区别 | 亚洲狼人av | 欧美视频一二三区 | 亚洲一卡二卡三卡 | 亚洲福利网 | 色呦呦一区二区三区 | www.com在线观看 | 国产一区二区影院 | 精品黑人一区二区三区 | www av | 国产碰碰 | 6080电视影片在线观看 | 囯产精品一品二区三区 | 黑人与亚洲人色ⅹvideos | 一级片欧美| 色哟哟日韩精品 | 女性裸体下面张开 | 欧美高清一区二区 | 最新免费av|