《操作系统概念 第7版 翻译版》PDF下载

  • 购买积分:22 如何计算积分?
  • 作  者:(美)Abraham Silberschatz,(美)Peter Baer Galvin,(美)Greg Gagne著
  • 出 版 社:北京:高等教育出版社
  • 出版年份:2010
  • ISBN:9787040283419
  • 页数:805 页
图书介绍:本书讨论了操作系统中的基本概念和算法,并对大量实例(如Linux系统)进行了研究。适合高等院校的计算机专业及相关专业的学生用做操作系统课程教材或教学参考书。

第一部分 概述 3

第1章 导论 3

1.1 操作系统做什么 3

1.1.1 用户视角 4

1.1.2 系统视角 5

1.1.3 定义操作系统 5

1.2 计算机系统组织 6

1.2.1 计算机系统操作 6

1.2.2 存储结构 7

1.2.3 I/O结构 9

1.3 计算机系统体系结构 10

1.3.1 单处理器系统 11

1.3.2 多处理器系统 11

1.3.3 集群系统 13

1.4 操作系统结构 14

1.5 操作系统操作 16

1.5.1 双重模式操作 16

1.5.2 定时器 18

1.6 进程管理 18

1.7 内存管理 19

1.8 存储管理 20

1.8.1 文件系统管理 20

1.8.2 大容量存储器管理 21

1.8.3 高速缓存 21

1.8.4 I/O系统 23

1.9 保护和安全 23

1.10 分布式系统 25

1.11 专用系统 26

1.11.1 实时嵌入式系统 26

1.11.2 多媒体系统 27

1.11.3 手持系统 27

1.12 计算环境 28

1.12.1 传统计算 28

1.12.2 客户机-服务器计算 29

1.12.3 对等计算 29

1.12.4 基于Web的计算 30

1.13 小结 30

习题 32

文献注记 33

第2章 操作系统结构 34

2.1 操作系统服务 34

2.2 操作系统的用户界面 36

2.2.1 命令解释程序 36

2.2.2 图形用户界面 36

2.3 系统调用 37

2.4 系统调用类型 41

2.4.1 进程控制 41

2.4.2 文件管理 45

2.4.3 设备管理 46

2.4.4 信息维护 46

2.4.5 通信 46

2.5 系统程序 47

2.6 操作系统设计和实现 48

2.6.1 设计目标 48

2.6.2 机制与策略 49

2.6.3 实现 49

2.7 操作系统结构 50

2.7.1 简单结构 50

2.7.2 分层方法 52

2.7.3 微内核 53

2.7.4 模块 54

2.8 虚拟机 55

2.8.1 实现 56

2.8.2 优点 57

2.8.3 实例 57

2.9 系统生成 60

2.10 系统启动 61

2.11 小结 62

习题 63

项目:向Linux内核增加一个系统调用 64

文献注记 67

第二部分 进程管理 71

第3章 进程 71

3.1 进程概念 71

3.1.1 进程 71

3.1.2 进程状态 72

3.1.3 进程控制块 73

3.1.4 线程 74

3.2 进程调度 75

3.2.1 调度队列 75

3.2.2 调度程序 77

3.2.3 上下文切换 78

3.3 进程操作 79

3.3.1 进程创建 79

3.3.2 进程终止 84

3.4 进程间通信 84

3.4.1 共享内存系统 86

3.4.2 消息传递系统 87

3.5 IPC系统的实例 90

3.5.1 实例:POSIX共享内存 90

3.5.2 实例:Mach 91

3.5.3 实例:Windows XP 94

3.6 客户机-服务器系统通信 95

3.6.1 Socket 95

3.6.2 远程过程调用 98

3.6.3 远程方法调用 101

3.7 小结 102

习题 103

项目:UNIX Shell和历史特点 106

文献注记 110

第4章 线程 111

4.1 概述 111

4.1.1 动机 112

4.1.2 优点 112

4.2 多线程模型 113

4.2.1 多对一模型 113

