操作系统精髓与设计原理第六版pdf免费版|百度网盘下载

编者评论:操作系统的本质和设计原则第 6 版 pdf

本书不仅全面介绍了操作系统的基本概念、原理和方法,而且清晰地展示了当代操作系统的本质和特点。鉴于近年来操作系统领域的最新变化,笔者今天为大家带来操作系统本质与设计原则第六版pdf。有需要欢迎下载

简介

本书不仅全面介绍了操作系统的基本概念、原理和方法,而且清晰地展示了当代操作系统的本质和特点。笔者重点关注近年来操作系统领域的最新变化,

深入阐述操作系统的设计原则,同时为读者呈现对整个操作系统领域的全面而深入的了解。

图书特色

·选择Windows Vista、UNIX和Linux作为例子,帮助读者熟悉当代操作系统的设计原则和实现问题。

·嵌入式操作系统的新章节讨论了嵌入式操作系统的基本特征,并给出了两个示例系统:TinyOS 和 eCos。

·在第5版的基础上,扩充了​​计算机安全的相关内容,包括计算机安全威胁和计算机安全技术。

・扩展和更新了与并​​发相关的内容,并添加了游戏软件中多处理器调度设计问题的示例。

·补充动画演示、模拟项目和编程项目,以提高学生的动手能力。

・改进的插图和新的、广泛的“经过实地测试”的家庭作业。

·对章末的习题进行了调整和扩充,帮助读者深入理解操作系统的精髓。

相关内容部分预览

关于作者

William Stallings 拥有博士学位。拥有麻省理工学院计算机科学博士学位,目前在澳大利亚新南威尔士大学国防学院(堪培拉)信息技术与电子工程系任教。

他是世界著名的计算机学者和畅销教科书作者。他撰写了 17 本书,出版了 40 多本书,涵盖计算机安全、计算机网络和计算机体系结构等方面。他曾九次获得美国教科书和学术专着协会颁发的“年度最佳计算机科学教科书”奖。

目录

出版商的话

翻译顺序

前言

第 0 章读者指南 1

0.1 图书概述 1

0.2 面向读者和教师的学习路线图 1

0.3 互联网和网络资源 2

第 1 部分背景

第 1 章计算机系统概述 6

1.1 基本构成6

1.2 处理器寄存器 6

1.2.1 用户可见寄存器7

1.2.2 控制和状态寄存器 8

1.3 指令9的执行

1.3.1 指令获取和执行 9

1.3.2 I/O功能11

1.4 中断 11

1.4.1 中断和指令周期 12

1.4.2 中断处理 14

1.4.3 多次中断 15

1.4.4 多道程序 17

1.5 内存层次结构 17

1.6 缓存 20

1.6.1 动机 20

1.6.2 缓存原则20

1.6.3 缓存设计 21

1.7 I/O 通信技术 22

1.7.1 可编程 I/O22

1.7.2 中断驱动 I/O22

1.7.3 直接内存访问 24

1.8 推荐阅读和网站 24

1.9 关键术语、复习题和练习 25

附录 1A 两级内存的性能特点 27

附录 1B 过程控制 30

第 2 章操作系统概述 33

2.1 操作系统的目标和特点 33

2.1.1 作为用户/计算机界面

2.1.1 操作系统 33

2.1.2 作为资源管理器的操作

2.1.1 系统 34

2.1.3 操作系统的易扩展性 35

2.2 操作系统的发展 35

2.2.1 串行处理 35

2.2.2 简单批处理系统 36

2.2.3 多程序批处理系统 38

2.2.4 分时系统 40

2.3 主要成就 42

2.3.1 流程 42

2.3.2 内存管理 44

2.3.3 信息保护和安全 46

2.3.4 调度和资源管理 46

2.3.5 系统架构 47

2.4 现代操作系统的特点 49

2.5 Microsoft Windows 概述 51

2.5.1 历史 51

2.5.2 单用户多任务处理 53

2.5.3 架构 53

2.5.4 客户端/服务器模型 56

2.5.5 线程和 SMP57

2.5.6 Windows 对象 57

2.6 传统 UNIX 系统 58

2.6.1 历史 58

2.6.2 说明 59

2.7 现代 UNIX 系统 60

2.7.1 System V 版本 4 (SVR4) 60

