《操作系统概念 Java实现》PDF下载

  • 购买积分:23 如何计算积分?
  • 作  者:(美)Abraham Silberschatz,(美)Peter Baer Galvin,(美)Greg Gagne著
  • 出 版 社:北京:高等教育出版社
  • 出版年份:2010
  • ISBN:9787040283402
  • 页数:853 页
图书介绍:本书为操作系统概念的JAVA版本,讨论了操作系统中的基本概念和算法,并对大量实例(如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 计算机系统体系结构 11

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 保护和安全 24

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章 操作系统结构 35

2.1 操作系统服务 35

2.2 操作系统的用户界面 37

2.2.1 命令解释程序 37

2.2.2 图形用户界面 37

2.2.3 界面选择 38

2.3 系统调用 38

2.4 系统调用类型 42

2.4.1 进程控制 42

2.4.2 文件管理 46

2.4.3 设备管理 47

2.4.4 信息维护 47

2.4.5 通信 48

2.5 系统程序 48

2.6 操作系统设计和实现 49

2.6.1 设计目标 49

2.6.2 机制与策略 50

2.6.3 实现 50

2.7 操作系统结构 51

2.7.1 简单结构 51

2.7.2 分层法 52

2.7.3 微内核 54

2.7.4 模块 55

2.8 虚拟机 56

2.8.1 实现 58

2.8.2 优点 58

2.8.3 实例:VMware 59

2.9 Java 60

2.9.1 Java编程语言 60

2.9.2 Java API 60

2.9.3 Java虚拟机 60

2.9.4 Java开发环境 61

2.9.5 Java操作系统 62

2.10 操作系统生成 64

2.11 系统启动 65

2.12 小结 66

习题 67

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

文献注记 71

第二部分 进程管理 75

第3章 进程 75

3.1 进程概念 75

3.1.1 进程 75

3.1.2 进程状态 76

3.1.3 进程控制块 77

3.1.4 线程 77

3.2 进程调度 78

3.2.1 调度队列 78

3.2.2 调度程序 81

3.2.3 上下文切换 82

3.3 进程操作 83

3.3.1 进程创建 83

3.3.2 进程终止 87

3.4 进程间通信 89

3.4.1 共享内存系统 90

3.4.2 消息传递系统 93

3.5 IPC系统的实例 97

3.5.1 Mach 97

3.5.2 Windows XP 99

3.6 客户机-服务器通信 100

3.6.1 套接字 100

3.6.2 远程过程调用 103

3.6.3 远程方法调用 106

3.7 小结 110

习题 111

项目:创建一个shell接口 113

文献注记 115

第4章 线程 117

4.1 概述 117

4.1.1 动机 117

4.1.2 优点 118

4.2 多线程模型 119

4.2.1 多对一模型 119

4.2.2 一对一模型 120

4.2.3 多对多模型 120

4.3 线程库 121

4.3.1 Pthread 122

4.3.2 Win32线程 123

4.4 Java线程 125

4.4.1 Java线程状态 127

4.4.2 JVM和宿主操作系统 128

4.4.3 生产者-消费者问题的多线程解决方案 128

4.5 多线程问题 130

4.5.1 系统调用fork()和exec() 130

4.5.2 取消 131

4.5.3 信号处理 132

4.5.4 线程池 134

4.5.5 线程特定数据 136

4.5.6 调度程序激活 137

4.6 操作系统实例 138

4.6.1 Windows XP线程 138

4.6.2 Linux线程 140

4.7 小结 140

习题 141

项目:矩阵乘法 143

文献注记 146

第5章 CPU调度 147

5.1 基本概念 147

5.1.1 CPU-I/O区间周期 147

5.1.2 CPU调度程序 148

5.1.3 抢占调度 148

5.1.4 分派程序 149

5.2 调度准则 150

5.3 调度算法 151

5.3.1 先到先服务调度 151

5.3.2 最短作业优先调度 152

5.3.3 优先级调度 154

5.3.4 轮转调度 155

5.3.5 多级队列调度 158

5.3.6 多级反馈队列调度 159

5.4 多处理器调度 161

5.4.1 多处理器调度的方法 161

5.4.2 处理器亲和性 161

5.4.3 负载平衡 162

5.4.4 对称多线程 162

5.5 线程调度 163

5.5.1 竞争范围 163

5.5.2 Pthread调度 164

5.6 操作系统实例 166

5.6.1 Solaris调度 166

5.6.2 Windows XP调度 168

5.6.3 Linux调度 170

5.7 Java调度 171

5.7.1 线程优先级 172

5.7.2 Solaris上的Java线程调度 174

5.8 算法评估 175

5.8.1 确定性建模 175

5.8.2 排队模型 177

5.8.3 模拟 177

5.8.4 实现 178

5.9 小结 179

习题 180

文献注记 182

第6章 进程同步 183

6.1 背景 183

6.2 临界区问题 185

6.3 Peterson算法 186

6.4 硬件同步 187

6.5 信号量 190

6.5.1 用法 190

6.5.2 实现 192

6.5.3 死锁与饥饿 194

6.6 经典同步问题 194

6.6.1 有限缓冲问题 194

6.6.2 读者-写者问题 197

6.6.3 哲学家进餐问题 202

6.7 管程 203

6.7.1 使用 204

6.7.2 哲学家就餐问题的管程解决方案 206

6.8 Java同步 208

6.8.1 有限缓冲区 208

6.8.2 多重通知 213

6.8.3 读者-写者问题 214

6.8.4 块同步 216

6.8.5 同步规则 217

6.8.6 处理InterruptedException 218

6.8.7 Java并发特性 218

6.9 同步实例 221

6.9.1 Solaris同步 222

6.9.2 Windows XP同步 223

6.9.3 Linux同步 224

6.9.4 Pthread同步 224

6.10 原子事务 225

6.10.1 系统模型 225

6.10.2 基于日志的恢复 226

6.10.3 检查点 227

6.10.4 并发原子操作 227

6.11 小结 231

习题 232

文献注记 238

第7章 死锁 240

7.1 系统模型 240

7.2 死锁特征 242

7.2.1 必要条件 242

7.2.2 资源分配图 242

7.3 死锁处理方法 246

7.3.1 三种主要方法 246

7.3.2 Java中的死锁处理 247

7.4 死锁预防 250

7.4.1 互斥 250

7.4.2 占有并等待 250

7.4.3 非抢占 251

7.4.4 循环等待 251

7.5 死锁避免 252

7.5.1 安全状态 253

7.5.2 资源分配图算法 254

7.5.3 银行家算法 255

7.6 死锁检测 258

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

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

7.6.3 应用检测算法 260

7.7 死锁恢复 261

7.7.1 进程终止 261

7.7.2 资源抢占 262

7.8 小结 262

习题 263

项目:银行家算法 265

文献注记 267

第三部分 内存管理 271

第8章 内存管理 271

8.1 背景 271

8.1.1 基本硬件 271

8.1.2 地址绑定 273

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

8.1.4 动态加载 276

8.1.5 动态链接与共享库 276

8.2 交换 277

8.3 连续内存分配 279

8.3.1 内存映射与保护 279

8.3.2 内存分配 280

8.3.3 碎片 281

8.4 分页 282

8.4.1 基本方法 283

8.4.2 硬件支持 287

8.4.3 保护 289

8.4.4 共享页 290

8.5 页表结构 291

8.5.1 层次页表 292

8.5.2 哈希页表 294

8.5.3 反向页表 295

8.6 分段 296

8.6.1 基本方法 296

8.6.2 硬件 298

8.7 实例:Intel Pentium 299

8.7.1 Pentium分段 300

8.7.2 Pentium分页 300

8.7.3 Pentium系统上的Linux 302

8.8 小结 303

习题 304

文献注记 305

第9章 虚拟内存 307

9.1 背景 307

9.2 按需调页 310

9.2.1 基本概念 310

9.2.2 按需调页的性能 314

9.3 写时复制 316

9.4 页面置换 317

9.4.1 基本页置换 318

9.4.2 FIFO页置换 321

9.4.3 最优置换 322

9.4.4 LRU页置换 323

9.4.5 近似LRU页置换 325

9.4.6 基于计数的页置换 327

9.4.7 页缓冲算法 327

9.4.8 应用程序与页置换 328

9.5 帧分配 328

9.5.1 帧的最少数量 328

9.5.2 分配算法 329

9.5.3 全局分配与局部分配 330

9.6 系统颠簸 331

9.6.1 系统颠簸的原因 331

9.6.2 工作集合模型 334

9.6.3 页错误频率 335

9.7 内存映射文件 336

9.7.1 基本机制 336

9.7.2 Java中的内存映射文件 338

9.7.3 内存映射I/O 339

9.8 内核内存的分配 340

9.8.1 Buddy系统 340

9.8.2 slab分配 341

9.9 其他考虑 343

9.9.1 预调页 343

9.9.2 页大小 343

9.9.3 TLB范围 344

9.9.4 反向页表 345

9.9.5 程序结构 345

9.9.6 I/O互锁 346

9.10 操作系统实例 348

9.10.1 Windows XP 348

9.10.2 Solaris 349

9.11 小结 350

习题 351

文献注记 354

第四部分 存储管理 357

第10章 文件系统接口 357

10.1 文件概念 357

10.1.1 文件属性 358

10.1.2 文件操作 358

10.1.3 打开与关闭文件 359

10.1.4 文件类型 360

10.1.5 文件结构 362

10.1.6 内部文件结构 363

10.1.7 文件加锁 363

10.2 访问方法 365

10.2.1 顺序访问 365

10.2.2 直接访问 365

10.2.3 其他访问方式 366

10.3 目录结构 367

10.3.1 存储结构 368

10.3.2 目录概述 368

10.3.3 单层结构目录 369

10.3.4 双层结构目录 369

10.3.5 树状结构目录 371

10.3.6 无环图目录 373

10.3.7 通用图目录 375

10.4 文件系统安装 376

10.5 文件共享 378

10.5.1 多用户 378

10.5.2 远程文件系统 379

10.5.3 一致性语义 382

10.6 保护 383

10.6.1 访问类型 383

10.6.2 访问控制 384

10.6.3 其他保护方式 386

10.7 小结 387

习题 388

文献注记 388

第11章 文件系统实现 390

11.1 文件系统结构 390

11.2 文件系统实现 392

11.2.1 概述 392

11.2.2 分区与安装 394

11.2.3 虚拟文件系统 395

11.3 目录实现 397

11.3.1 线性列表 397

11.3.2 哈希表 397

11.4 分配方法 398

11.4.1 连续分配 398

11.4.2 链接分配 400

11.4.3 索引分配 402

11.4.4 性能 405

11.5 空闲空间管理 406

11.5.1 位向量 406

11.5.2 链表 407

11.5.3 组 407

11.5.4 计数 408

11.6 效率与性能 408

11.6.1 效率 408

11.6.2 性能 409

11.7 恢复 411

11.7.1 一致性检查 411

11.7.2 备份和恢复 412

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

11.9 NFS 414

11.9.1 概述 414

11.9.2 安装协议 416

11.9.3 NFS协议 416

11.9.4 路径名转换 417

11.9.5 远程操作 418

11.10 实例:WAFL文件系统 419

11.11 小结 421

习题 421

项目:设计一个文件系统 422

文献注记 428

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

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

12.1.1 磁盘 429

12.1.2 磁带 431

12.2 磁盘结构 431

12.3 磁盘附属 432

12.3.1 主机附属存储 432

12.3.2 网络附属存储 433

12.3.3 存储区域网络 433

12.4 磁盘调度 434

12.4.1 FCFS调度 435

12.4.2 SSTF调度 435

12.4.3 SCAN调度 436

12.4.4 C-SCAN调度 437

12.4.5 LOOK调度 437

12.4.6 磁盘调度算法的选择 438

12.5 磁盘管理 439

12.5.1 磁盘格式化 440

12.5.2 引导块 441

12.5.3 坏块 442

12.6 交换空间管理 443

12.6.1 交换空间的使用 443

12.6.2 交换空间位置 443

12.6.3 实例:交换空间管理 444

12.7 RAID结构 445

12.7.1 通过冗余改善可靠性 445

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

12.7.3 RAID级别 447

12.7.4 RAID级别的选择 451

12.7.5 扩展 451

12.7.6 RAID的问题 452

12.8 稳定存储实现 452

12.9 第三级存储结构 453

12.9.1 第三级存储设备 454

12.9.2 操作系统支持 456

12.9.3 性能 458

12.10 小结 462

习题 463

文献注记 466

第13章 I/O输入系统 468

13.1 概述 468

13.2 I/O硬件 469

13.2.1 轮询 471

13.2.2 中断 472

13.2.3 直接内存访问 475

13.2.4 I/O硬件小结 476

13.3 I/O应用接口 477

13.3.1 块与字符设备 479

13.3.2 网络设备 480

13.3.3 时钟与定时器 480

13.3.4 阻塞与非阻塞I/O 481

13.4 I/O内核子系统 482

13.4.1 I/O调度 482

13.4.2 缓冲 483

13.4.3 高速缓存 484

13.4.4 假脱机与设备预留 485

13.4.5 错误处理 485

13.4.6 I/O保护 486

13.4.7 内核数据结构 487

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

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

13.6 流 490

13.7 性能 492

13.8 小结 494

习题 495

文献注记 496

第五部分 保护与安全 499

第14章 保护 499

14.1 保护目标 499

14.2 保护原则 500

14.3 保护域 501

14.3.1 域结构 501

14.3.2 实例:UNIX 503

14.3.3 实例:MULTICS 504

14.4 访问矩阵 505

14.5 访问矩阵的实现 509

14.5.1 全局表 509

14.5.2 对象的访问列表 509

14.5.3 域的权限列表 509

14.5.4 锁-钥匙机制 510

14.5.5 比较 510

14.6 访问控制 511

14.7 访问权限的撤回 512

14.8 面向权限的系统 514

14.8.1 实例:Hydra 514

14.8.2 实例:剑桥CAP系统 515

14.9 基于语言的保护 516

14.9.1 基于编译程序的强制 516

14.9.2 Java的保护 518

14.10 小结 521

习题 521

文献注记 522

第15章 安全 523

15.1 安全问题 523

15.2 程序威胁 526

15.2.1 特洛伊木马 526

15.2.2 后门 527

15.2.3 逻辑炸弹 528

15.2.4 栈和缓冲区溢出 528

15.2.5 病毒 531

15.3 系统和网络威胁 534

15.3.1 蠕虫 534

15.3.2 端口扫描 537

15.3.3 拒绝服务 538

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

15.4.1 加密 540

15.4.2 密码术的实现 545

15.4.3 实例:SSL 547

15.5 用户验证 549

15.5.1 密码 549

15.5.2 密码脆弱的一面 549

15.5.3 密码加密 551

15.5.4 一次性密码 551

15.5.5 生物测定学 552

15.6 实现安全防御 553

15.6.1 安全策略 553

15.6.2 脆弱性评估 553

15.6.3 入侵检测 555

15.6.4 病毒防护 557

15.6.5 审计、会计和日志 559

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

15.8 计算机安全分类 561

15.9 实例:Windows XP 562

15.10 小结 564

习题 565

文献注记 565

第六部分 分布式系统 571

第16章 分布式系统结构 571

16.1 动机 571

16.1.1 资源共享 571

16.1.2 加快计算速度 572

16.1.3 可靠性 572

16.1.4 通信 573

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

16.2.1 网络操作系统 573

16.2.2 分布式操作系统 575

16.3 网络结构 577

16.3.1 局域网 577

16.3.2 广域网 578

16.4 网络拓扑结构 579

16.5 通信结构 581

16.5.1 命名和名字解析 581

16.5.2 路由策略 583

16.5.3 包策略 584

16.5.4 连接策略 585

16.5.5 竞争 585

16.6 通信协议 586

16.7 稳健性 589

16.7.1 故障检测 589

16.7.2 重构 590

16.7.3 故障恢复 590

16.8 设计事项 590

16.9 实例:连网 592

16.10 小结 594

习题 594

项目:设计一个Web服务器 595

文献注记 599

第17章 分布式文件系统 601

17.1 背景 601

17.2 命名和透明性 602

17.2.1 命名结构 603

17.2.2 命名方案 604

17.2.3 实现技术 605

17.3 远程文件访问 605

17.3.1 基本的缓存设计 606

17.3.2 缓存位置 606

17.3.3 缓存更新策略 607

17.3.4 一致性 608

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

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

17.5 文件复制 612

17.6 实例:AFS 612

17.6.1 概述 613

17.6.2 共享名称空间 614

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

17.6.4 实现 616

17.7 小结 617

习题 618

文献注记 618

第18章 分布式协调 619

18.1 事件排序 619

18.1.1 事前关系 619

18.1.2 实现 620

18.2 互斥 621

18.2.1 集中式算法 621

18.2.2 完全分布式的算法 622

18.2.3 令牌传递算法 623

18.3 原子性 624

18.3.1 两阶段提交协议 624

18.3.2 2PC中的错误处理 625

18.4 并发控制 626

18.4.1 加锁协议 627

18.4.2 时间戳 629

18.5 死锁处理 630

18.5.1 死锁预防和避免 630

18.5.2 死锁检测 631

18.6 选举算法 636

18.6.1 Bully算法 636

18.6.2 环算法 637

18.7 达成一致 638

18.7.1 不可靠通信 638

18.7.2 出错进程 639

18.8 小结 640

习题 640

文献注记 641

第七部分 特殊用途系统 645

第19章 实时系统 645

19.1 概述 645

19.2 系统特性 646

19.3 实时内核特性 647

19.4 实现实时操作系统 649

19.4.1 基于优先级的调度 649

19.4.2 抢占式内核 650

19.4.3 最小化延迟 650

19.5 实时CPU调度 652

19.5.1 单调速率调度 653

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

19.5.3 按比例分享调度 656

19.5.4 Pthread调度 656

19.6 VxWorks 5.x 657

19.7 小结 659

习题 660

文献注记 660

第20章 多媒体系统 661

20.1 什么是多媒体 661

20.1.1 媒体传送 661

20.1.2 多媒体系统的特点 663

20.1.3 操作系统问题 663

20.2 压缩 664

20.3 多媒体内核的要求 665

20.4 CPU调度 667

20.5 磁盘调度 668

20.5.1 最早期限优先调度 668

20.5.2 SCAN-EDF调度 668

20.6 网络管理 669

20.6.1 单播和多播 670

20.6.2 实时流协议 671

20.7 实例:CineBlitz 673

20.7.1 磁盘调度 673

20.7.2 接纳控制 673

20.8 小结 675

习题 675

文献注记 676

第八部分 案例研究 679

第21章 Linux系统 679

21.1 Linux发展历程 679

21.1.1 Linux内核 680

21.1.2 Linux系统 682

21.1.3 Linux发行版 682

21.1.4 Linux许可 683

21.2 设计原则 683

21.2.1 Linux系统的组件 684

21.3 内核模块 686

21.3.1 模块管理 686

21.3.2 驱动程序注册 687

21.3.3 冲突解决 688

21.4 进程管理 688

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

21.4.2 进程与线程 691

21.5 调度 691

21.5.1 进程调度 691

21.5.2 内核同步 693

21.5.3 对称多处理技术 695

21.6 内存管理 696

21.6.1 物理内存管理 696

21.6.2 虚拟内存 699

21.6.3 执行与装入用户程序 701

21.7 文件系统 703

21.7.1 虚拟文件系统 704

21.7.2 Linux ext2fs文件系统 705

21.7.3 日志 707

21.7.4 Linux进程文件系统 708

21.8 输入与输出 709

21.8.1 块设备 710

21.8.2 字符设备 711

21.9 进程间通信 711

21.9.1 同步与信号 711

21.9.2 进程间数据传输 712

21.10 网络结构 712

21.11 安全 714

21.11.1 认证 715

21.11.2 访问控制 715

21.12 小结 716

习题 717

文献注记 718

第22章 Windows XP 719

22.1 历史 719

22.2 设计原则 720

22.2.1 安全性 721

22.2.2 可靠性 721

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

22.2.4 高性能 721

22.2.5 可扩展性 722

22.2.6 可移植性 722

22.2.7 国际支持 723

22.3 系统组件 723

22.3.1 硬件抽象层 723

22.3.2 内核 724

22.3.3 执行体 728

22.4 环境子系统 744

22.4.1 MS-DOS环境 744

22.4.2 16位Windows环境 745

22.4.3 IA64上的32位Windows环境 745

22.4.4 Win32环境 746

22.4.5 POSIX子系统 746

22.4.6 登录与安全子系统 747

22.5 文件系统 747

22.5.1 NTFS内部布局 747

22.5.2 恢复 749

22.5.3 安全 750

22.5.4 卷管理和容错 750

22.5.5 压缩与加密 753

22.5.6 安装点 754

22.5.7 变更日志 754

22.5.8 卷影子副本 754

22.6 网络 755

22.6.1 网络接口 755

22.6.2 协议 755

22.6.3 分布式处理机制 757

22.6.4 重定向器与服务器 758

22.6.5 域 759

22.6.6 活动目录 760

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

22.7 程序接口 761

22.7.1 访问内核对象 761

22.7.2 进程间共享对象 761

22.7.3 进程管理 763

22.7.4 进程间通信 765

22.7.5 内存管理 766

22.8 小结 768

习题 768

文献注记 768

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

23.1 早期系统 770

23.1.1 专用计算机系统 770

23.1.2 共享计算机系统 771

23.1.3 I/O叠加 774

23.2 Atlas 776

23.3 XDS-940 776

23.4 THE 777

23.5 RC4000 778

23.6 CTSS 779

23.7 MULTICS 779

23.8 IBM OS/360 780

23.9 Mach 781

23.10 其他系统 782

习题 783

参考文献 784

原版相关内容引用表 809

英汉名词对照表 810