4.2.2 一对一模型 114

4.2.3 多对多模型 114

4.3 线程库 115

4.3.1 Pthread 116

4.3.2 Win32线程 117

4.3.3 Java线程 119

4.4 多线程问题 121

4.4.1 系统调用fork()和exec() 121

4.4.2 取消 122

4.4.3 信号处理 122

4.4.4 线程池 123

4.4.5 线程特定数据 125

4.4.6 调度程序激活 125

4.5 操作系统实例 126

4.5.1 Windows XP线程 126

4.5.2 Linux线程 127

4.6 小结 128

习题 129

项目:矩阵乘法 130

文献注记 133

第5章 CPU调度 134

5.1 基本概念 134

5.1.1 CPU-I/O区间周期 134

5.1.2 CPU调度程序 135

5.1.3 抢占调度 135

5.1.4 分派程序 136

5.2 调度准则 137

5.3 调度算法 138

5.3.1 先到先服务调度 138

5.3.2 最短作业优先调度 139

5.3.3 优先级调度 141

5.3.4 轮转法调度 142

5.3.5 多级队列调度 145

5.3.6 多级反馈队列调度 146

5.4 多处理器调度 147

5.4.1 多处理器调度的方法 148

5.4.2 处理器亲和性 148

5.4.3 负载平衡 148

5.4.4 对称多线程 149

5.5 线程调度 150

5.5.1 竞争范围 150

5.5.2 Pthread调度 150

5.6 操作系统实例 152

5.6.1 实例:Solaris调度 152

5.6.2 实例:Windows XP调度 154

5.6.3 实例:Linux调度 156

5.7 算法评估 158

5.7.1 确定模型 158

5.7.2 排队模型 160

5.7.3 模拟 160

5.7.4 实现 161

5.8 小结 162

习题 163

文献注记 165

第6章 进程同步 166

6.1 背景 166

6.2 临界区问题 168

6.3 Peterson算法 169

6.4 硬件同步 170

6.5 信号量 173

6.5.1 用法 173

6.5.2 实现 174

6.5.3 死锁与饥饿 176

6.6 经典同步问题 176

6.6.1 有限缓冲问题 177

6.6.2 读者-写者问题 177

6.6.3 哲学家进餐问题 179

6.7 管程 180

6.7.1 使用 181

6.7.2 哲学家进餐问题的管程解决方案 183

6.7.3 基于信号量的管程实现 183

6.7.4 管程内的进程重启 185

6.8 同步实例 187

6.8.1 Solaris同步 187

6.8.2 Windows XP同步 189

6.8.3 Linux同步 190

6.8.4 Pthread同步 191

6.9 原子事务 191

6.9.1 系统模型 192

6.9.2 基于日志的恢复 192

6.9.3 检查点 193

6.9.4 并发原子操作 194

6.10 小结 198

习题 198

项目:生产者-消费者问题 202

文献注记 207

第7章 死锁 209

7.1 系统模型 209

7.2 死锁特征 210

7.2.1 必要条件 211

7.2.2 资源分配图 212

7.3 死锁处理方法 214

7.4 死锁预防 215

7.4.1 互斥 216

7.4.2 占有并等待 216

7.4.3 非抢占 216

7.4.4 循环等待 217

7.5 死锁避免 218

7.5.1 安全状态 218

7.5.2 资源分配图算法 220

7.5.3 银行家算法 220

7.6 死锁检测 224

7.6.1 每种资源类型只有单个实例 224

7.6.2 每种资源类型可有多个实例 225

7.6.3 应用检测算法 226

7.7 死锁恢复 227

7.7.1 进程终止 227

7.7.2 资源抢占 227

7.8 小结 228

习题 229

文献注记 231

第三部分 内存管理 235

第8章 内存管理 235

8.1 背景 235

8.1.1 基本硬件 235

8.1.2 地址绑定 237

8.1.3 逻辑地址空间与物理地址空间 239

8.1.4 动态加载 240

8.1.5 动态链接与共享库 240