2.7.2 BSD61

2.7.3 Solaris 1061

2.8 Linux操作系统61

2.8.1 历史 62

2.8.2 模块结构 63

2.8.3 内核组件 64

2.9 推荐阅读和网站67

2.10 关键术语、复习题和第 68 题

第二部分流程

第 3 章过程描述和控制 73

3.1 什么是进程 73

3.1.1 背景 73

3.1.2 过程和过程控制块 74

3.2 进程状态 75

3.2.1 两态过程模型 76

3.2.2 进程创建和终止 77

3.2.3 五态模型 78

3.2.4 暂停进程 81

3.3 过程描述84

3.3.1 操作系统的控制结构 85

3.3.2 过程控制结构 86

3.4 过程控制 90

3.4.1 执行模式90

3.4.2 流程创建 91

3.4.3 进程切换92

3.5 操作系统执行93

3.5.1 无进程内核 94

3.5.2 在用户进程中执行94

3.5.3 基于进程的操作系统 95

3.6 安全问题 95

3.6.1 系统访问威胁 96

3.6.2 对策96

3.7 UNIX SVR4 进程管理 98

3.7.1 进程状态 98

3.7.2 流程描述99

3.7.3 过程控制 101

3.8 总结 102

3.9 推荐阅读102

3.10 关键术语、复习题和习题 102

编程项目 1:开发一个 Shell 程序 105

第 4 章线程,对称多处理 (SMP)

第 4 章和微内核 107

4.1 进程和线程 107

4.1.1 多线程 107

4.1.2 线程特性 109

4.1.3 示例:Adobe PageMaker111

4.1.4 用户级和内核级线程 112

4.1.5 其他解决方案 115

4.2 对称多处理 116

4.2.1 SMP 架构 116

4.2.2 SMP System 117的组织结构

4.2.3 多处理器操作系统

4.2.3 设计思维 118

4.3 微内核 119

4.3.1 微内核架构 119

4.3.2 微内核组织的优势 120

4.3.3 微内核性能 121

4.3.4 微内核设计 121

4.4 Windows 线程和 SMP 管理 122

4.4.1 进程对象和线程对象 123

4.4.2 多线程 125

4.4.3 线程状态125

4.4.4 操作系统子系统支持 126

4.4.5 对称多处理支持 126

4.5 Solaris 线程和 SMP 管理 127

4.5.1 多线程架构 127

4.5.2 动机 127

4.5.3 流程结构 128

4.5.4 线程执行129

4.5.5 将中断视为线程 129

4.6 Linux 进程和线程管理 130

4.6.1 Linux 任务 130

4.6.2 Linux 线程 131

4.7 总结 132

4.8 推荐阅读 133

4.9 关键术语、复习题和第 133 题

第 5 章并发:互斥与同步 138

5.1 并发原理 139

5.1.1 一个简单的例子 139

5.1.2 竞态条件 141

5.1.3 操作系统问题 141

5.1.4 进程交互 141

5.1.5 互斥要求 144

5.2 互斥:硬件支持 144

5.2.1 中断禁用 144

5.2.2 特殊机器指令 145

5.3 信号量 147

5.3.1 互斥150

5.3.2 生产者/消费者问题 151

5.3.3 信号量154的实现

5.4 监视器 155

5.4.1 使用信号 155 的监视器

5.4.2 使用通知和广播监视器 158

5.5 消息传递 159

5.5.1 同步 160

5.5.2 寻址 161

5.5.3 消息格式 162

5.5.4 排队原则 162

5.5.5 互斥体 162

5.6 读写器问题 163

5.6.1 读者优先 164

5.6.2 作家前 164

5.7 总结 166

5.8 推荐阅读167

5.9 关键术语、复习题和第 167 题

第 6 章并发:死锁和饥饿 178

6.1 死锁原理178

6.1.1 可重用资源 180

6.1.2 消耗性资源 181

6.1.3 资源分配图182

6.1.4 死锁条件 183

6.2 死锁预防 184

6.2.1 互斥体 184

6.2.2 拥有并等待 184

6.2.3 不可抢占 184

6.2.4 循环等待 184

6.3 避免死锁 185

6.3.1 进程启动被拒绝185

6.3.2 资源分配拒绝 186

6.4 死锁检测 189

6.4.1 死锁检测算法189

