作者簡介
袁春風,南京大學二級教授,CCF傑出教育獎、教育部-華為”智能基座”優秀教師獎、寶鋼優秀教師獎和系統能力培養傑出貢獻獎獲得者,南京大學趙世良講座教授。目前任教育部”101計劃”計算機系統導論課程建設及虛擬教研室負責人、中國開放指令生態(RISC-V)聯盟人才發展組組長、CCF體系結構專委會委員、江蘇省計算機學會體系結構專委會副主任。在相關領域承擔科研項目50多項,發表科研論文100多篇,兩次獲江蘇省科技進步二等獎。發表教改論文20多篇;獲國家級教學成果一等獎、二等獎各1項、江蘇省教學成果特等獎2項、二等獎1項、國家教委優秀教材二等獎1項;主持國家精品課程和國家精品資源共享課各1門;主持國家級線上一流課程2門、江蘇省精品課程和線下一流課程1門;主編國家級規劃教材1套、江蘇省精品教材和培優教材各1本、江蘇省重點建設教材2本;主持的2門網絡課程分別獲得江蘇省多媒體課件特等獎和江蘇省網絡課件大賽一等獎。
目錄
第1章 計算機系統概述1
1 1計算機系統基本工作原理1
1 1 1馮 諾依曼結構基本思想1
1 1 2馮 諾依曼機基本結構2
1 1 3程序和指令的執行過程3
1 2程序的開發與運行5
1 2 1程序設計語言和翻譯程序5
1 2 2從源程序到可執行文件7
1 2 3可執行文件的啟動和執行8
1 3計算機系統的層次結構10
1 3 1計算機系統抽象層的轉換10
1 3 2計算機系統核心層之間的關聯12
1 3 3計算機系統的不同用戶13
1 4計算機系統性能評價15
1 4 1計算機性能的定義15
1 4 2計算機性能的測試16
1 4 3用指令執行速度進行性能評估18
1 4 4用基準程序進行性能評估19
1 4 5阿姆達爾定律20
1 5本章 小結21
習題21
第2章 數據的機器級表示與處理24
2 1數制和編碼24
2 1 1信息的二進制編碼24
2 1 2進位計數制26
2 1 3定點數與浮點數29
2 1 4定點數的編碼表示30
2 2整數的表示34
2 2 1無符號整數和帶符號整數的表示34
2 2 2C語言中的整數及其相互轉換34
2 3浮點數的表示36
2 3 1浮點數的表示範圍37
2 3 2浮點數的規格化37
2 3 3IEEE 754浮點數標準38
2 3 4C語言中的浮點數類型41
2 4非數值數據的編碼表示43
2 4 1邏輯值43
2 4 2西文字符43
2 4 3漢字字符44
2 5數據的寬度和存儲45
2 5 1數據的寬度和單位45
2 5 2數據的存儲和排列順序47
2 6數據的基本運算51
2 6 1按位運算和邏輯運算51
2 6 2左移和右移運算51
2 6 3位擴展和位截斷運算52
2 6 4整數加減運算53
2 6 5整數乘除運算56
2 6 6常量的乘除運算58
2 6 7浮點數運算59
2 7本章 小結65
習題65
目錄計算機系統基礎(基於LoongArch指令系統)第3章 程序轉換與指令系統72
3 1程序轉換概述72
3 1 1機器指令和彙編指令73
3 1 2ISA概述73
3 1 3指令系統設計風格75
3 1 4機器代碼的生成過程76
3 2LA32/LA64指令系統81
3 2 1LoongArch指令系統概述81
3 2 2機器指令格式83
3 2 3操作數類型84
3 2 4寄存器組織86
3 2 5尋址方式87
3 3LA32/LA64基礎整數指令89
3 3 1基礎整數指令概述89
3 3 2整數運算類指令91
3 3 3移位指令98
3 3 4普通訪存指令100
3 3 5程序執行流控制指令105
3 4LA32/LA64基礎浮點指令110
3 4 1基礎浮點指令集概述110
3 4 2浮點普通訪存指令110
3 4 3浮點運算類指令112
3 4 4浮點轉換指令113
3 4 5浮點傳送指令115
3 5本章 小結119
習題119
第4章 程序的機器級表示122
4 1過程調用的機器級表示122
4 1 1LoongArch的過程調用約定122
4 1 2變量的作用域和生存期126
4 1 3按值傳遞參數和按地址傳遞參數128
4 1 4遞歸過程調用132
4 1 5非靜態局部變量的存儲分配134
4 1 6入口參數的傳遞與分配137
4 2流程控制語句的機器級表示142
4 2 1選擇語句的機器級表示142
4 2 2循環語句的機器級表示146
4 3複雜數據類型的分配和訪問149
4 3 1數組的分配和訪問149
4 3 2結構體數據的分配和訪問154
4 3 3聯合體數據的分配和訪問156
4 3 4數據的對齊159
4 4越界訪問和緩沖區溢出161
4 4 1緩沖區溢出161
4 4 2緩沖區溢出攻擊163
4 4 3緩沖區溢出攻擊的防範165
4 5本章 小結168
習題169
第5章 程序的鏈接與加載執行180
5 1編譯、彙編和靜態鏈接180
5 1 1編譯和彙編180
5 1 2可執行文件的生成181
5 2目標文件格式183
5 2 1ELF目標文件格式183
5 2 2可重定位文件格式184
5 2 3可執行文件格式188
5 2 4可執行文件的存儲器映像190
5 3符號表和符號解析191
5 3 1符號和符號表191
5 3 2符號解析194
5 3 3與靜態庫的鏈接197
5 4符號的重定位199
5 4 1重定位信息200
5 4 2重定位過程200
5 4 3LoongArch代碼的重定位203
5 5動態鏈接206
5 5 1動態鏈接的特性206
5 5 2程序加載時的動態鏈接207
5 5 3程序運行時的動態鏈接208
5 5 4位置無關代碼210
5 5 5位置無關可執行文件214
5 6庫打樁機制215
5 6 1編譯時打樁215
5 6 2鏈接時打樁216
5 6 3運行時打樁217
5 7可執行文件的加載和執行219
5 7 1可執行文件的加載219
5 7 2程序和指令的執行過程220
5 7 3CPU的基本功能和基本組成221
5 7 4打斷程序正常執行的事件223
5 8本章 小結223
習題224
第6章 存儲器層次結構229
6 1存儲器概述229
6 1 1存儲器的分類229
6 1 2主存儲器的組成和基本操作230
6 1 3層次化存儲結構231
6 1 4程序訪問的局部性232
6 2半導體隨機存取存儲器234
6 2 1基本存儲元件234
6 2 2DRAM芯片235
6 2 3SDRAM芯片技術237
6 2 4內存條及其與CPU的連接238
6 2 5存儲器芯片的擴展240
6 2 6主存控制器241
6 3外部存儲器242
6 3 1磁盤存儲器的結構242
6 3 2磁盤存儲器的性能指標244
6 3 3閃速存儲器和U盤245
6 3 4固態硬盤246
6 4cache247
6 4 1cache的基本工作原理247
6 4 2cache的映射方式249
6 4 3cache的替換算法255
6 4 4cache的寫策略258
6 4 5cache的設計259
6 4 6cache和程序性能263
6 5本章 小結267
習題267
第7章 虛擬存儲器271
7 1虛擬存儲器概述271
7 1 1虛擬存儲器的基本概念271
7 1 2進程的虛擬地址空間272
7 1 3虛擬存儲器的基本類型274
7 2頁式虛擬存儲器的實現275
7 2 1頁表和頁表項的結構275
7 2 2頁式存儲管理總體結構276
7 2 3頁式虛擬存儲地址轉換278
7 2 4快表(TLB)278
7 3具有TLB和cache的存儲系統280
7 3 1層次化存儲系統結構281
7 3 2CPU訪存過程282
7 3 3cache的4種查找方式283
7 4存儲保護機制284
7 5實例: LoongArch架構的虛擬存儲系統285
7 5 1與虛擬存儲管理相關的CSR285
7 5 2LoongArch架構的虛擬地址空間288
7 5 3直接映射地址翻譯模式289
7 5 4頁表映射模式下的TLB訪問290
7 5 5頁表映射模式下的多級頁表結構294
7 5 6頁表映射模式下的多級頁表遍歷296
7 6實例: Intel Core i7+Linux平臺297
7 6 1Core i7的層次化存儲器結構297
7 6 2Core i7的地址轉換機制297
7 7Linux操作系統的虛擬存儲管理300
7 7 1mmap()函數的功能300
7 7 2共享庫的映射302
7 7 3私有的寫時拷貝對象302
7 8本章 小結305
習題305
第8章 進程與異常控制流308
8 1進程與進程的上下文切換308
8 1 1程序和進程的概念308
8 1 2進程的邏輯控制流309
8 1 3進程的上下文切換310
8 2異常和中斷312
8 2 1異常和中斷的基本概念312
8 2 2異常的分類313
8 2 3中斷的分類317
8 2 4異常和中斷的響應317
8 3LoongArch+Linux平臺的異常和中斷機制319
8 3 1支持的異常/中斷類型319
8 3 2異常/中斷相關的CSR320
8 3 3異常/中斷的響應優先級321
8 3 4異常/中斷的響應過程和處理322
8 3 5異常/中斷處理程序的入口地址324
8 3 6LoongArch+Linux平臺中的異常處理325
8 3 7LoongArch中的系統調用機制328
8 4Linux中的進程控制330
8 4 1進程的創建、休眠和終止330
8 4 2進程ID的獲取和子進程的回收333
8 4 3程序的加載運行335
8 5Linux系統中的信號與非本地跳轉339
8 5 1Linux系統中的信號處理機制339
8 5 2信號的發送340
8 5 3信號的捕獲和信號處理342
8 5 4非本地跳轉處理343
8 6本章 小結345
習題346
第9章 I/O操作的實現352
9 1I/O子系統概述352
9 2用戶空間I/O軟件354
9 2 1用戶程序中的I/O函數354
9 2 2文件的基本概念357
9 2 3系統級I/O函數358
9 2 4C標準I/O庫函數361
9 3內核空間I/O軟件366
9 3 1設備無關I/O軟件層366
9 3 2設備驅動程序370
9 3 3中斷服務程序376
9 4I/O硬件與軟件的接口378
9 4 1輸入/輸出設備378
9 4 2基於總線的互連結構378
9 4 3I/O接口的功能和結構381
9 4 4I/O端口及其編址383
9 4 5中斷系統387
9 5本章 小結388
習題389
參考文獻393
前言/序言
隨著基於大數據處理的人工智能時代的到來,基於PC構建起來的專業教學內容已經遠遠不能反映現代社會對計算機專業人才的培養要求。原先高等學校計算機專業人才培養強調”程序”設