8.2 交换 241

8.3 连续内存分配 243

8.3.1 内存映射与保护 243

8.3.2 内存分配 244

8.3.3 碎片 245

8.4 分页 246

8.4.1 基本方法 246

8.4.2 硬件支持 250

8.4.3 保护 252

8.4.4 共享页 254

8.5 页表结构 255

8.5.1 层次页表 255

8.5.2 哈希页表 257

8.5.3 反向页表 258

8.6 分段 260

8.6.1 基本方法 260

8.6.2 硬件 261

8.7 实例:Intel Pentium 263

8.7.1 Pentium分段 263

8.7.2 Pentium分页 264

8.7.3 Pentium系统上的Linux 264

8.8 小结 266

习题 267

文献注记 269

第9章 虚拟内存 270

9.1 背景 270

9.2 按需调页 272

9.2.1 基本概念 273

9.2.2 按需调页的性能 276

9.3 写时复制 278

9.4 页面置换 280

9.4.1 基本页置换 281

9.4.2 FIFO页置换 284

9.4.3 最优置换 285

9.4.4 LRU页置换 286

9.4.5 近似LRU页置换 287

9.4.6 基于计数的页置换 289

9.4.7 页缓冲算法 290

9.4.8 应用程序与页置换 290

9.5 帧分配 291

9.5.1 帧的最少数量 291

9.5.2 分配算法 292

9.5.3 全局分配与局部分配 293

9.6 系统颠簸 293

9.6.1 系统颠簸的原因 294

9.6.2 工作集合模型 296

9.6.3 页错误频率 297

9.7 内存映射文件 298

9.7.1 基本机制 299

9.7.2 Win32 API中的共享内存 300

9.7.3 内存映射I/O 303

9.8 内核内存的分配 303

9.8.1 Buddy系统 303

9.8.2 slab分配 304

9.9 其他考虑 306

9.9.1 预调页 306

9.9.2 页大小 306

9.9.3 TLB范围 308

9.9.4 反向页表 308

9.9.5 程序结构 309

9.9.6 I/O互锁 310

9.10 操作系统实例 311

9.10.1 Windows XP 311

9.10.2 Solaris 312

9.11 小结 313

习题 314

文献注记 317

第四部分 存储管理 321

第10章 文件系统接口 321

10.1 文件概念 321

10.1.1 文件属性 322

10.1.2 文件操作 322

10.1.3 文件类型 326

10.1.4 文件结构 327

10.1.5 内部文件结构 328

10.2 访问方法 329

10.2.1 顺序访问 329

10.2.2 直接访问 329

10.2.3 其他访问方式 330

10.3 目录结构 331

10.3.1 存储结构 332

10.3.2 目录概述 332

10.3.3 单层结构目录 333

10.3.4 双层结构目录 333

10.3.5 树状结构目录 335

10.3.6 无环图目录 337

10.3.7 通用图目录 339

10.4 文件系统安装 340

10.5 文件共享 342

10.5.1 多用户 342

10.5.2 远程文件系统 342

10.5.3 一致性语义 345

10.6 保护 346

10.6.1 访问类型 346

10.6.2 访问控制 347

10.6.3 其他保护方式 349

10.7 小结 350

习题 351

文献注记 352

第11章 文件系统实现 353

11.1 文件系统结构 353

11.2 文件系统实现 355

11.2.1 概述 355

11.2.2 分区与安装 357

11.2.3 虚拟文件系统 358

11.3 目录实现 360

11.3.1 线性列表 360

11.3.2 哈希表 361

11.4 分配方法 361

11.4.1 连续分配 361

11.4.2 链接分配 363

11.4.3 索引分配 366

11.4.4 性能 368

11.5 空闲空间管理 369

11.5.1 位向量 369

11.5.2 链表 370

11.5.3 组 370

11.5.4 计数 371

11.6 效率与性能 371

11.6.1 效率 371

11.6.2 性能 372

11.7 恢复 374

11.7.1 一致性检查 374

