C++多核高級編程是一本c++高級編程教材,由美國軟件開發(fā)程序員休斯編著。本書使用了一般軟件開發(fā)人員能夠理解的術語介紹多核編程的基本知識,為讀者介紹了為多處理器和多線程體系結構進行編程的基礎知識,對并行處理和軟件并發(fā)的概念進行了實用的介紹。同時書中還包含了調試及測試多核編程的方法與技術,并且在全書最后作者還示范了如何使用跨平臺技術來利用處理器的具體特性,非常適合c++愛好者和c++程序員們下載閱讀。
內容介紹
為了提高系統(tǒng)總體性能,計算機廠商已經選擇增加更多的處理器,而不是提高時鐘頻率。相應地,如果您希望應用程序能夠通過使用下一代處理器提高性能,就必須為了利用多處理器計算機而對應用程序進行改寫。這本非常實用的書教讀者如何從順序編程技術轉移到并行和多線程編程技術,同時介紹了為多處理器和多線程架構編程的所有必備知識。
《C++多核高級編程》的兩位作者具有豐富的經驗,雖然是并行處理和軟件并發(fā)這些復雜的主題,但是采用了清晰、易于理解的方式來講述它們。通過他們進行多處理和多線程模型編程的實際方法,借助大量有用的實例,演示如何成功地完成多核編程,從而使讀者能夠充分利用新一代多核處理器的能力。
《C++多核高級編程》主要內容
1、并發(fā)編程和同步帶來的各種缺陷、陷阱和挑戰(zhàn)
2、調試和測試多核編程的方法與技術
3、如何使川跨下臺技術米利用處理器的特定特性
4、操作系統(tǒng)在多核編程中的任務
5、將框架類作為并發(fā)構建塊加以利用的方法
6、如何通過使用接口類宋降低任務同步和通信的復雜性
C++多核高級編程章節(jié)目錄
第1章 新的體系結構 1 1.1 什么是多核 1 1.2 多核體系結構 2 1.3 軟件開發(fā)人員眼中的多核體系結構 3 1.3.1 基本的處理器體系結構 4 1.3.2 CPU(指令集) 6 1.3.3 內存是關鍵 8 1.3.4 寄存器 10 1.3.5 cache 11 1.3.6 主存 12 1.4 總線連接 13 1.5 從單核到多核 13 1.5.1 多道程序設計和多處理 14 1.5.2 并行編程 14 1.5.3 多核應用程序的設計與實現 15 1.6 小結 15 第2章 4種有影響的多核設計 17 2.1 AMD Multicore Opteron 19 2.1.1 Opteron的直連和HyperTransport 19 2.1.2 系統(tǒng)請求接口和交叉開關 20 2.1.3 Opteron使用NUMA結構 21 2.1.4 cache以及多處理器Opteron 22 2.2 Sun UltraSparc T1 多處理器 22 2.2.1 UltraSparc T1內核 24 2.2.2 Cross Talk與Crossbar 25 2.2.3 DDRAM控制器和L2 cache 25 2.2.4 UltraSparc T1、Sun和GNU gcc編譯器 25 2.3 IBM Cell Broadband Engine 25 2.3.1 CBE與Linux 26 2.3.2 CBE內存模型 27 2.3.3 對操作系統(tǒng)隱藏 27 2.3.4 協(xié)處理器部件 28 2.4 Intel Core 2 Duo處理器 28 2.4.1 北橋和南橋 29 2.4.2 Intel的PCI Express 29 2.4.3 Core 2 Duo的指令集 29 2.5 小結 30 第3章 多核編程的挑戰(zhàn) 33 3.1 什么是順序模型 33 3.2 什么是并發(fā) 34 3.3 軟件開發(fā) 35 3.3.1 挑戰(zhàn)1:軟件分解 38 3.3.2 挑戰(zhàn)2:任務間通信 43 3.3.3 挑戰(zhàn)3:多個任務或agent對數據或資源的并發(fā)訪問 47 3.3.4 挑戰(zhàn)4:識別并發(fā)執(zhí)行的任務之間的關系 51 3.3.5 挑戰(zhàn)5:控制任務之間的資源爭奪 53 3.3.6 挑戰(zhàn)6:需要多少個進程或線程 53 3.3.7 挑戰(zhàn)7和挑戰(zhàn)8:尋找可靠的、可重現的調試和測試 54 3.3.8 挑戰(zhàn)9:與擁有多進程組件的設計的相關人員進行溝通 55 3.3.9 挑戰(zhàn)10:在C++中實現多處理和多線程 56 3.4 C++開發(fā)人員必須學習新的庫 56 3.5 處理器架構的挑戰(zhàn) 57 3.6 小結 57 第4章 操作系統(tǒng)的任務 59 4.1 操作系統(tǒng)扮演什么角色 59 4.1.1 提供一致的接口 59 4.1.2 管理硬件資源和其他應用軟件 60 4.1.3 開發(fā)人員與操作系統(tǒng)的交互 60 4.1.4 操作系統(tǒng)的核心服務 63 4.1.5 應用程序員的接口 66 程序概要4-1 70 程序概要4-2 74 4.2 分解以及操作系統(tǒng)的任務 75 4.3 隱藏操作系統(tǒng)的任務 77 4.3.1 利用C++抽象和封裝的能力 77 4.3.2 POSIX API的接口類 78 4.4 小結 85 第5章 進程、C++接口類和謂詞 87 5.1 多核是指多處理器 87 5.2 什么是進程 88 5.3 為什么是進程而不是線程 88 5.4 使用posix_spawn( ) 90 5.4.1 file_actions參數 91 5.4.2 attrp參數 92 5.4.3 簡單的posix_spawn( )示例 94 5.4.4 使用posix_spawn的guess_it 95 5.5 哪個是父進程,哪個是子進程 99 5.6 對進程的詳細討論 99 5.6.1 進程控制塊 100 5.6.2 進程的剖析 101 5.6.3 進程狀態(tài) 103 5.6.4 進程是如何被調度的 105 5.7 使用ps實用工具監(jiān)視進程 107 5.8 設置和獲得進程優(yōu)先級 110 5.9 什么是上下文切換 112 5.10 進程創(chuàng)建中的活動 112 5.10.1 使用fork( )函數調用 113 5.10.2 使用exec( )系統(tǒng)調用系列 113 5.11 進程環(huán)境變量的使用 116 5.12 使用system( )生成新的進程 117 5.13 刪除進程 118 5.13.1 調用exit( )和abort( ) 118 5.13.2 kill( )函數 119 5.14 進程資源 119 5.14.1 資源的類型 120 5.14.2 設置資源限制的POSIX函數 121 5.15 異步進程和同步進程 124 5.16 wait( )函數調用 125 5.17 謂詞、進程和接口類 127 5.18 小結 131 第6章 多線程 133 6.1 什么是線程 133 6.1.1 用戶級線程和內核級線程 134 6.1.2 線程上下文 136 6.1.3 硬件線程和軟件線程 138 6.1.4 線程資源 138 6.2 線程和進程的比較 139 6.2.1 上下文切換 139 6.2.2 吞吐量 139 6.2.3 實體間的通信 139 6.2.4 破壞進程數據 140 6.2.5 刪除整個進程 140 6.2.6 被其他程序重用 140 6.2.7 線程與進程的關鍵類似和差別 140 6.3 設置線程屬性 142 6.4 線程的結構 143 6.4.1 線程狀態(tài) 144 6.4.2 調度和線程競爭范圍 145 6.4.3 調度策略和優(yōu)先級 147 6.4.4 調度分配域 148 6.5 簡單的線程程序 148 6.6 創(chuàng)建線程 150 6.6.1 向線程傳遞參數 151 6.6.2 結合線程 153 6.6.3 獲得線程id 154 6.6.4 使用pthread屬性對象 155 6.7 管理線程 159 6.7.1 終止線程 159 6.7.2 管理線程的棧 168 6.7.3 設置線程調度和優(yōu)先級 171 6.7.4 設置線程的競爭范圍 175 6.7.5 使用sysconf( ) 175 6.7.6 線程安全和庫 177 6.8 擴展線程接口類 179 6.9 小結 187 第7章 并發(fā)任務的通信和同步 189 7.1 通信和同步 189 7.1.1 依賴關系 190 7.1.2 對任務依賴進行計數 193 7.1.3 什么是進程間通信 195 7.1.4 什么是線程間通信 215 7.2 對并發(fā)進行同步 223 7.2.1 同步的類型 224 7.2.2 同步對數據的訪問 224 7.2.3 同步機制 230 7.3 線程策略方法 250 7.3.1 委托模型 251 7.3.2 對等模型 253 7.3.3 生產者-消費者模型 254 7.3.4 流水線模型 255 7.3.5 用于線程的SPMD和MPMD 256 7.4 工作的分解和封裝 258 7.4.1 問題陳述 258 7.4.2 策略 258 7.4.3 觀察 259 7.4.4 問題和解決方案 259 7.4.5 流水線的簡單agent模型實例 260 7.5 小結 264 第8章 PADL和PBS:應用程序設計方法 265 8.1 為大規(guī)模多核處理器設計應用程序 265 8.2 什么是PADL 268 8.2.1 第5層:應用程序架構選擇 271 8.2.2 第4層:PADL中的并發(fā)模型 281 8.2.3 第3層:PADL的實現模型 284 8.3 謂詞分解結構 306 8.3.1 示例:Guess-My-Code游戲的PBS 307 8.3.2 將PBS、PADL和SDLC聯(lián)系起來 307 8.3.3 對PBS進行編碼 308 8.4 小結 308 第9章 對要求并發(fā)的軟件系統(tǒng)進行建模 311 9.1 統(tǒng)一建模語言 311 9.2 對系統(tǒng)的結構進行建模 313 9.2.1 類模型 313 9.2.2 類的可視化 315 9.2.3 對屬性和服務進行排序 320 9.2.4 類的實例的可視化 322 9.2.5 模板類的可視化 324 9.2.6 顯示類與對象的關系 325 9.2.7 接口類的可視化 329 9.2.8 交互式對象的組織 331 9.3 UML與并發(fā)行為 332 9.3.1 協(xié)作對象 332 9.3.2 使用進程與線程的多任務與多線程 334 9.3.3 對象間的消息序列 335 9.3.4 對象的活動 337 9.3.5 狀態(tài)機 339 9.4 整個系統(tǒng)的可視化 344 9.5 小結 345 第10章 并行程序的測試和邏輯容錯 347 10.1 能否跳過測試 347 10.2 測試中必須檢查的5個并發(fā)挑戰(zhàn) 348 10.3 失效:缺陷與故障導致的結果 350 10.3.1 基本的測試類型 350 10.3.2 缺陷排除與缺陷存活 351 10.4 如何對并行程序實現缺陷排除 351 10.4.1 問題陳述 352 10.4.2 簡單策略和粗解決方案模型 352 10.4.3 使用PADL第5層的修正的解決方案模型 352 10.4.4 agent解決方案模型的PBS 353 10.5 什么是標準軟件工程測試 357 10.5.1 軟件驗證與確認 357 10.5.2 代碼不能正常工作該怎么辦 358 10.5.3 什么是邏輯容錯 362 10.5.4 謂詞異常和可能世界 367 10.5.5 什么是模型檢測 368 10.6 小結 368 附錄A 并發(fā)設計使用的UML 371 附錄B 并發(fā)模型 379 附錄C 線程管理的POSIX標準 393 附錄D 進程管理的POSIX標準 535
使用說明
1、下載并解壓,得出pdf文件
2、如果打不開本文件,請務必下載pdf閱讀器
3、安裝后,在打開解壓得出的pdf文件
4、雙擊進行閱讀
- 下載地址
發(fā)表評論
0條評論軟件排行榜
熱門推薦
- 得間免費小說電腦版 v5.3.0.372.58M / 簡體中文
- 有柿電腦版 v11.6.284.23M / 簡體中文
- 網易新聞電腦版 v113.197.68M / 簡體中文
- 開源閱讀電腦版 v3.2517.96M / 簡體中文
- 數據挖掘導論 官方版61.61M / 簡體中文
- 未公開的Oracle數據庫秘密 迪貝斯pdf掃描版34.69M / 簡體中文
- PHP語言精粹電子書 pdf掃描版25.72M / 簡體中文
- linux常用命令大全 chm版1.48M / 簡體中文
- 本草綱目 5.34M / 簡體中文
- docker入門實戰(zhàn) pdf完整版1.38M / 簡體中文