2024香港最具教育競爭力中學/小學/幼稚園50強龍虎榜
2024香港最具教育競爭力中學/小學/幼稚園排名指南
最近十一年香港最具教育競爭力中學/小學/幼稚園50強完整版榜單:
2024202320222021/202019201820172016201520142013
教育競爭力評比體系說明
校風評比體系說明
服务全球华人的中英文書籍網上書店
您的購物車是空的

C++多核高級編程

  • 作者:(美) 休斯 著 齊寧 譯
  • 出版社: 清華大學出版社
  • 出版時間:2010-03-01
  • 版次:1
  • 商品編號: 10080632

    頁數:561

    印次:1

    印刷時間:2010-03-01


HK$99.70 (速遞費用須知)
購買額滿HK$158免運費
免郵費優惠僅限香港、澳门、
台灣及中國大陸

購買數量:

內容簡介

 

 為了提高系統總體性能,計算機廠商已經選擇增加更多的處理器,而不是提高時鐘頻率。相應地,如果您希望應用程序能夠通過使用下一代處理器提高性能,就必須為了利用多處理器計算機而對應用程序進行改寫。這本非常實用的書教讀者如何從順序編程技術轉移到並行和多線程編程技術,同時介紹了為多處理器和多線程架構編程的所有必備知識。
  本書的兩位作者具有豐富的經驗,雖然是並行處理和軟件並發這些複雜的主題,但是採用了清晰、易於理解的方式來講述它們。通過他們進行多處理和多線程模型編程的實際方法,借助大量有用的實例,演示如何成功地完成多核編程,從而使讀者能夠充分利用新一代多核處理器的能力。
  本書主要內容
  並發編程和同步帶來的各種缺陷、陷阱和挑戰
  調試和測試多核編程的方法與技術
  如何使川跨下台技術米利用處理器的特定特性
  操作系統在多核編程中的任務
  將框架類作為並發構建塊加以利用的方法
  如何通過使用接口類宋降低任務同步和通信的複雜性
  本書適合於希望從事多核編程和多核應用程序開發的開發人員

作者簡介

  Cameron Hughes是一名專業的軟件開發人員。他是CTEST實驗室的軟件工程師,同時還是Youngstown州立大學的編程人員/分析師。Cameron Hughes有著超過15年的軟件開發經驗,參與過各種規模的軟件開發工作,從商業和工業應用到航空設計和開發項目。Cameron是Cognopaedia的設計者,目前是運行在CTEST實驗室的Pantheon上的GRIOT項目的領導者。Pantheon是具有24個節點的多核集群,用於多線程搜索引擎和文本提取程序的開發。
  Tracey Hughes是CTEST實驗室的高級圖像程序員,負責開發知識和信息的可視化軟件。Tracey Hughes是利用CTEST實驗室的知識可視化的M.I.N.D、C.R_A.I.G、NOFAQS等項目的主要設計人員。她經常致力於Linux開發軟件。她還是GRIOT項目的小組成員。
  Cameron和Tracey Hughes還是關於軟件開發、多線程和並行編程方面的6本著作的作者,這6本著作是:Parallel andDistributedProgramming Using C++、Linux RapidApplicationDevelopment、Mastering the Standard C++Classes、Object-Oriented Multithreading UsingC++、Collection and Container Classes in C++和Object-OrientedI/O Using C++lostreams。

目錄

第1章 新的體系結構 1
1.1 什麼是多核 1
1.2 多核體系結構 2
1.3 軟件開發人員眼中的多核體系結構 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 系統請求接口和交叉開關 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 對操作系統隱藏 27
2.3.4 協處理器部件 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章 多核編程的挑戰 33
3.1 什麼是順序模型 33
3.2 什麼是並發 34
3.3 軟件開發 35
3.3.1 挑戰1:軟件分解 38
3.3.2 挑戰2:任務間通信 43
3.3.3 挑戰3:多個任務或agent對數據或資源的並發訪問 47
3.3.4 挑戰4:識別並發執行的任務之間的關係 51
3.3.5 挑戰5:控制任務之間的資源爭奪 53
3.3.6 挑戰6:需要多少個進程或線程 53
3.3.7 挑戰7和挑戰8:尋找可靠的、可重現的調試和測試 54
3.3.8 挑戰9:與擁有多進程組件的設計的相關人員進行溝通 55
3.3.9 挑戰10:在C++中實現多處理和多線程 56
3.4 C++開發人員必須學習新的庫 56
3.5 處理器架構的挑戰 57
3.6 小結 57

第4章 操作系統的任務 59
4.1 操作系統扮演什麼角色 59
4.1.1 提供一致的接口 59
4.1.2 管理硬件資源和其他應用軟件 60
4.1.3 開發人員與操作系統的交互 60
4.1.4 操作系統的核心服務 63
4.1.5 應用程序員的接口 66
程序概要4-1 70
程序概要4-2 74
4.2 分解以及操作系統的任務 75
4.3 隱藏操作系統的任務 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 進程狀態 103
5.6.4 進程是如何被調度的 105
5.7 使用ps實用工具監視進程 107
5.8 設置和獲得進程優先級 110
5.9 什麼是上下文切換 112
5.10 進程創建中的活動 112
5.10.1 使用fork( )函數調用 113
5.10.2 使用exec( )系統調用系列 113
5.11 進程環境變量的使用 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 線程狀態 144
6.4.2 調度和線程競爭範圍 145
6.4.3 調度策略和優先級 147
6.4.4 調度分配域 148
6.5 簡單的線程程序 148
6.6 創建線程 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 設置線程調度和優先級 171
6.7.4 設置線程的競爭範圍 175
6.7.5 使用sysconf( ) 175
6.7.6 線程安全和庫 177
6.8 擴展線程接口類 179
6.9 小結 187

第7章 並發任務的通信和同步 189
7.1 通信和同步 189
7.1.1 依賴關係 190
7.1.2 對任務依賴進行計數 193
7.1.3 什麼是進程間通信 195
7.1.4 什麼是線程間通信 215
7.2 對並發進行同步 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 為大規模多核處理器設計應用程序 265
8.2 什麼是PADL 268
8.2.1 第5層:應用程序架構選擇 271
8.2.2 第4層:PADL中的並發模型 281
8.2.3 第3層:PADL的實現模型 284
8.3 謂詞分解結構 306
8.3.1 示例:Guess-My-Code遊戲的PBS 307
8.3.2 將PBS、PADL和SDLC聯繫起來 307
8.3.3 對PBS進行編碼 308
8.4 小結 308

第9章 對要求並發的軟件系統進行建模 311
9.1 統一建模語言 311
9.2 對系統的結構進行建模 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與並發行為 332
9.3.1 協作對象 332
9.3.2 使用進程與線程的多任務與多線程 334
9.3.3 對象間的消息序列 335
9.3.4 對象的活動 337
9.3.5 狀態機 339
9.4 整個系統的可視化 344
9.5 小結 345

第10章 並行程序的測試和邏輯容錯 347
10.1 能否跳過測試 347
10.2 測試中必須檢查的5個並發挑戰 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 並發設計使用的UML 371
附錄B 並發模型 379
附錄C 線程管理的POSIX標準 393
附錄D 進程管理的POSIX標準 535


我們接受以下的付款方式︰VISA、Mastercard、JCB 信用卡、PayPal、銀行轉帳。