11.7.2 备份和恢复 375

11.8 基于日志结构的文件系统 376

11.9 NFS 377

11.9.1 概述 377

11.9.2 安装协议 379

11.9.3 NFS协议 379

11.9.4 路径名转换 380

11.9.5 远程操作 381

11.10 实例:WAFL文件系统 382

11.11 小结 384

习题 384

文献注记 385

第12章 大容量存储器的结构 387

12.1 大容量存储器结构简介 387

12.1.1 磁盘 387

12.1.2 磁带 389

12.2 磁盘结构 389

12.3 磁盘附属 390

12.3.1 主机附属存储 390

12.3.2 网络附属存储 391

12.3.3 存储区域网络 391

12.4 磁盘调度 392

12.4.1 FCFS调度 393

12.4.2 SSTF调度 393

12.4.3 SCAN调度 394

12.4.4 C-SCAN调度 395

12.4.5 LOOK调度 396

12.4.6 磁盘调度算法的选择 396

12.5 磁盘管理 397

12.5.1 磁盘格式化 397

12.5.2 引导块 398

12.5.3 坏块 400

12.6 交换空间管理 401

12.6.1 交换空间的使用 401

12.6.2 交换空间位置 401

12.6.3 实例:交换空间管理 402

12.7 RAID结构 403

12.7.1 通过冗余改善可靠性 403

12.7.2 通过并行处理改善性能 404

12.7.3 RAID级别 405

12.7.4 RAID级别的选择 409

12.7.5 扩展 409

12.7.6 RAID的问题 410

12.8 稳定存储实现 410

12.9 三级存储结构 411

12.9.1 三级存储设备 411

12.9.2 操作系统支持 413

12.9.3 性能 416

12.10 小结 419

习题 421

文献注记 423

第13章 I/O输入系统 425

13.1 概述 425

13.2 I/O硬件 426

13.2.1 轮询 428

13.2.2 中断 429

13.2.3 直接内存访问 432

13.2.4 I/O硬件小结 434

13.3 I/O应用接口 434

13.3.1 块与字符设备 436

13.3.2 网络设备 437

13.3.3 时钟与定时器 437

13.3.4 阻塞与非阻塞I/O 438

13.4 I/O内核子系统 439

13.4.1 I/O调度 439

13.4.2 缓冲 440

13.4.3 高速缓存 442

13.4.4 假脱机与设备预留 442

13.4.5 错误处理 443

13.4.6 I/O保护 443

13.4.7 内核数据结构 444

13.4.8 内核I/O子系统小结 445

13.5 把I/O操作转换成硬件操作 445

13.6 流 448

13.7 性能 449

13.8 小结 452

习题 453

文献注记 453

第五部分 保护与安全 457

第14章 保护 457

14.1 保护目标 457

14.2 保护原则 458

14.3 保护域 459

14.3.1 域结构 459

14.3.2 实例:UNIX 461

14.3.3 实例:MULTICS 462

14.4 访问矩阵 463

14.5 访问矩阵的实现 467

14.5.1 全局表 467

14.5.2 对象的访问列表 467

14.5.3 域的权限列表 467

14.5.4 锁-钥匙机制 468

14.5.5 比较 468

14.6 访问控制 469

14.7 访问权限的撤回 470

14.8 面向权限的系统 472

14.8.1 实例:Hydra 472

14.8.2 实例:剑桥CAP系统 473

14.9 基于语言的保护 474

14.9.1 基于编译程序的强制 474

14.9.2 Java的保护 476

14.10 小结 478

习题 479

文献注记 480

第15章 安全 481

15.1 安全问题 481

15.2 程序威胁 484

15.2.1 特洛伊木马 484

15.2.2 后门 485

15.2.3 逻辑炸弹 486

15.2.4 栈和缓冲区溢出 486

15.2.5 病毒 489

15.3 系统和网络威胁 492

15.3.1 蠕虫 492

15.3.2 端口扫描 495

15.3.3 拒绝服务 495

