並行計算與安全編程
商品描述
"本書主要圍繞並行計算技術和安全編程防護雙核心,系統構建從基礎理論到代碼實踐的知識體系。全書共11章,先講解並行計算基礎,內容涵蓋並行計算的概念、並行程序設計模型及並行計算機分類等;再深入介紹並行編程技術,包括OpenMP、Win32 API、Socket、MPI、CUDA GPU、MindSpore GPU等編程方法與實戰;最後聚焦安全編程,剖析並行環境特有的安全風險,介紹安全編程原則、漏洞防禦及專業工具應用,最後以實際編程中出現的安全風險作案例,幫助讀者理解與應用。 本書特色鮮明。一是場景化案例豐富,案例多源自分布式數據處理、多線程文件操作等實際場景,兼顧技術代表性與安全復雜性;二是跨領域融合緊密,打破了並行計算與安全編程的割裂,突出並行環境下的安全防護要點;三是實用性強,每個技術模塊都配套代碼示例與實驗指導,助力讀者將理論轉化為實踐能力。 本書可作為高等院校計算機科學與技術、網絡空間安全、軟件工程等專業的本科生與研究生教材,也可供企業研發人員,如並行計算工程師、安全開發工程師及分布式系統運維人員參考,為其解決實際工作中的並行與安全問題提供指導。 "
作者簡介
彭浩,教授、博士生導師,北京航空航天大學網絡空間安全學院副院長。主要研究方向為網絡內容安全、智能博弈對抗等。入選國家級青年人才項目。發表A類論文百餘篇,獲授權發明專利近30項。榮獲中國電子學會技術發明獎一等獎、中國發明協會發明創業獎創新獎一等獎等獎項。
目錄大綱
目錄
第1章並行計算1
1.1並行計算概述1
1.1.1並行計算的定義及摩爾定律1
1.1.2並行計算的分類2
1.1.3並行計算的優勢3
1.1.4並行計算的應用分類3
1.1.5應用系統的並行性3
1.1.6並行計算的研究內容4
1.2並行程序設計策略和模型4
1.2.1設計策略4
1.2.2設計模型5
1.3進程與線程6
1.3.1進程6
1.3.2線程6
1.3.3進程或線程同步互斥的控制方法7
1.4評價指標7
1.4.1基本評估7
1.4.2系統加速比8
1.4.3系統可擴展性8
1.5並行計算機的分類9
1.5.1並行計算機的控制結構9
1.5.2地址空間10
1.5.3並行計算機系統結構模型11
1.6並行計算機系統互聯15
1.6.1靜態互聯網絡15
1.6.2動態互聯網絡18
1.7習題19
第2章並行算法設計基礎21
2.1並行程序設計概述21
2.1.1並行算法設計難的原因212.1.2並行層次與代碼粒度22
2.1.3並行語言的構造方法24
2.1.4並行程序開發策略27
2.1.5並行編程範式28
2.2並行程序設計模型30
2.2.1隱式並行30
2.2.2數據並行30
2.2.3消息傳遞31
2.2.4共享變量31
2.2.53種顯式並行程序設計模型的主要特性32
2.3並行程序設計過程32
2.3.1劃分33
2.3.2通信33
2.3.3組合33
2.3.4映射33
2.4習題34
第3章OpenMP編程36
3.1OpenMP編程基礎36
3.1.1OpenMP編程定義36
3.1.2OpenMP並行編程模型36
3.1.3OpenMP程序結構37
3.2編譯指導語句39
3.2.1並行域結構40
3.2.2共享任務結構41
3.2.3同步結構48
3.2.4數據處理子句54
3.3運行時庫函數63
3.3.1分類與功能63
3.3.2基本函數63
3.3.3運行時庫函數的註意事項67
3.4環境變量68
3.5實例68
3.5.1數值求和68
3.5.2數值積分72
3.6習題77
第4章Windows編程79
4.1Windows線程庫79
4.1.1線程基本概念與內核對象79
4.1.2線程創建與生命周期管理80
4.1.3臨界區的實現與優化81
4.1.4線程本地存儲的實現機制81
4.1.5線程高級操作與性能優化83
4.1.6內存模型85
4.2Win32 API多線程程序設計85
4.2.1線程創建的核心機制與底層實現86
4.2.2線程屬性的精細化控制87
4.2.3線程同步原語88
4.2.4線程間通信的高級模式89
4.2.5多線程程序的資源管理與異常處理90
4.3MFC線程庫93
4.3.1MFC線程模型的體系結構93
4.3.2工作線程的創建與參數傳遞94
4.3.3UI線程的定制與消息循環95
4.3.4線程同步原語的MFC封裝97
4.3.5線程間通信的最佳實踐98
4.3.6性能優化與常見陷阱100
4.3.7多線程文件處理器100
4.4.NET Framework線程庫101
4.4.1Thread類101
4.4.2線程池103
4.4.3任務並行庫105
4.4.4異步編程模型107
4.4.5線程同步108
4.4.6線程安全集合109
4.4.7多線程編程的最佳實踐110
4.5習題110
第5章Socket編程113
5.1Socket編程基礎113
5.1.1什麼是Socket113
5.1.2Socket的類型113
5.1.3TCP與UDP的對比114
5.1.4Socket通信的基本流程114
5.2網絡模型116
5.2.1循環服務器模型117
5.2.2並發服務器模型120
5.2.3多進程與多線程模型對比125
5.3Socket API125
5.3.1套接字創建125
5.3.2地址綁定127
5.3.3監聽連接129
5.3.4接受連接130
5.3.5發起連接132
5.3.6數據傳輸133
5.3.7關閉套接字134
5.4網絡通信模式135
5.4.1阻塞I/O與非阻塞I/O135
5.4.2多進程並發與多線程並發139
5.4.3通信模式的對比與選擇143
5.5編程實踐144
5.5.1文件傳輸程序144
5.5.2聊天室程序147
5.5.3分布式計算框架雛形151
5.6習題154
第6章MPI多進程編程156
6.1MPI編程基礎156
6.1.1MPI簡介156
6.1.2MPI程序特點156
6.1.3MPI簡單程序實現157
6.2MPI常用函數介紹158
6.2.1環境管理函數158
6.2.2點對點通信158
6.2.3集體通信函數159
6.2.4高級功能函數159
6.3MPICH安裝與MPI程序運行160
6.3.1MPICH簡介160
6.3.2MPICH的安裝和配置160
6.3.3簡單程序運行168
6.4MPI的點對點通信169
6.4.1點對點通信介紹169
6.4.2阻塞通信169
6.4.3非阻塞通信172
6.4.4簡單程序說明173
6.5MPI集體通信175
6.5.1集體通信介紹175
6.5.2數據分發175
6.5.3數據收集175
6.5.4數據散發176
6.5.5全交換176
6.5.6歸約與掃描177
6.5.7同步177
6.6實例177
6.6.1矩陣轉置177
6.6.2矩陣分解179
6.7習題180
第7章CUDA GPU編程183
7.1GPU技術183
7.1.1GPU簡介183
7.1.2GPU與並行計算184
7.2CUDA架構185
7.2.1定義CUDA中的線程、塊和網格185
7.2.2將函數交付內核執行188
7.2.3主機與CUDA設備間的通信188
7.2.4CUDA線程的同步與通信188
7.2.5內核和網格189
7.2.6塊189
7.2.7線程189
7.2.8CUDA C語言擴展189
7.3環境搭建190
7.3.1檢查顯卡支持的CUDA版本190
7.3.2安裝VS 2022190
7.3.3安裝CUDA190
7.3.4檢測CUDA是否安裝成功192
7.3.5配置VS項目194
7.4核函數196
7.4.1核函數語句格式196
7.4.2線程組織197
7.4.3核函數註意事項197
7.4.4函數執行空間標識符197
7.5CUDA程序錯誤檢測199
7.5.1檢測運行時錯誤的宏函數199
7.5.2檢查運行時API函數199
7.5.3檢查核函數200
7.6並行編程案例201
7.6.1矩陣加法201
7.6.2用塊並行計算矩陣乘法203
7.6.3一般的直方圖統計字母頻率206
7.6.4共享內存的直方圖208
7.6.5better版歸約209
7.7習題211
第8章MindSpore GPU編程214
8.1環境配置214
8.1.1獲取安裝命令214
8.1.2安裝指南214
8.2基本介紹219
8.2.1昇思MindSpore219
8.2.2設計理念220
8.2.3華為昇騰AI全棧221
8.2.4快速入門221
8.2.5張量227
8.2.6數據加載與處理231
8.2.7網絡構建239
8.2.8函數式自動微分243
8.2.9模型訓練247
8.2.10保存與加載252
8.2.11Graph Mode加速254
8.3並行261
8.3.1分布式並行261
8.3.2分布式並行啟動方式263
8.3.3數據並行263
8.3.4算子級並行266
8.3.5優化器並行277
8.3.6流水線並行280
8.3.7並行優化策略287
8.4基於雙遞歸搜索的多維混合並行案例288
8.4.1概述288
8.4.2操作實踐288
8.5習題291
第9章安全編程原則292
9.1安全編程基本原則和最佳實踐292
9.1.1核心安全原則292
9.1.2跨平臺通用最佳實踐294
9.1.3並行計算特有的安全原則296
9.2常見編程錯誤與漏洞298
9.2.1內存安全漏洞298
9.2.2並發相關漏洞300
9.2.3網絡與協議漏洞302
9.2.4漏洞防禦的通用策略304
9.3安全編程工具和技術304
9.3.1靜態分析工具305
9.3.2動態測試技術306
9.3.3加密與安全協議庫308
9.3.4工具鏈的協同與集成310
9.4習題311
第10章並行編程中的安全問題313
10.1競爭條件與死鎖313
10.1.1競爭條件原理與類型313
10.1.2死鎖的形成與預防315
10.1.3並行框架中的死鎖案例316
10.2數據競爭與同步問題319
10.2.1數據競爭的本質與影響319
10.2.2同步機制的安全使用320
10.2.3檢測與修復工具322
10.3並行編程中的安全漏洞與攻擊324
10.3.1分布式系統特有漏洞325
10.3.2並行服務面臨的攻擊類型327
10.3.3漏洞與攻擊的防禦與加固330
10.4習題331
第11章並行安全編程案例334
11.1競態條件與線程安全計數器334
11.1.1互斥鎖保護計數器334
11.1.2交易中的安全漏洞335
11.2死鎖與資源互斥338
11.2.1哲學家換禮物338
11.2.2打印機與掃描機爭奪340
11.2.3十字路口交通死鎖342
11.3並行導致資源泄露348
參考文獻350







