《现代操作系统 原书第4版》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:(荷)安德鲁S.塔嫩鲍姆,(荷)赫伯特·博斯著;陈向群,马洪兵等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2017
  • ISBN:7111573692
  • 页数:610 页
图书介绍:Andrew S. Tanenbaum教授编写的教材《现代操作系统》现在已经是第4版了。第4版在保持原有特色的基础上,又增添了许多新的内容,反映了当代操作系统的发展与动向,并不断地与时俱进。 对比第3版,第4版有很多变化。一些是教材中多处可见的细微变化,一些是就某一功能或机制增加了对最新技术的介绍,如增加了futex同步原语、读–复制–更新(Read-Copy-Update)机制以及6级RAID的内容。另外一些则是重大变化,例如:用Windows 8替换了Vista的内容;用相当大的篇幅介绍了移动终端应用最广泛、发展最快的Android,以替换原来Symbian的内容;增加了新的一章,介绍目前最流行的虚拟化和云技术,其中还包括典型案例VMware。很多章节在内容安排上也有较大的改动,例如:第8章对多处理机系统的内容进行了大幅更新;第9章对安全的内容进...

第1章 引论 1

1.1什么是操作系统 2

1.1.1作为扩展机器的操作系统 2

1.1.2作为资源管理者的操作系统 3

1.2操作系统的历史 4

1.2.1第一代(1945~1955):真空管和穿孔卡片 4

1.2.2第二代(1955~1965):晶体管和批处理系统 4

1.2.3第三代(1965~1980):集成电路和多道程序设计 6

1.2.4第四代( 1980年至今):个人计算机 8

1.2.5第五代(1990年至今):移动计算机 10

1.3计算机硬件简介 11

1.3.1处理器 12

1.3.2存储器 14

1.3.3磁盘 15

1.3.4 I/O设备 16

1.3.5总线 18

1.3.6启动计算机 19

1.4操作系统大观园 20

1.4.1大型机操作系统 20

1.4.2服务器操作系统 20

1.4.3多处理器操作系统 20

1.4.4个人计算机操作系统 20

1.4.5掌上计算机操作系统 21

1.4.6嵌入式操作系统 21

1.4.7传感器节点操作系统 21

1.4.8实时操作系统 21

1.4.9智能卡操作系统 21

1.5操作系统概念 22

1.5.1进程 22

1.5.2地址空间 23

1.5.3文件 23

1.5.4输入/输出 25

1.5.5保护 25

1.5.6 shell 25

1.5.7个体重复系统发育 26

1.6系统调用 28

1.6.1用于进程管理的系统调用 31

1.6.2用于文件管理的系统调用 32

1.6.3用于目录管理的系统调用 32

1.6.4各种系统调用 34

1.6.5 Windows Win32 API 34

1.7操作系统结构 35

1.7.1单体系统 36

1.7.2层次式系统 36

1.7.3微内核 37

1.7.4客户端-服务器模式 38

1.7.5虚拟机 39

1.7.6外核 41

1.8依靠C的世界 41

1.8.1 C语言 41

1.8.2头文件 41

1.8.3大型编程项目 43

1.8.4运行模型 43

1.9有关操作系统的研究 44

1.10本书其他部分概要 45

1.11公制单位 45

1.12小结 46

习题 46

第2章 进程与线程 48

2.1进程 48

2.1.1进程模型 48

2.1.2进程的创建 49

2.1.3进程的终止 51

2.1.4进程的层次结构 51

2.1.5进程的状态 51

2.1.6进程的实现 53

2.1.7多道程序设计模型 54

2.2线程 54

2.2.1线程的使用 54

2.2.2经典的线程模型 57

2.2.3 POSIX线程 60

2.2.4在用户空间中实现线程 60

2.2.5在内核中实现线程 63

2.2.6混合实现 63

2.2.7调度程序激活机制 64

2.2.8弹出式线程 64

2.2.9使单线程代码多线程化 65

2.3进程间通信 67

2.3.1竞争条件 67

2.3.2临界区 68

2.3.3忙等待的互斥 68

2.3.4睡眠与唤醒 71

2.3.5信号量 73

2.3.6互斥量 74

2.3.7管程 78

2.3.8消息传递 81

2.3.9屏障 82

2.3.10避免锁:读-复制-更新 83

2.4调度 84

2.4.1调度简介 84

2.4.2批处理系统中的调度 88

2.4.3交互式系统中的调度 89

2.4.4实时系统中的调度 92

2.4.5策略和机制 93

2.4.6线程调度 93

2.5经典的IPC问题 94

2.5.1哲学家就餐问题 94

2.5.2读者-写者问题 96

2.6有关进程与线程的研究 97

2.7小结 97

习题 98

第3章 内存管理 102

3.1无存储器抽象 102

3.2一种存储器抽象:地址空间 104