15.4 作为安全工具的密码术 496

15.4.1 加密 497

15.4.2 密码术的实现 503

15.4.3 实例:SSL 504

15.5 用户验证 506

15.5.1 密码 506

15.5.2 密码脆弱的一面 506

15.5.3 密码加密 508

15.5.4 一次性密码 508

15.5.5 生物测定学 509

15.6 实现安全防御 510

15.6.1 安全策略 510

15.6.2 脆弱性评估 510

15.6.3 入侵检测 512

15.6.4 病毒防护 514

15.6.5 审计、会计和日志 516

15.7 保护系统和网络的防火墙 516

15.8 计算机安全分类 518

15.9 实例:Windows XP 519

15.10 小结 521

习题 521

文献注记 522

第六部分 分布式系统 527

第16章 分布式系统结构 527

16.1 动机 527

16.1.1 资源共享 527

16.1.2 加快计算速度 528

16.1.3 可靠性 528

16.1.4 通信 529

16.2 分布式操作系统的类型 529

16.2.1 网络操作系统 529

16.2.2 分布式操作系统 531

16.3 网络结构 533

16.3.1 局域网 533

16.3.2 广域网 534

16.4 网络拓扑结构 535

16.5 通信结构 537

16.5.1 命名和名字解析 537

16.5.2 路由策略 539

16.5.3 包策略 540

16.5.4 连接策略 541

16.5.5 竞争 541

16.6 通信协议 542

16.7 健壮性 545

16.7.1 故障检测 545

16.7.2 重构 545

16.7.3 故障恢复 546

16.8 设计事项 546

16.9 实例:连网 548

16.10 小结 550

习题 550

文献注记 551

第17章 分布式文件系统 552

17.1 背景 552

17.2 命名和透明性 553

17.2.1 命名结构 554

17.2.2 命名方案 555

17.2.3 实现技术 556

17.3 远程文件访问 556

17.3.1 基本的缓存设计 557

17.3.2 缓存位置 557

17.3.3 缓存更新策略 558

17.3.4 一致性 559

17.3.5 高速缓存和远程服务的比较 560

17.4 有状态服务和无状态服务 561

17.5 文件复制 563

17.6 实例:AFS 563

17.6.1 概述 564

17.6.2 共享名称空间 565

17.6.3 文件操作和一致性语义 566

17.6.4 实现 567

17.7 小结 568

习题 569

文献注记 569

第18章 分布式协调 571

18.1 事件排序 571

18.1.1 事前关系 571

18.1.2 实现 572

18.2 互斥 573

18.2.1 集中式算法 573

18.2.2 完全分布式的算法 574

18.2.3 令牌传递算法 575

18.3 原子性 575

18.3.1 两阶段提交协议 576

18.3.2 2PC中的错误处理 577

18.4 并发控制 578

18.4.1 加锁协议 578

18.4.2 时间戳 580

18.5 死锁处理 582

18.5.1 死锁预防和避免 582

18.5.2 死锁检测 583

18.6 选举算法 587

18.6.1 Bully算法 588

18.6.2 环算法 589

18.7 达成一致 590

18.7.1 不可靠通信 590

18.7.2 出错进程 591

18.8 小结 591

习题 592

文献注记 593

第七部分 特殊用途系统 597

第19章 实时系统 597

19.1 概述 597

19.2 系统特性 598

19.3 实时内核特性 599

19.4 实现实时操作系统 601

19.4.1 基于优先级的调度 602

19.4.2 抢占式内核 602

19.4.3 最小化延迟 602

19.5 实时CPU调度 605

19.5.1 单调速率调度 605

19.5.2 最早截止期限优先调度算法 607

19.5.3 按比例分享调度 608

19.5.4 Pthread调度 608

19.6 VxWorks 5.x 610

19.7 小结 612

习题 613

文献注记 613

第20章 多媒体系统 614

20.1 什么是多媒体 614

20.1.1 媒体传送 614

20.1.2 多媒体系统的特点 616

20.1.3 操作系统问题 616