6.4.2 恢复190

6.5 全面的死锁策略 190

6.6 哲学家的用餐问题 191

6.6.1 使用信号量解决方案 191

6.6.2 使用监视器解决方案 192

6.7 UNIX 并发 192

6.7.1 管道 192

6.7.2 消息 193

6.7.3 共享内存 193

6.7.4 信号量 194

6.7.5 信号 194

6.8 Linux 内核并发 195

6.8.1 原子操作 195

6.8.2 自旋锁 196

6.8.3 信号量 197

6.8.4 屏障 199

6.9 Solaris 线程同步原语 199

6.9.1 互斥体 200

6.9.2 信号量 200

6.9.3 多读/单写锁201

6.9.4 条件变量 201

6.10 Windows 并发 201

6.10.1 等待函数 201

6.10.2 调度程序对象 202

6.10.3 关键部分 203

6.10.4 轻量级读写锁和条件变量 203

6.11 总结 204

6.12 推荐阅读204

6.13 关键术语、复习题和练习 205

第三部分记忆

第7章内存管理210

7.1 内存管理要求 210

7.1.1 搬迁210

7.1.2 保护 211

7.1.3 分享211

7.1.4 逻辑组织 211

7.1.5 物理组织 211

7.2 内存分区 212

7.2.1 固定分区 212

7.2.2 动态分区 214

7.2.3 好友系统216

7.2.4 重定位218

7.3 寻呼 219

7.4 第 222 小节

7.5 安全问题 222

7.5.1 缓冲区溢出攻击 222

7.5.2 缓冲区溢出预防225

7.6 总结 225

7.7 推荐阅读 225

7.8 关键术语、复习题和练习 225

附录 7A 加载和链接 228

第8章虚拟内存232

8.1 硬件和控制结构 232

8.1.1 局部性和虚拟内存 233

8.1.2 寻呼 235

8.1.3 第 242 节

8.1.4 第 243 段

8.1.5 保护和共享 244

8.2 操作系统软件 244

8.2.1 阅读政策 245

8.2.2 布局策略 246

8.2.3 替换策略 246

8.2.4 驻留集管理 251

8.2.5 清除策略 255

8.2.6 负载控制 255

8.3 UNIX 和 Solaris 内存管理 257

8.3.1 寻呼系统 257

8.3.2 内核内存分配器 259

8.4 Linux 内存管理 260

8.4.1 Linux 虚拟内存 260

8.4.2 内核内存分配 261

8.5 Windows 内存管理 262

8.5.1 Windows 虚拟地址映射 263

8.5.2 Windows 分页 263

8.6 总结 264

8.7 推荐阅读和网站264

8.8 关键术语、复习题和练习 265

附录 8A 哈希表 268

第四部分:调度

第9章单处理器调度272

9.1 处理器调度类型 272

9.1.1 远程调度 273

9.1.2 中程调度 274

9.1.3 短程调度 274

9.2 调度算法 274

9.2.1 短程调度准则 274

9.2.2 使用优先级 275

9.2.3 选择调度策略 276

9.2.4 性能比较 284

9.2.5 公平共享调度 287

9.3 传统 UNIX 调度 289

9.4 总结 290

9.5 推荐阅读 291

9.6 关键术语、复习题和第 291 题

附录 9A 响应时间 294

附录 9B 排队系统 296

编程项目2:主机调度Shell程序299

第 10 章多处理器和实时调度 304

10.1 多处理器调度 304

10.1.1 粒度 304

10.1.2 设计问题 307

10.1.3 进程调度 308

10.1.4 线程调度 309

10.2 实时调度312

10.2.1 背景 312

10.2.2 RTOS 313 的特点

10.2.3 实时调度315

10.2.4 截止时间表 316

10.2.5 速率单调调度 319

10.2.6 优先级反转 321

10.3 Linux 调度 322

10.3.1 实时调度322

10.3.2 非实时调度 323

10.4 UNIX SVR4 调度 325

10.5 Windows 调度 326

10.5.1 进程和线程优先级 326

10.5.2 多处理器调度 328

10.6 总结 328

10.7 推荐阅读328

10.8 关键术语、复习题和第 329 题

第 5 部分 I/O 和文件

第 11 章 I/O 管理和磁盘调度 334

11.1 I/O 设备 334