3.2.1地址空间的概念 104

3.2.2交换技术 106

3.2.3空闲内存管理 107

3.3虚拟内存 109

3.3.1分页 110

3.3.2页表 112

3.3.3加速分页过程 112

3.3.4针对大内存的页表 114

3.4页面置换算法 117

3.4.1最优页面置换算法 117

3.4.2最近未使用页面置换算法 118

3.4.3先进先出页面置换算法 118

3.4.4第二次机会页面置换算法 118

3.4.5时钟页面置换算法 119

3.4.6最近最少使用页面置换算法 119

3.4.7用软件模拟LRU 120

3.4.8工作集页面置换算法 121

3.4.9工作集时钟页面置换算法 123

3.4.10页面置换算法小结 124

3.5分页系统中的设计问题 124

3.5.1局部分配策略与全局分配策略 124

3.5.2负载控制 126

3.5.3页面大小 126

3.5.4分离的指令空间和数据空间 127

3.5.5共享页面 128

3.5.6共享库 128

3.5.7内存映射文件 130

3.5.8清除策略 130

3.5.9虚拟内存接口 130

3.6有关实现的问题 131

3.6.1与分页有关的工作 131

3.6.2缺页中断处理 131

3.6.3指令备份 132

3.6.4锁定内存中的页面 132

3.6.5后备存储 133

3.6.6策略和机制的分离 134

3.7分段 134

3.7.1纯分段的实现 136

3.7.2分段和分页结合:MULTICS 136

3.7.3分段和分页结合:Intel x86 138

3.8有关内存管理的研究 141

3.9小结 141

习题 142

第4章 文件系统 147

4.1文件 148

4.1.1文件命名 148

4.1.2文件结构 149

4.1.3文件类型 149

4.1.4文件访问 151

4.1.5文件属性 151

4.1.6文件操作 152

4.1.7使用文件系统调用的一个示例程序 152

4.2目录 154

4.2.1一级目录系统 154

4.2.2层次目录系统 154

4.2.3路径名 154

4.2.4目录操作 156

4.3文件系统的实现 157

4.3.1文件系统布局 157

4.3.2文件的实现 157

4.3.3目录的实现 160

4.3.4共享文件 162

4.3.5日志结构文件系统 163

4.3.6日志文件系统 164

4.3.7虚拟文件系统 165

4.4文件系统管理和优化 167

4.4.1磁盘空间管理 167

4.4.2文件系统备份 171

4.4.3文件系统的一致性 174

4.4.4文件系统性能 176

4.4.5磁盘碎片整理 178

4.5文件系统实例 179

4.5.1 MS-DOS文件系统 179

4.5.2 UNIX V7文件系统 181

4.5.3 CD-ROM文件系统 182

4.6有关文件系统的研究 185

4.7小结 185

习题 186

第5章 输入/输出 189

5.1 I/O硬件原理 189

5.1.1 I/O设备 189

5.1.2设备控制器 190

5.1.3内存映射I/O 190

5.1.4直接存储器存取 192

5.1.5重温中断 194

5.2 I/O软件原理 196

5.2.1 I/O软件的目标 196

5.2.2程序控制I/O 197

5.2.3中断驱动I/O 198

5.2.4使用DMA的I/O 199

5.3 I/O软件层次 199

5.3.1中断处理程序 199

5.3.2设备驱动程序 200

5.3.3与设备无关的I/O软件 202

5.3.4用户空间的I/O软件 205

5.4盘 206

5.4.1盘的硬件 206

5.4.2磁盘格式化 211

5.4.3磁盘臂调度算法 213

5.4.4错误处理 215

5.4.5稳定存储器 216

5.5时钟 218

5.5.1时钟硬件 218

5.5.2时钟软件 219

5.5.3软定时器 221

5.6用户界面:键盘、鼠标和监视器 222

5.6.1输入软件 222

5.6.2输出软件 225

5.7瘦客户机 235

5.8电源管理 236

5.8.1硬件问题 236

5.8.2操作系统问题 237

5.8.3应用程序问题 241

5.9有关输入/输出的研究 241

5.10小结 242

习题 243

第6章 死锁 247

6.1资源 247

6.1.1可抢占资源和不可抢占资源 247

6.1.2资源获取 248

6.2死锁简介 249

6.2.1资源死锁的条件 249

6.2.2死锁建模 249

6.3鸵鸟算法 251

6.4死锁检测和死锁恢复 251

6.4.1每种类型一个资源的死锁检测 252

6.4.2每种类型多个资源的死锁检测 253

6.4.3从死锁中恢复 254

6.5死锁避免 255

6.5.1资源轨迹图 255

6.5.2安全状态和不安全状态 256

6.5.3单个资源的银行家算法 257

6.5.4多个资源的银行家算法 257

6.6死锁预防 258

