当前位置:首页 > 工业技术
计算机科学丛书  计算机系统  系统架构与操作系统的高度集成
计算机科学丛书  计算机系统  系统架构与操作系统的高度集成

计算机科学丛书 计算机系统 系统架构与操作系统的高度集成PDF电子书下载

工业技术

  • 电子书积分:16 积分如何计算积分?
  • 作 者:(美)拉姆阿堪德兰,(美)莱希著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2015
  • ISBN:9787111506362
  • 页数:530 页
图书介绍:本书采用集成方法,系统地讲解了计算机系统的软件和硬件知识。全书分为5个模块:处理器、内存系统、存储系统、并行系统和网络,分别介绍并讨论了处理器及其相关的软件问题、内存系统和内存分级体系、I/O和文件系统、操作系统问题及支持并行编程的多处理器中相应体系结构特点、网络硬件的发展和处理各种网络行为的网络协议堆的特点等。
《计算机科学丛书 计算机系统 系统架构与操作系统的高度集成》目录

第1章 概述 1

1.1盒子里有什么 1

1.2计算机系统中的抽象层次 1

1.3操作系统的作用 3

1.4盒子里正在发生什么事 5

1.4.1在计算机上启动应用程序 7

1.5计算机硬件的演化 7

1.6操作系统的演化 9

1.7本书导读 9

练习题 10

参考文献注释和扩展阅读 10

第2章 处理器体系结构 12

2.1处理器设计涉及什么 12

2.2如何设计指令集 13

2.3常见的高级语言功能集 13

2.4表达式和赋值语句 14

2.4.1操作数放在哪里 14

2.4.2在指令中如何指定内存地址 17

2.4.3每个操作数应该有多宽 18

2.4.4字节序 19

2.4.5操作数打包以及字操作数的对齐 21

2.5高级数据抽象 22

2.5.1结构 23

2.5.2数组 23

2.6条件语句和循环 24

2.6.1 if-then-else语句 25

2.6.2 switch语句 26

2.6.3循环语句 27

2.7检查点 27

2.8编译函数调用 27

2.8.1调用者的状态 28

2.8.2过程调用剩余的工作 30

2.8.3软件惯例 31

2.8.4活动记录 35

2.8.5递归 36

2.8.6帧指针 36

2.9指令集体系结构选择 38

2.9.1额外的指令 38

2.9.2额外的寻址模式 39

2.9.3体系结构类型 39

2.9.4指令格式 39

2.10 LC-2200指令集 42

2.10.1指令格式 42

2.10.2 LC-2200寄存器组 43

2.11影响处理器设计的问题 44

2.11.1指令集 44

2.11.2应用程序对指令集设计的影响 45

2.11.3其他驱动处理器设计的问题 46

小结 47

练习题 47

参考文献注释和扩展阅读 49

第3章 处理器实现 51

3.1体系结构与实现 51

3.2处理器实现涉及什么 51

3.3重要的硬件概念 52

3.3.1电路 52

3.3.2数据通路的硬件资源 52

3.3.3边沿沿触发逻辑 53

3.3.4连接数据通路元件 54

3.3.5基于总线的设计 57

3.3.6有限状态机 59

3.4数据通路设计 60

3.4.1 ISA与数据通路宽度 61

3.4.2时钟脉冲宽度 62

3.4.3检查点 62

3.5控制单元设计 62

3.5.1 ROM加状态寄存器 63

3.5.2 FETCH宏状态 65

3.5.3 DECODE宏状态 68

3.5.4 EXECUTE宏状态:ADD指令(R型指令部分) 68

3.5.5 EXECUTE宏状态:NAND指令(R型指令部分) 71

3.5.6 EXECUTE宏状态:JALR指令(J型指令部分) 71

3.5.7 EXECUTE宏状态:LW指令(I型指令部分) 72

3.5.8 EXECUTE宏状态:SW和ADDI指令(I型指令部分) 75