11.2 I/O 功能的组织 335

11.2.1 I/O功能开发335

11.2.2 直接内存访问 336

11.3 操作系统设计问题 337

11.3.1 设计目标 337

11.3.2 I/O 函数 338 的逻辑结构

11.4 I/O 缓冲区 339

11.4.1 单缓冲区 340

11.4.2 双缓冲 341

11.4.3 循环缓冲区 341

11.4.4 缓冲341的作用

11.5 磁盘调度 342

11.5.1 磁盘性能参数342

11.5.2 磁盘调度策略 344

11.6 RAID347

11.6.1 RAID 级别 0349

11.6.2 RAID 级别 1350

11.6.3 RAID 级别 2351

11.6.4 RAID 级别 3351

11.6.5 RAID 级别 4352

11.6.6 RAID 级别 5353

11.6.7 RAID 级别 6353

11.7 磁盘缓存 353

11.7.1 设计注意事项 353

11.7.2 性能注意事项 355

11.8 UNIX SVR4 I/O355

11.8.1 缓冲区高速缓存 356

11.8.2 字符队列 356

11.8.3 无缓冲 I/O357

11.8.4 UNIX 设备 357

11.9 Linux I/O357

11.9.1 磁盘调度 358

11.9.2 Linux 页面缓存 360

11.10 Windows I/O360

11.10.1 基本 I/O 机制 360

11.10.2 异步 I/O 和同步 I/O361

11.10.3 软件 RAID361

11.10.4 卷影复制 361

11.10.5 卷加密 362

11.11 总结 362

11.12推荐阅读362

11.13 关键术语、复习题和第 363 题

附录 11A 磁盘存储设备 365

第12章文件管理371

12.1 概述 371

12.1.1 文件和文件系统 371

12.1.2 文件结构 371

12.1.3 文件管理系统373

12.2 文件组织和访问 375

12.2.1 堆 376

12.2.2 序列文件 376

12.2.3 索引订单文件 377

12.2.4 索引文件 377

12.2.5 直接文件或散列文件 378

12.3 文件目录378

12.3.1 内容 378

12.3.2 结构 379

12.3.3 命名 380

12.4 文件共享 381

12.4.1 访问 381

12.4.2同时访问381

12.5 记录块 382

12.6 二级存储管理 383

12.6.1 文件分配 383

12.6.2 可用空间管理 387

12.6.3 卷 388

12.6.4 可靠性 388

12.7 文件系统安全 389

12.8 UNIX 文件管理 390

12.8.1 索引节点 391

12.8.2 文件分配 392

12.8.3 目录 393

12.8.4 卷结构 393

12.8.5 传统 UNIX 文件访问

6.10.4 控制 393

12.8.6 UNIX 中的访问控制列表 394

12.9 Linux 虚拟文件系统 395

12.9.1 超级块对象 397

12.9.2 索引节点对象 397

12.9.3 目录条目对象 398

12.9.4 文件对象 398

12.10 Windows 文件系统 398

12.10.1 NTFS 398 的重要特性

12.10.2 NTFS卷和文件结构399

12.10.3 可恢复性 401

12.11 总结 402

12.12推荐阅读402

12.13 关键术语、复习题和问题 403

第六部分嵌入式系统

第13章嵌入式操作系统406

13.1 嵌入式系统 406

13.2 嵌入式操作系统407的特点

13.2.1 移植现有的商业操作系统 408

13.2.2 专用嵌入式

6.10.4 操作系统 408

13.3 eCos409

13.3.1 可配置性 409

13.3.2 eCos 组件 411

13.3.3 eCos 调度程序 414

13.3.4 eCos线程同步415

13.4 TinyOS419

13.4.1 无线传感器网络 420

13.4.2 TinyOS 目标 420

13.4.3 TinyOS 的组件 421

13.4.4 TinyOS 调度程序 423

13.4.5 配置示例423

13.4.6 TinyOS资源接口425

13.5 推荐阅读和网站 426

13.6 关键术语、复习题和第 426 题

第七部分安全

第 14 章计算机安全威胁 430

14.1 计算机安全的概念 430

14.2 威胁、攻击和资产 431

14.2.1 威胁和攻击 431

14.2.2 威胁和资产 432

14.3 入侵者 434

14.3.1 入侵者行为模式 435