6.6.1破坏互斥条件 258

6.6.2破坏占有并等待条件 259

6.6.3破坏不可抢占条件 259

6.6.4破坏环路等待条件 259

6.7其他问题 260

6.7.1两阶段加锁 260

6.7.2通信死锁 260

6.7.3活锁 261

6.7.4饥饿 262

6.8有关死锁的研究 262

6.9小结 263

习题 263

第7章 虚拟化和云 267

7.1历史 268

7.2虚拟化的必要条件 268

7.3第一类和第二类虚拟机管理程序 270

7.4高效虚拟化技术 271

7.4.1在不支持虚拟化的平台上实现虚拟化 271

7.4.2虚拟化的开销 273

7.5虚拟机管理程序是正确的微内核吗 273

7.6内存虚拟化 275

7.7 I/O虚拟化 277

7.8虚拟装置 279

7.9多核CPU上的虚拟机 279

7.10授权问题 279

7.11云 280

7.11.1云即服务 280

7.11.2虚拟机迁移 280

7.11.3检查点 281

7.12案例研究:VMware 281

7.12.1 VMware的早期历史 281

7.12.2 VMware Workstation 282

7.12.3将虚拟化引入x86的挑战 282

7.12.4 VMware Workstation解决方案概览 283

7.12.5 VMware Workstation的演变 288

7.12.6 VMware的第一类虚拟机管理程序ESX Server 288

7.13有关虚拟化和云的研究 289

习题 289

第8章 多处理机系统 291

8.1多处理机 292

8.1.1多处理机硬件 292

8.1.2多处理机操作系统类型 298

8.1.3多处理机同步 301

8.1.4多处理机调度 303

8.2多计算机 306

8.2.1多计算机硬件 307

8.2.2低层通信软件 309

8.2.3用户层通信软件 311

8.2.4远程过程调用 313

8.2.5分布式共享存储器 314

8.2.6多计算机调度 317

8.2.7负载平衡 318

8.3分布式系统 319

8.3.1网络硬件 321

8.3.2网络服务和协议 323

8.3.3基于文档的中间件 325

8.3.4基于文件系统的中间件 326

8.3.5基于对象的中间件 329

8.3.6基于协作的中间件 330

8.4有关多处理机系统的研究 332

8.5小结 332

习题 333

第9章 安全 336

9.1环境安全 337

9.1.1威胁 337

9.1.2入侵者 339

9.2操作系统完全 339

9.2.1可信系统 339

9.2.2可信计算基 340

9.3保护机制 341

9.3.1保护域 341

9.3.2访问控制列表 342

9.3.3权能字 344

9.4安全系统的形式化模型 345

9.4.1多级安全 346

9.4.2隐蔽信道 348

9.5密码学原理 350

9.5.1私钥加密技术 351

9.5.2公钥加密技术 351

9.5.3单向函数 352

9.5.4数字签名 352

9.5.5可信平台模块 353

9.6认证 354

9.6.1使用物理识别的认证方式 358

9.6.2使用生物识别的认证方式 360

9.7软件漏洞 361

9.7.1缓冲区溢出攻击 361

9.7.2格式化字符串攻击 367

9.7.3悬垂指针 369

9.7.4空指针间接引用攻击 369

9.7.5整数溢出攻击 370

9.7.6命令注入攻击 370

9.7.7检查时间/使用时间攻击 371

9.8内部攻击 371

9.8.1逻辑炸弹 371

9.8.2后门陷阱 372

9.8.3登录欺骗 372

9.9恶意软件 373

9.9.1特洛伊木马 374

9.9.2病毒 375

9.9.3蠕虫 381

9.9.4间谍软件 382

9.9.5 rootkit 384

9.10防御 386

9.10.1防火墙 387

9.10.2反病毒和抑制反病毒技术 388

9.10.3代码签名 392

9.10.4囚禁 392

9.10.5基于模型的入侵检测 393

9.10.6封装移动代码 394

9.10.7 Java安全性 396

9.11有关安全的研究 397

9.12小结 398

习题 398

第10章 实例研究1:UNIX、Linux和Android 403

10.1 UNIX与Linux的历史 403

10.1.1 UNICS 403

10.1.2 PDP-11 UNIX 404

10.1.3可移植的UNIX 404

10.1.4 Berkeley UNIX 405

10.1.5标准UNIX 405

10.1.6 MINIX 406

10.1.7 Linux 407

10.2 Linux简介 408

10.2.1 Linux的设计目标 408

10.2.2到Linux的接口 409

10.2.3 shell 410

10.2.4 Linux应用程序 412

10.2.5内核结构 413

10.3 Linux中的进程 414

10.3.1基本概念 414

10.3.2 Linux中进程管理相关的系统调用 416

10.3.3 Linux中进程与线程的实现 418