3.5.9 EXECUTE宏状态:BEQ指令(I型指令部分) 75

3.5.10设计微程序中的条件分支 78

3.5.11再谈DECODE宏状态 79

3.6控制单元设计的另一种选择 80

3.6.1微程序控制 80

3.6.2硬连线控制 81

3.6.3在两种控制设计风格中选择 82

小结 82

历史回顾 83

练习题 84

参考文献注释和扩展阅读 86

第4章 中断、陷入及异常 87

4.1程序执行中的不连续性 88

4.2处理程序不连续性 89

4.3处理程序不连续性的体系结构改进 91

4.3.1修改FSM 91

4.3.2一个简单的中断处理过程 92

4.3.3处理级联中断 92

4.3.4从处理过程中返回 95

4.3.5检查点 95

4.4处理程序不连续性的硬件细节 96

4.4.1中断的数据通路细节 96

4.4.2获得处理过程地址的细节 97

4.4.3保存/恢复栈 99

4.5信息汇总 100

4.5.1体系结构和硬件改进总结 100

4.5.2工作中的中断机制 100

小结 102

练习题 103

参考文献注释和扩展阅读 104

第5章 处理器性能与流水线处理器的设计 105

5.1时间和空间性能指标 105

5.2指令频率 107

5.3基准测试程序 108

5.4提升处理器的性能 111

5.5加速比 112

5.6提升处理器的吞吐量 114

5.7流水线简介 115

5.8指令处理流水线 115

5.9简单指令流水线的问题 117

5.10修正指令流水线里的问题 118

5.11指令流水线的数据通路元件 120

5.12针对流水线的体系结构与实现 121

5.12.1指令穿过流水线的过程详解 122

5.12.2流水线寄存器的设计 124

5.12.3各个阶段的实现 125

5.13冒险 125

5.13.1结构性冒险 126

5.13.2数据冒险 126

5.13.3控制冒险 135

5.13.4冒险总结 141

5.14在流水线处理器里处理程序不连续性 142

5.15处理器设计的高级话题 144

5.15.1指令级并行 144

5.15.2更深的流水线 145

5.15.3在乱序执行下再次讨论程序不连续性 147

5.15.4管理共享资源 148

5.15.5功耗 149

5.15.6多核处理器设计 149

5.15.7 Intel Core微架构:一个流水线 150

小结 151

历史回顾 152

练习题 152

参考文献注释和扩展阅读 156

第6章 处理器调度 157

6.1引言 157

6.2程序和进程 158

6.3调度环境 161

6.4调度基础 162

6.5性能指标 165

6.6非抢占式调度算法 167

6.6.1先到先服务 167

6.6.2最短作业优先 170

6.6.3优先级 171

6.7抢占式调度算法 172

6.7.1轮转调度器 175

6.8结合优先级和抢占 178

6.9元调度器 178

6.10评价 179

6.11调度对处理器体系结构的影响 180

小结和展望 181

Linux调度器——一个案例研究 181

历史回顾 183

练习题 185

参考文献注释和扩展阅读 186

第7章 内存管理技术 187

7.1内存管理器提供的功能 187

7.2内存管理的简单方案 189

7.3内存分配方案 192

7.3.1固定尺寸分区 192

7.3.2变长分区 193

7.3.3缩并 195

7.4分页虚拟内存 196

7.4.1页表 197

7.4.2支持分页的硬件 199

7.4.3页表的建立 199

7.4.4虚拟和物理内存的相对大小 200

7.5分段虚拟内存 200

7.5.1支持分段的硬件 204

7.6分页和分段的比较 204

7.6.1解读CPU生成的地址 206

小结 207

历史回顾 208

MULTICS 209

Intel的内存体系结构 210

练习题 211

参考文献注释和扩展阅读 212

第8章 页式内存管理 213

8.1按需分页 213

8.1.1按需分页的硬件 213

8.1.2页错误处理程序 214

8.1.3按需分页内存管理的数据结构 214