20.2 压缩 616

20.3 多媒体内核的要求 618

20.4 CPU调度 620

20.5 磁盘调度 620

20.5.1 最早期限优先调度 621

20.5.2 SCAN-EDF调度 621

20.6 网络管理 622

20.6.1 单播和多播 623

20.6.2 实时流协议 623

20.7 实例:CineBlitz 626

20.7.1 磁盘调度 626

20.7.2 接纳控制 626

20.8 小结 628

习题 628

文献注记 629

第八部分 案例研究 633

第21章 Linux系统 633

21.1 Linux发展历程 633

21.1.1 Linux内核 634

21.1.2 Linux系统 636

21.1.3 Linux发行版 636

21.1.4 Linux许可 637

21.2 设计原则 637

21.3 内核模块 640

21.3.1 模块管理 640

21.3.2 驱动程序注册 641

21.3.3 冲突解决 642

21.4 进程管理 642

21.4.1 fork()和exec()进程模式 642

21.4.2 进程与线程 644

21.5 调度 645

21.5.1 进程调度 645

21.5.2 内核同步 647

21.5.3 对称多处理技术 649

21.6 内存管理 650

21.6.1 物理内存管理 650

21.6.2 虚拟内存 653

21.6.3 执行与装入用户程序 655

21.7 文件系统 657

21.7.1 虚拟文件系统 658

21.7.2 Linux ext2fs文件系统 659

21.7.3 日志 661

21.7.4 Linux进程文件系统 662

21.8 输入与输出 663

21.8.1 块设备 664

21.8.2 字符设备 665

21.9 进程间通信 665

21.9.1 同步与信号 665

21.9.2 进程间数据传输 666

21.10 网络结构 666

21.11 安全 668

21.11.1 认证 669

21.11.2 访问控制 669

21.12 小结 670

习题 671

文献注记 672

第22章 Windows XP 673

22.1 历史 673

22.2 设计原则 674

22.2.1 安全性 675

22.2.2 可靠性 675

22.2.3 Windows和POSIX应用程序的兼容性 675

22.2.4 高性能 676

22.2.5 可扩展性 676

22.2.6 可移植性 676

22.2.7 国际支持 677

22.3 系统组件 677

22.3.1 硬件抽象层 677

22.3.2 内核 678

22.3.3 执行体 682

22.4 环境子系统 697

22.4.1 MS-DOS环境 698

22.4.2 16位Windows环境 699

22.4.3 IA64上的32位Windows环境 699

22.4.4 Win32环境 699

22.4.5 POSIX子系统 700

22.4.6 登录与安全子系统 700

22.5 文件系统 701

22.5.1 NTFS内部布局 701

22.5.2 恢复 703

22.5.3 安全 704

22.5.4 卷管理和容错 704

22.5.5 压缩与加密 707

22.5.6 安装点 708

22.5.7 变更日志 708

22.5.8 卷影子副本 708

22.6 网络 708

22.6.1 网络接口 709

22.6.2 协议 709

22.6.3 分布式处理机制 710

22.6.4 重定向器与服务器 712

22.6.5 域 713

22.6.6 活动目录 714

22.6.7 TCP/IP网络的名称解析 714

22.7 程序接口 715

22.7.1 访问内核对象 715

22.7.2 进程间共享对象 715

22.7.3 进程管理 717

22.7.4 进程间通信 719

22.7.5 内存管理 720

22.8 小结 722

习题 722

文献注记 723

第23章 有影响的操作系统 724

23.1 早期系统 724

23.1.1 专用计算机系统 724

23.1.2 共享计算机系统 725

23.1.3 I/O叠加 728

23.2 Atlas 730

23.3 XDS-940 731

23.4 THE 731

23.5 RC4000 732

23.6 CTSS 733

23.7 MULTICS 733

23.8 IBM OS/360 734

23.9 Mach 735

23.10 其他系统 737

习题 737

参考文献 738

原版相关内容引用表 763

英汉名词对照表 764