10.3.4 Linux中的调度 422

10.3.5启动Linux系统 425

10.4 Linux中的内存管理 426

10.4.1基本概念 427

10.4.2 Linux中的内存管理系统调用 429

10.4.3 Linux中内存管理的实现 429

10.4.4 Linux中的分页 433

10.5 Linux中的I/O系统 434

10.5.1基本概念 434

10.5.2网络 435

10.5.3 Linux中的I/O系统调用 436

10.5.4 I/O在Linux中的实现 437

10.5.5 Linux中的模块 439

10.6 Linux文件系统 439

10.6.1基本概念 439

10.6.2 Linux中的文件系统调用 442

10.6.3 Linux文件系统的实现 444

10.6.4 NFS:网络文件系统 449

10.7 Linux的安全性 452

10.7.1基本概念 452

10.7.2 Linux中安全相关的系统调用 454

10.7.3 Linux中的安全实现 454

10.8 Android 455

10.8.1 Android与Google 455

10.8.2 Android的历史 455

10.8.3设计目标 457

10.8.4 Android体系结构 458

10.8.5 Linux扩展 459

10.8.6 Dalvik 461

10.8.7 Binder IPC 462

10.8.8 Android应用 467

10.8.9意图 475

10.8.10应用程序沙箱 475

10.8.11安全性 476

10.8.12进程模型 479

10.9小结 482

习题 483

第11章 实例研究2: Windows 8 487

11.1 Windows 8.1的历史 487

11.1.1 20世纪80年代:MS-DOS 487

11.1.2 20世纪90年代:基于MS-DOS的Windows 488

11.1.3 21世纪00年代:基于NT的Windows 488

11.1.4 Windows Vista 489

11.1.5 21世纪10年代:现代Windows 490

11.2 Windows编程 490

11.2.1原生NT应用编程接口 493

11.2.2 Win32应用编程接口 494

11.2.3 Windows注册表 496

11.3系统结构 498

11.3.1操作系统结构 498

11.3.2启动Windows 506

11.3.3对象管理器的实现 507

11.3.4子系统、DLL和用户态服务 513

11.4 Windows中的进程和线程 514

11.4.1基本概念 514

11.4.2作业、进程、线程和纤程管理API调用 518

11.4.3进程和线程的实现 521

11.5内存管理 525

11.5.1基本概念 525

11.5.2内存管理系统调用 527

11.5.3存储管理的实现 528

11.6 Windows的高速缓存 533

11.7 Windows的I/O 534

11.7.1基本概念 534

11.7.2 I/O的API调用 535

11.7.3 I/O实现 536

11.8 Windows NT文件系统 539

11.8.1基本概念 540

11.8.2 NTFS文件系统的实现 540

11.9 Windows电源管理 546

11.10 Windows 8中的安全 547

11.10.1基本概念 548

11.10.2安全相关的API调用 548

11.10.3安全实现 549

11.10.4安全缓解技术 551

11.11小结 552

习题 553

第12章 操作系统设计 556

12.1设计问题的本质 556

12.1.1目标 556

12.1.2设计操作系统为什么困难 557

12.2接口设计 558

12.2.1指导原则 558

12.2.2范型 559

12.2.3系统调用接口 561

12.3实现 563

12.3.1系统结构 563

12.3.2机制与策略 565

12.3.3正交性 566

12.3.4命名 566

12.3.5绑定的时机 567

12.3.6静态与动态结构 567

12.3.7自顶向下与自底向上的实现 568

12.3.8同步通信与异步通信 568

12.3.9实用技术 569

12.4性能 572

12.4.1操作系统为什么运行缓慢 572

12.4.2什么应该优化 573

12.4.3空间-时间的权衡 573

12.4.4缓存 575

12.4.5线索 575

12.4.6利用局部性 576

12.4.7优化常见的情况 576

12.5项目管理 576

12.5.1人月神话 576

12.5.2团队结构 577

12.5.3经验的作用 578

12.5.4没有银弹 579

12.6操作系统设计的趋势 579

12.6.1虚拟化与云 579

12.6.2众核芯片 580

12.6.3大型地址空间操作系统 580

12.6.4无缝的数据访问 580

12.6.5电池供电的计算机 581

12.6.6嵌入式系统 581

12.7小结 581

习题 582

第13章 参考书目与文献 584

13.1进行深入阅读的建议 584

13.1.1引论 584

13.1.2进程与线程 584

13.1.3内存管理 585

13.1.4文件系统 585

13.1.5输入/输出 585

13.1.6死锁 586

13.1.7虚拟化和云 586

13.1.8多处理机系统 586

13.1.9安全 587

13.1.10实例研究1: UNIX、Linux和Android 588

13.1.11实例研究2: Windows 8 588

13.1.12操作系统设计 589

13.2按字母顺序排序的参考文献 589