8.1.4页错误解析 215

8.2进程调度器和内存管理器间交互 217

8.3页替换策略 218

8.3.1 Belady的Min算法 219

8.3.2随机替换 219

8.3.3先进先出策略 219

8.3.4最近最少使用策略 221

8.3.5第二次机会页替换算法 223

8.3.6页替换算法回顾 225

8.4优化内存管理 225

8.4.1空闲页帧池 225

8.4.2颠簸 226

8.4.3工作集 228

8.4.4颠簸控制 229

8.5其他考虑 229

8.6旁路转换缓存 230

8.6.1 TLB的地址转换 231

8.7内存管理的高级话题 232

8.7.1多级页表 232

8.7.2局部页表项的访问权限 234

8.7.3反向页表 234

小结 234

练习题 234

参考文献注释和扩展阅读 236

第9章 分级存储体系 237

9.1缓存的概念 238

9.2局部性原理 238

9.3基本术语 238

9.4多级存储层次 239

9.5缓存结构 241

9.6直接映射缓存结构 241

9.6.1缓存查找 243

9.6.2缓存项中的字段 244

9.6.3用于直接映射缓存的硬件 245

9.7流水线处理器设计的影响 247

9.8缓存读/写算法 247

9.8.1 CPU对缓存的读访问 248

9.8.2 CPU对缓存的写访问 248

9.9处理器流水线中的缓存缺失处理 251

9.9.1在流水线性能上缓存缺失对内存延迟的影响 252

9.10利用空间局部性提高缓存性能 253

9.10.1增加块大小对性能的影响 256

9.11灵活的布局策略 257

9.11.1全相关缓存 258

9.11.2组相关缓存 259

9.11.3组相关的极端情况 261

9.12指令和数据缓存 263

9.13降低缺失损失 264

9.14缓存替换策略 264

9.15缺失类型简要说明 266

9.16 TLB和缓存整合 268

9.17缓存控制器 269

9.18虚拟索引物理标记的缓存 270

9.19缓存设计因素概述 271

9.20主存的设计因素 272

9.20.1简单的主存 272

9.20.2与缓存块大小相匹配的主存和总线 273

9.20.3交错式内存 273

9.21现代主存系统分析 274

9.21.1页式DRAM 278

9.22分级存储体系的性能影响 279

小结 280

现代处理器的分级存储体系(一个例子) 281

练习题 281

参考文献注释和扩展阅读 283

第10章 输入/输出和稳定性存储 284

10.1 CPU和I/O设备间的通信 284

10.1.1设备控制器 284

10.1.2内存映射I/O 285

10.2程控I/O 287

10.3 DMA 288

10.4总线 290

10.5 I/O处理器 291

10.6设备驱动 292

10.6.1例子 293

10.7外围设备 295

10.8磁盘存储器 296

10.8.1磁盘技术的传奇故事 302

10.9磁盘调度算法 304

10.9.1先到先服务 305

10.9.2最短寻道时间优先 305

10.9.3 SCAN 305

10.9.4 C-SCAN 306

10.9.5 LOOK和C-LOOK 307

10.9.6磁盘调度总结 307

10.9.7算法比较 308

10.10固态硬盘 309

10.11 I/O总线和设备驱动的演化 310

10.11.1设备驱动的动态负载 311

10.11.2信息汇总 312

小结 314

练习题 314

参考文献注释和扩展阅读 315

第11章 文件系统 317

11.1属性 317

11.2在磁盘子系统上实现文件系统的设计选择 321

11.2.1连续分配 322

11.2.2带有溢出区域的连续分配 324

11.2.3链接分配 324

11.2.4文件分配表 325

11.2.5索引分配 327

11.2.6多级索引分配 328

11.2.7混合索引分配 328

11.2.8不同分配策略的比较 331

11.3信息汇总 331

11.3.1索引节点 336

11.4文件系统的组件 336

11.4.1创建、写入文件的剖析 337