14.3.2 入侵技术 437

14.4 恶意软件概述 437

14.4.1 后门 437

14.4.2 逻辑炸弹 438

14.4.3 木马 438

14.4.4 手机码438

14.4.5 多威胁恶意软件 439

14.5 病毒、蠕虫和僵尸 440

14.5.1 病毒 440

14.5.2 蠕虫 443

14.5.3 僵尸 445

14.6 rootkits447

14.6.1 rootkit 安装 447

14.6.2 系统级调用攻击447

14.7 推荐阅读和网站 448

14.8 关键术语、复习题和第 448 题

第 15 章计算机安全技术 451

15.1 身份验证 451

15.1.1 身份验证方法 451

15.1.2 基于密码的身份验证 451

15.1.3 基于令牌的身份验证 453

15.1.4 生物特征认证 454

15.2 访问控制 455

15.2.1 自主访问控制 456

15.2.2 基于角色的访问控制 458

15.3 入侵检测 460

15.3.1 基础知识 460

15.3.2 基于主机的入侵检测技术461

15.3.3 审核记录 462

15.4 恶意软件防御 463

15.4.1 杀毒方法463

15.4.2 蠕虫对策 465

15.4.3 自动代理 466 的对策

15.4.4 Rootkit 对策 466

15.5 处理缓冲区溢出攻击 467

15.5.1 编译时防御 467

15.5.2 运行时防御 469

15.6 Windows Vista 安全 470

15.6.1 访问控制方案 470

15.6.2 访问令牌 471

15.6.3 安全描述符 471

15.7 推荐阅读和网站 474

15.8 关键术语、复习题和练习 475

第八部分分布式系统

第 16 章分布式处理、客户端/服务器和

第16章481簇

16.1 客户端/服务器计算模型 481

16.1.1 什么是客户端/服务器

16.1.1 计算模型 481

16.1.2 客户端/服务器模型482的应用

16.1.3 中间件 486

16.2 分布式消息传递 487

16.2.1 可靠性和不可靠性 488

16.2.2 阻塞和非阻塞488

16.3 远程过程调用 489

16.3.1 参数传递490

16.3.2 参数表示490

16.3.3 客户端/服务器绑定 490

16.3.4 同步和异步490

16.3.5 面向对象的机制 491

16.4 集群 491

16.4.1 集群配置491

16.4.2 操作系统设计问题 493

16.4.3 集群计算机的体系结构 494

16.4.4 聚类与 SMP 495 的比较

16.5 Windows 集群服务器 495

16.6 Sun Cluster 496

16.6.1 对象和通信支持 497

16.6.2 流程管理 497

16.6.3 网络连接 497

16.6.4 全局文件系统 498

16.7 Beowulf 和 Linux 集群 498

16.7.1 贝奥武夫功能 498

16.7.2 贝奥武夫软件 499

16.8 总结 500

16.9 推荐阅读和网站500

16.10 关键术语、复习题和问题 501

附录 A 并发主题 503

附录 B 面向对象设计 516

附录 C 编程和操作系统项目 523

词汇表 528

参考 536

读者评论

首先,本书语境清晰,循序渐进,完美表达了知识点之间的联系。这是一个例子:

本书将进程管理中的进程调度分离为一个部分,放在内存管理的后面。这种布局看似将知识拆解成碎片,实则别出心裁。我读过其他书籍,例如 Tanenbaum 的《现代操作系统》,

流程管理在一章中完成。但是——我们知道进程调度离不开内存管理的方式。不了解内存管理,怎么理解进程调度的前因后果?

其次,它在逻辑上严谨且组织良好:想法、需求、问题、结论、计划、要求和实施细节。重点问题的原因、优缺点,直接列个清单,一二三四,解释清楚。以内存管理为例,举三个例子:

内存管理要求列表

我们对内存管理有什么要求?需求之间的依赖关系是什么。

书籍告诉我们现在应该关注什么(记忆和外部记忆之间的信息流)。为什么我们把存储管理作为操作系统的职责?

虚拟内存是如何从简单的分段和简单的分页中产生的。简单的分页和切分已经在概念上取得了哪些突破,我们还能进一步突破吗?

三是解释方式多样,图和表很多,对不同方案做了充分的对比,如图:

阅读剩余
THE END