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