11.5各种子系统的交互 337

11.6文件系统在物理媒介上的布局 340

11.6.1内存中的数据结构 342

11.7处理系统崩溃 343

11.8其他物理媒介上的文件系统 343

11.9现代文件系统一览 344

11.9.1 Linux 344

11.9.2 Microsoft Windows 348

小结 349

练习题 350

参考文献注释和扩展阅读 352

第12章 多线程编程与多处理器 353

12.1为什么需要多线程 353

12.2线程所需的编程支持 354

12.2.1线程创建和终止 354

12.2.2线程之间的通信 356

12.2.3读/写冲突、竞争条件及不确定性 357

12.2.4线程之间的同步 361

12.2.5线程库中数据类型的内部表示 365

12.2.6简单的编程示例 366

12.2.7死锁和活锁 369

12.2.8条件变量 370

12.2.9视频处理示例的完整解决方案 373

12.2.10解决方案的讨论 374

12.2.11重新检查条件 375

12.3线程函数调用和多线程编程概念总结 377

12.4线程编程的一些注意事项 379

12.5使用线程作为软件结构抽象 379

12.6 POSIX pthread库调用总结 379

12.7操作系统对线程的支持 382

12.7.1用户级线程 383

12.7.2内核级线程 385

12.7.3 Solaris线程:一个内核级线程例子 386

12.7.4线程和库 387

12.8在单处理器上的多线程的硬件支持 388

12.8.1线程创建、终止以及线程间的通信 388

12.8.2线程之间的同步 388

12.8.3原子的Test-and-Set指令 388

12.8.4使用Test-and-Set指令的Lock算法 390

12.9多处理器 391

12.9.1页表 391

12.9.2分级存储体系 391

12.9.3保证原子性 393

12.10高级话题 393

12.10.1操作系统话题 393

12.10.2架构话题 403

12.10.3未来之路:多核与众核架构 412

小结 413

历史回顾 414

练习题 415

参考文献注释和扩展阅读 417

第13章 网络与网络协议基础知识 419

13.1预备知识 419

13.2基本术语 419

13.3网络软件 423

13.4协议栈 424

13.4.1因特网协议栈 424

13.4.2 OSI模型 426

13.4.3分层的实际问题 427

13.5应用层 427

13.6传输层 428

13.6.1停止并等待协议 429

13.6.2流水线协议 431

13.6.3可靠的流水线协议 432

13.6.4处理传输错误 436

13.6.5因特网上的传输协议 437

13.6.6传输层总结 438

13.7网络层 439

13.7.1路由算法 439

13.7.2因特网寻址 444

13.7.3网络服务模式 446

13.7.4网络路由与转发 449

13.7.5网络层总结 450

13.8链路层和局域网 450

13.8.1以太网 451

13.8.2 CSMA/CD 451

13.8.3 IEEE 802.3 453

13.8.4无线局域网与IEEE 802.11 453

13.8.5令牌环 454

13.8.6其他链路层协议 456

13.9网络硬件 456

13.10协议栈各层之间的关系 460

13.11用于数据包传输的数据结构 460

13.11.1 TCP/IP包头 461

13.12消息传输时间 462

13.13协议层功能总结 466

13.14网络软件与操作系统 466

13.14.1套接字库 467

13.14.2在操作系统中实现协议栈 468

13.14.3网络设备驱动程序 468

13.15 使用UNIX套接字进行网络编程 469

13.16网络服务与高层协议 474

小结 475

历史回顾 475

练习题 480

参考文献注释和扩展阅读 482

第14章 尾声:旅途回顾 483

14.1处理器设计 483

14.2进程 483

14.3虚拟内存系统和内存管理 483

14.4分级存储体系 484

14.5并行系统 484

14.6输入/输出系统 484

14.7永久性存储 484

14.8网络 485

结束语 485

附录A 使用UNIX套接字进行网络编程 486

参考文献 495

索引 500

返回顶部