操作系统――精髓与设计原理(第八版) [Operating Systems: Internals and Design Principles]

操作系统――精髓与设计原理(第八版) [Operating Systems: Internals and Design Principles] pdf epub mobi txt 电子书 下载 2025

[美] William,Stallings(威廉.斯托林斯) 著,陈向群,陈渝 等 译
图书标签:
  • 操作系统
  • 计算机科学
  • 系统编程
  • 内核
  • 设计原理
  • 并发
  • 内存管理
  • 文件系统
  • 进程管理
  • 虚拟化
想要找书就要到 静思书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121309502
版次:8
商品编码:12140626
包装:平装
丛书名: 国外计算机科学教材系列
外文名称:Operating Systems: Internals and Design Principles
开本:16开
出版时间:2017-02-01
用纸:胶版纸
页数:492

具体描述

编辑推荐

适读人群 :本书可作为高等学校计算机科学与技术专业操作系统课程的教材,也可供其他专业学生参考。

本书的目的是使读者熟悉现代操作系统的设计原理和实现问题,因此单纯讲述概念和理论远远不够。为说明这些概念,同时将它们与真实世界中不得不做出的设计选择相关联,本书选择了4个操作系统作为实例:

◆ Windows 8:用于个人计算机、工作站和服务器的多任务操作系统。它融入了很多操作系统发展的*新技术。此外,Windows是*早采用面向对象原理进行设计的重要商业操作系统之一。本书涵盖了Windows*新版本所采用的技术,包括Windows 8。

◆ Android:Android是为嵌入式设备特别是手机量身定做的,主要是为了满足嵌入式环境的独特需求。本书介绍了Android的内核信息。

◆ UNIX:*初是为小型计算机设计的多用户操作系统,但后来广泛用于从微机到超级计算机的各种机器中。本书采用若干版本的UNIX作为实例。FreeBSD融合了很多的现代特征,是一个广泛应用的操作系统;Solaris是一个广泛应用的商业版UNIX系统。

◆ Linux:一个非常普及且源代码开放的UNIX版本。

选择这些操作系统的原因是它们之间存在相关性,同时它们也具有代表性。关于这些实例操作系统的讨论贯穿全书,而非集中于某一章或附录部分。因此在讨论并发性时,会描述每个实例操作系统的并发机制,并探讨各种设计选择的动机。采用真实的例子可加深读者对相关章节中设计概念的理解。为方便起见,读者也可在在线文档中查阅所有实例操作系统的资料。


内容简介

本书既是关于操作系统概念、结构和机制的教材,目的是尽可能清楚和全面地展示现代操作系统的本质和特点;也是讲解操作系统的经典教材,不仅系统地讲述了操作系统的基本概念、原理和方法,而且以当代*流行的操作系统Windows 8、UNIX、Android、Linux为例,展现了当代操作系统的本质和特点。全书共分背景知识、进程、内存、调度、输入/输出和文件、嵌入式系统六部分,内容包括计算机系统概述、操作系统概述、进程描述和控制、线程、并发性:互斥和同步、并发:死锁和饥饿、内存管理、虚拟内存、单处理器调度、多处理器和实时调度、I/O管理和磁盘调度、文件管理、嵌入式操作系统、虚拟机、计算机安全技术、分布式处理、客户/服务器和集群等。此外,本书配套网站提供了及时、生动的材料。

作者简介

  陈向群,北京大学信息科学技术学院计算机科学技术系教授,博士生导师,主要研究领域为软件需求工程、知识工程、基于知识的软件工程、面向服务的计算。

  

  William Stallings:美国圣母大学电子工程学士,麻省理工学院计算机科学博士,《密码术》期刊编委。美国多家高科技公司执行总监,政府机构、计算机软/硬件供应商顾问;曾为各种计算机和操作系统设计并实现TCP/IP和OSI协议套件;创建并维护了计算机科学专业学生资源网站ComputerScienceStudent.com。出版图书17种,内容涉及计算机安全、计算机网络和计算机系统结构等;在《IEEE进展》《ACM计算评论》和《密码术》等期刊上发表文章多篇;先后12次获美国年度*佳计算机科学教科书奖和学术作者协会奖。

目录

第0章 读者与教师指南 1
0.1 本书概述 1
0.2 实例系统 1
0.3 读者和教师的路线图 2
0.4 互联网和网站资源 3
第一部分 背景知识
第1章 计算机系统概述 6
1.1 基本构成 6
1.2 微处理器的发展 7
1.3 指令的执行 8
1.4 中断 10
1.4.1 中断和指令周期 11
1.4.2 中断处理 12
1.4.3 多个中断 14
1.5 存储器的层次结构 15
1.6 高速缓存 17
1.6.1 动机 18
1.6.2 高速缓存原理 18
1.6.3 高速缓存设计 19
1.7 直接内存存取 20
1.8 多处理器和多核计算机组织结构 21
1.8.1 对称多处理器 21
1.8.2 多核计算机 23
1.9 推荐读物 23
1.10 关键术语、复习题和习题 24
1.10.1 关键术语 24
1.10.2 复习题 24
1.10.3 习题 24
附录1A 两级存储器的性能特征 26
第2章 操作系统概述 31
2.1 操作系统的目标和功能 31
2.1.1 作为用户/计算机接口的
操作系统 31
2.1.2 作为资源管理器的操作系统 32
2.1.3 操作系统的易扩展性 33
2.2 操作系统的发展史 34
2.2.1 串行处理 34
2.2.2 简单批处理系统 34
2.2.3 多道批处理系统 36
2.2.4 分时系统 38
2.3 主要成就 40
2.3.1 进程 40
2.3.2 内存管理 42
2.3.3 信息保护和安全 43
2.3.4 调度和资源管理 44
2.4 现代操作系统的特征 45
2.5 容错性 47
2.5.1 基本概念 47
2.5.2 错误 48
2.5.3 操作系统机制 48
2.6 多处理器和多核操作系统
设计考虑因素 49
2.6.1 对称多处理器操作系统设计
考虑因素 49
2.6.2 多核操作系统设计考虑因素 49
2.7 微软Windows系统简介 51
2.7.1 背景 51
2.7.2 体系结构 51
2.7.3 客户-服务器模型 53
2.7.4 线程和SMP 54
2.7.5 Windows对象 54
2.8 传统的UNIX系统 55
2.8.1 历史 55
2.8.2 描述 56
2.9 现代UNIX系统 57
2.9.1 System V Release 4(SVR4) 58
2.9.2 BSD 58
2.9.3 Solaris 10 58
2.10 Linux操作系统 58
2.10.1 历史 58
2.10.2 模块结构 59
2.10.3 内核组件 60
2.11 Android 62
2.11.1 Android软件体系结构 63
2.11.2 Android系统体系结构 64
2.11.3 活动 65
2.11.4 电源管理 65
2.12 推荐读物和动画 66
2.13 关键术语、复习题和习题 67
2.13.1 关键术语 67
2.13.2 复习题 67
2.13.3 习题 67

第二部分 进程

第3章 进程描述和控制 70
3.1 什么是进程 70
3.1.1 背景 70
3.1.2 进程和进程控制块 71
3.2 进程状态 72
3.2.1 两状态进程模型 73
3.2.2 进程的创建和终止 74
3.2.3 五状态模型 75
3.2.4 被挂起的进程 78
3.3 进程描述 81
3.3.1 操作系统的控制结构 82
3.3.2 进程控制结构 82
3.4 进程控制 86
3.4.1 执行模式 86
3.4.2 进程创建 87
3.4.3 进程切换 88
3.5 操作系统的执行 90
3.5.1 无进程内核 90
3.5.2 在用户进程内运行 90
3.5.3 基于进程的操作系统 91
3.6 UNIX SVR4进程管理 91
3.6.1 进程状态 92
3.6.2 进程描述 93
3.6.3 进程控制 94
3.7 小结 95
3.8 推荐读物和动画 95
3.9 关键术语、复习题和习题 95
3.9.1 关键术语 95
3.9.2 复习题 96
3.9.3 习题 96
第4章 线程 99
4.1 进程和线程 99
4.1.1 多线程 99
4.1.2 线程的功能 102
4.2 线程分类 103
4.2.1 用户级和内核级线程 103
4.2.2 其他方案 106
4.3 多核和多线程 107
4.3.1 多核系统上的软件性能 107
4.3.2 应用示例:Valve游戏软件 109
4.4 Windows 8的进程和线程管理 110
4.4.1 Windows 8中的变化 111
4.4.2 Windows进程 111
4.4.3 进程对象和线程对象 112
4.4.4 多线程 113
4.4.5 线程状态 113
4.4.6 对操作系统子系统的支持 114
4.5 Solaris的线程和SMP管理 114
4.5.1 多线程体系结构 114
4.5.2 动机 115
4.5.3 进程结构 115
4.5.4 线程的执行 116
4.5.5 把中断当作线程 117
4.6 Linux的进程和线程管理 118
4.6.1 Linux任务 118
4.6.2 Linux线程 119
4.6.3 Linux命名空间 120
4.7 Android的进程和线程管理 121
4.7.1 安卓应用 121
4.7.2 活动 121
4.7.3 进程和线程 122
4.8 Mac OS X的GCD技术 123
4.9 小结 124
4.10 推荐读物 125
4.11 关键术语、复习题和习题 125
4.11.1 关键术语 125
4.11.2 复习题 125
4.11.3 习题 125
第5章 并发性:互斥和同步 129
5.1 并发的原理 130
5.1.1 一个简单的例子 130
5.1.2 竞争条件 132
5.1.3 操作系统关注的问题 132
5.1.4 进程的交互 133
5.1.5 互斥的要求 135
5.2 互斥:硬件的支持 136
5.2.1 中断禁用 136
5.2.2 专用机器指令 136
5.3 信号量 138
5.3.1 互斥 141
5.3.2 生产者/消费者问题 142
5.3.3 信号量的实现 146
5.4 管程 147
5.4.1 使用信号的管程 147
5.4.2 使用通知和广播的管程 149
5.5 消息传递 151
5.5.1 同步 151
5.5.2 寻址 152
5.5.3 消息格式 153
5.5.4 排队原则 154
5.5.5 互斥 154
5.6 读者/写者问题 155
5.6.1 读者优先 156
5.6.2 写者优先 156
5.7 小结 158
5.8 推荐读物和动画 159
5.9 关键术语、复习题和习题 160
5.9.1 关键术语 160
5.9.2 复习题 160
5.9.3 习题 160
第6章 并发:死锁和饥饿 170
6.1 死锁原理 170
6.1.1 可重用资源 173
6.1.2 可消耗资源 174
6.1.3 资源分配图 174
6.1.4 死锁的条件 175
6.2 死锁预防 176
6.2.1 互斥 176
6.2.2 占有且等待 176
6.2.3 不可抢占 176
6.2.4 循环等待 177
6.3 死锁避免 177
6.3.1 进程启动拒绝 177
6.3.2 资源分配拒绝 178
6.4 死锁检测 181
6.4.1 死锁检测算法 181
6.4.2 恢复 182
6.5 一种综合的死锁策略 182
6.6 哲学家就餐问题 183
6.6.1 基于信号量的解决方案 183
6.6.2 基于管程的解决方案 184
6.7 UNIX并发机制 185
6.7.1 管道 186
6.7.2 消息 186
6.7.3 共享内存 186
6.7.4 信号量 186
6.7.5 信号 187
6.8 Linux内核并发机制 187
6.8.1 原子操作 188
6.8.2 自旋锁 189
6.8.3 信号量 190
6.8.4 屏障 191
6.9 Solaris线程同步原语 192
6.9.1 互斥锁 193
6.9.2 信号量 193
6.9.3 多读者/单写者锁 193
6.9.4 条件变量 193
6.10 Windows 7的并发机制 194
6.10.1 等待函数 194
6.10.2 分派器对象 194
6.10.3 临界区 195
6.10.4 轻量级读写锁和条件变量 195
6.10.5 锁无关同步机制 196
6.11 Android进程间通信 196
6.12 小结 197
6.13 推荐读物和动画 197
6.14 关键术语、复习题和习题 198
6.14.1 关键术语 198
6.14.2 复习题 198
6.14.3 习题 198







第三部分 内存

第7章 内存管理 204
7.1 内存管理的需求 204
7.1.1 重定位 204
7.1.2 保护 205
7.1.3 共享 205
7.1.4 逻辑组织 205
7.1.5 物理组织 206
7.2 内存分区 206
7.2.1 固定分区 207
7.2.2 动态分区 208
7.2.3 伙伴系统 210
7.2.4 重定位 212
7.3 分页 212
7.4 分段 215
7.5 小结 216
7.6 推荐读物和动画 216
7.7 关键术语、复习题和习题 216
7.7.1 关键术语 216
7.7.2 复习题 217
7.7.3 习题 217
附录7A 加载和链接 219
第8章 虚拟内存 223
8.1 硬件和控制结构 223
8.1.1 局部性和虚拟内存 224
8.1.2 分页 225
8.1.3 分段 232
8.1.4 段页式 232
8.1.5 保护和共享 233
8.2 操作系统软件 234
8.2.1 读取策略 235
8.2.2 放置策略 235
8.2.3 置换策略 235
8.2.4 驻留集管理 239
8.2.5 清除策略 243
8.2.6 加载控制 244
8.3 UNIX和Solaris内存管理 245
8.3.1 分页系统 245
8.3.2 内核内存分配器 247
8.4 Linux内存管理 249
8.4.1 虚拟内存 249
8.4.2 内核内存分配 250
8.5 Windows内存管理 251
8.5.1 Windows虚拟地址映射 251
8.5.2 Windows分页 251
8.5.3 Windows 8交换 252
8.6 Android内存管理 252
8.7 小结 252
8.8 推荐读物和动画 253
8.9 关键术语、复习题和习题 253
8.9.1 关键术语 253
8.9.2 复习题 254
8.9.3 习题 254

第四部分 调度

第9章 单处理器调度 258
9.1 处理器调度的类型 258
9.1.1 长程调度 259
9.1.2 中程调度 260
9.1.3 短程调度 260
9.2 调度算法 260
9.2.1 短程调度规则 260
9.2.2 优先级的使用 261
9.2.3 选择调度策略 262
9.2.4 性能比较 268
9.2.5 公平共享调度 272
9.3 传统的UNIX调度 273
9.4 小结 274
9.5 推荐读物和动画 275
9.6 关键术语、复习题和习题 275
9.6.1 关键术语 275
9.6.2 复习题 275
9.6.3 习题 276
第10章 多处理器和实时调度 279
10.1 多处理器调度 279
10.1.1 粒度 279
10.1.2 设计问题 280
10.1.3 进程调度 281
10.1.4 线程调度 283
10.1.5 多核线程调度 286
10.2 实时调度 287
10.2.1 背景 287
10.2.2 实时操作系统的特点 288
10.2.3 实时调度 290
10.2.4 限期调度 291
10.2.5 速率单调调度 294
10.2.6 优先级反转 295
10.3 Linux调度 297
10.3.1 实时调度 297
10.3.2 非实时调度 298
10.4 UNIX SVR4调度 300
10.5 FreeBSD调度程序 301
10.5.1 优先级 301
10.5.2 对称多处理器与多核支持 301
10.6 Windows调度 303
10.6.1 进程和线程优先级 303
10.6.2 多处理器调度 304
10.7 小结 305
10.8 推荐读物 305
10.9 关键术语、复习题和习题 305
10.9.1 关键术语 305
10.9.2 复习题 306
10.9.3 习题 306

第五部分 输入/输出和文件

第11章 I/O管理和磁盘调度 310
11.1 I/O设备 310
11.2 I/O功能的组织 311
11.2.1 I/O功能的发展 312
11.2.2 直接存储器访问 312
11.3 操作系统设计问题 314
11.3.1 设计目标 314
11.3.2 I/O功能的逻辑结构 314
11.4 I/O缓冲 315
11.4.1 单缓冲 316
11.4.2 双缓冲 317
11.4.3 循环缓冲 317
11.4.4 缓冲的作用 317
11.5 磁盘调度 317
11.5.1 磁盘性能参数 317
11.5.2 磁盘调度策略 319
11.6 RAID 322
11.6.1 RAID级别0 325
11.6.2 RAID级别1 325
11.6.3 RAID级别2 326
11.6.4 RAID级别3 326
11.6.5 RAID级别4 327
11.6.6 RAID级别5 328
11.6.7 RAID级别6 328
11.7 磁盘高速缓存 328
11.7.1 设计考虑因素 328
11.7.2 性能考虑因素 329
11.8 UNIX SVR 4 I/O 331
11.8.1 缓冲区高速缓冲 331
11.8.2 字符队列 332
11.8.3 无缓冲I/O 332
11.8.4 UNIX设备 332
11.9 Linux I/O 333
11.9.1 磁盘调度 333
11.9.2 Linux页面缓存 334
11.10 Windows I/O 335
11.10.1 基本I/O机制 335
11.10.2 异步I/O和同步I/O 335
11.10.3 软件RAID 336
11.10.4 卷影复制 336
11.10.5 卷加密 336
11.11 小结 336
11.12 推荐读物和动画 337
11.13 关键术语、复习题和习题 338
11.13.1 关键术语 338
11.13.2 复习题 338
11.13.3 习题 338
第12章 文件管理 340
12.1 概述 340
12.1.1 文件和文件系统 340
12.1.2 文件结构 341
12.1.3 文件管理系统 342
12.2 文件组织和访问 344
12.2.1 堆 345
12.2.2 顺序文件 345
12.2.3 索引顺序文件 345
12.2.4 索引文件 346
12.2.5 直接文件或散列文件 346
12.3 B树 347
12.4 文件目录 349
12.4.1 内容 349
12.4.2 结构 350
12.4.3 命名 351
12.5 文件共享 352
12.5.1 访问权限 352
12.5.2 同时访问 353
12.6 记录组块 353
12.7 辅存管理 354
12.7.1 文件分配 354
12.7.2 空闲空间管理 357
12.7.3 卷 358
12.7.4 可靠性 358
12.8 UNIX文件管理 359
12.8.1 索引节点 359
12.8.2 文件分配 361
12.8.3 目录 362
12.8.4 卷结构 362
12.9 Linux虚拟文件系统 362
12.9.1 超级块对象 363
12.9.2 索引节点对象 364
12.9.3 目录项对象 364
12.9.4 文件对象 364
12.9.5 缓存 364
12.10 Windows文件系统 365
12.10.1 NTFS的重要特征 365
12.10.2 NTFS卷和文件结构 366
12.10.3 可恢复性 367
12.11 Android文件系统 368
12.11.1 文件系统 368
12.11.2 SQLite 369
12.12 小结 369
12.13 推荐读物 370
12.14 关键术语、复习题和习题 370
12.14.1 关键术语 370
12.14.2 复习题 370
12.14.3 习题 371

第六部分 嵌入式系统

第13章 嵌入式操作系统 374
13.1 嵌入式系统 374
13.2 嵌入式操作系统的特点 375
13.2.1 移植现有商业操作系统 375
13.2.2 为特定目的构建的嵌入式
操作系统 376
13.3 嵌入式Linux 376
13.3.1 内核大小 376
13.3.2 编译 376
13.3.3 嵌入式Linux文件系统 377
13.3.4 嵌入式Linux的优点 377
13.3.5 Android 377
13.4 TinyOS 377
13.4.1 无线传感器网络 378
13.4.2 TinyOS的目标 378
13.4.3 TinyOS的组件 379
13.4.4 TinyOS的调度程序 381
13.4.5 配置示例 381
13.4.6 TinyOS的资源接口 383
13.5 推荐读物 384
13.6 关键术语、复习题和习题 384
13.6.1 关键术语 384
13.6.2 复习题 385
13.6.3 习题 385
第14章 虚拟机 387
14.1 虚拟化方法 388
14.2 处理器问题 390
14.3 内存管理 391
14.4 输入/输出管理 392
14.5 VMware ESXi 393
14.6 微软Hyper-V与Xen系列 395
14.7 Java虚拟机 396
14.8 Linux VServer虚拟机架构 396
14.8.1 架构 396
14.8.2 进程调度 397
14.9 Android虚拟机 398
14.9.1 dex文件系统 398
14.9.2 Zygote 399
14.10 小结 399
14.11 推荐读物 399
14.12 关键术语、复习题和习题 400
14.12.1 关键术语 400
14.12.2 复习题 400
14.12.3 习题 400
第15章 计算机安全技术 401
15.1 入侵者与恶意软件 401
15.1.1 系统访问威胁 401
15.1.2 应对措施 402
15.2 缓冲区溢出 404
15.2.1 缓冲区溢出攻击 404
15.2.2 编译时防御 406
15.2.3 运行时防御 408
15.3 访问控制 409
15.3.1 文件系统访问控制 409
15.3.2 访问控制策略 410
15.4 UNIX访问控制 414
15.4.1 传统UNIX文件访问控制 414
15.4.2 UNIX中的访问控制列表 416
15.5 操作系统加固 416
15.5.1 操作系统安装:初始安装
与后续更新 417
15.5.2 删除不必要的服务、应用
与协议 417
15.5.3 对用户、组和认证过程
进行配置 418
15.5.4 对资源控制进行配置 418
15.5.5 安装额外的安全控制工具 418
15.5.6 对系统安全进行测试 419
15.6 安全性维护 419
15.6.1 记录日志 419
15.6.2 数据备份和存档 419
15.7 Windows安全性 420
15.7.1 访问控制方案 420
15.7.2 访问令牌 421
15.7.3 安全描述符 421
15.8 小结 423
15.9 推荐读物 424
15.10 关键术语、复习题和习题 424
15.10.1 关键术语 424
15.10.2 复习题 424
15.10.3 习题 424
第16章 分布式处理、客户-服务器
和集群 426
16.1 客户-服务器计算 426
16.1.1 什么是客户-服务器计算 426
16.1.2 客户-服务器应用 427
16.1.3 中间件 431
16.2 分布式消息传递 433
16.2.1 可靠性与不可靠性 434
16.2.2 阻塞与无阻塞 434
16.3 远程过程调用 434
16.3.1 参数传递 435
16.3.2 参数表示 436
16.3.3 客户-服务器绑定 436
16.3.4 同步和异步 436
16.3.5 面向对象机制 437
16.4 集群 437
16.4.1 集群的配置 437
16.4.2 操作系统设计问题 439
16.4.3 集群计算机架构 440
16.4.4 集群与对称多处理器 441
16.5 Windows集群服务器 441
16.6 Beowulf和Linux集群 442
16.6.1 Beowulf特性 442
16.6.2 Beowulf软件 443
16.7 小结 443
16.8 推荐读物 444
16.9 关键术语、复习题和习题 444
16.9.1 关键术语 444
16.9.2 复习题 445
16.9.3 习题 445
附录A 并发主题 446
附录B 编程和操作系统项目 460
参考文献 464

精彩书摘

  《操作系统――精髓与设计原理(第八版)》:
  Valve公司发现,使用粗粒度线程策略时,在双处理器上运行程序的性能是在单处理器上运行程序的性能的两倍,但这种性能提升仅在某些专门设计的情形下才能达到。在真实的游戏环境中,性能约能提升为原来的1.2倍。Valve公司还发现有效地利用细粒度线程非常困难,因为每个工作单元耗费的时间是变化的,而且管理输出和结果的时间轴所涉及的编程相当复杂。
  Valve公司还发现,随着8颗核心甚至16颗核心的多核系统的出现,混合线程方法最具应用前景,因此它可实现最佳的加速比。Valve识别了那些只在单处理器上运行时才非常有效率的系统。例如,混音系统几乎不与用户交互,它只处理自身的数据集,且不受窗口的帧配置限制。其他模块(如场景渲染)可组织为许多线程,这类模块既可以在单个处理器上运行,也可以在多个处理器上运行,因此能获得更好的性能。
  图4.9显示了渲染模块的线程结构。在这个层次结构中,高层的线程根据需要创建低层的线程。渲染模块依赖于Source引擎的一个关键部分——世界列表。世界列表是游戏世界中视觉元素的数据库表示。渲染模块的首要任务是决定游戏世界中的哪些区域需要渲染,次要任务是决定场景中哪些物体需要从多角度观看。然后是处理器密集型的渲染工作。渲染模块需要为每个物体渲染出不同角度的视图,如游戏角色的视图、电视屏幕中的视图及水面上倒映的视图。
  ……

前言/序言

封底文字

本书是一本关于操作系统概念、结构和机制的教材,目的是尽可能清楚和全面地展示现代操作系统的本质与特点。第八版在反映操作系统领域的变化的同时,保持了操作系统领域的广泛性,同时得到了许多教授和研究人员的审阅,叙述更清晰、紧凑。



本书新增内容

◆ Windows 8:详细介绍了Windows 8内核的各种关键技术。

◆ Android操作系统:详细介绍了Android移动平台的限制和运行环境。

◆ 嵌入式Linux:详细介绍了嵌入式Linux的关键要素。

◆ 虚拟机:新增了虚拟机操作系统设计问题的一章。

◆ 多核设计问题:增加了关于操作系统设计问题的讨论。

◆ I/O标准化:更新了相应的接口内容。

◆ 存储硬件:更新了存储硬件部分,包含了固态硬盘驱动器。

◆ 容错性:新增了介绍容错机制的一节。



本书特点

◆ 本书选择Windows 8、Android、UNIX 和Linux四个有代表性的操作系统作为实例讲解。

◆ 支持ACM/IEEE计算机科学课程体系2013。

◆ 适用于教学,书中含有大量的动画、视频和图表,每章末尾给出了关键术语、复习题、习题、深入阅读建议和相关网站的链接;书末给出了常用的缩略词和参考文献。

◆ 提供教学资源,包括参考答案、项目手册、PPT、PDF文件、教学大纲等,请参考书中的“教学支持说明”。

◆ 提供操作系统项目和其他学生练习。

◆ 提供操作系统教学平台OS/161、模拟项目和编辑项目。




译 者 序

  操作系统领域一直在不断地发展和变化,计算机科学与技术专业、软件工程专业和信息安全专业的学生要如何全面且深入地理解操作系统呢?William Stallings博士的这本教材给出了答案。William Stallings博士撰写了很多有关计算机领域的教材,曾12次获得美国年度最佳计算机科学教科书奖和学术作者协会奖。他的这本教材已更新到了第八版,并被全球的很多大学采用为操作系统课程的教材或参考书。本书内容丰富、布局合理、概念清晰、举例恰当、文字简洁,是一本不可多得的优秀教材。

  本书在保持第七版的众多特色的基础上,紧跟操作系统领域的最新发展,增加了许多新内容,包括Windows 8的各种关键技术、Android操作系统、嵌入式Linux、虚拟机技术、多核设计问题、I/O标准化问题、存储硬件,以及“ACM/IEEE计算机科学课程体系2013”中的核心专题——容错机制。

  特别值得一提的是,本书的配套资源可为教师和学生提供很大的帮助,这些资源包括每章末尾的习题、习题参考答案、项目安排建议、课堂教学课件、测试题、关于并发的教学视频、教学大纲样例等。这些资源非常宝贵,可为中国各高等学校开设操作系统课程的教师提高教学质量提供有力的支持。即便是在课堂上带领学生认真讨论每章后面精心提炼的关键术语,对学生顺利完成操作系统课程的学习也是非常有意义的。

  本书主要由陈向群、陈渝翻译。参加翻译、审阅和校对工作的还有王承珂、谌国风、申鹏、张大卫、刘璨、栗阶、刘波、杨立群、腾芸、潘伟民、金鑫、刘满、周晴漪等,在此对他们的贡献表示真诚的感谢。

  由于译者水平有限,本书的译文中必定会存在一些不足或错误之处,欢迎各位专家和广大读者们批评指正。


前 言

第八版新增内容

自本书第七版出版以来,操作系统领域一直在不断地发展着。本书的新版试图在反映这些变化的同时,保持操作系统领域的广泛性。修订本书时,第七版得到了从事教学和研究的许多教授的审阅,因此新版中许多地方的叙述更加清晰、紧凑。

除了有利于教学和阅读方便外,书中的内容也因应操作系统领域的进展做了整体更新。主要变化如下:

◆ Windows 8:Windows 8是微软公司面向个人计算机、工作站和服务器的最新操作系统,其内部架构出现了很多变化。新版详细介绍了Windows 8内核的各种关键技术,包括进程/线程管理、调度、内存管理、安全、文件系统和I/O。

◆ Android操作系统:Android是一个快速发展的移动平台。移动设备在现实世界中的限制和运行环境,与传统桌面计算机和服务器相比有很大的不同。因此学习这个新环境很重要。

◆ 嵌入式Linux:在嵌入式系统中使用最小版本的Linux已日益流行,新版中介绍了嵌入式Linux的关键要素。

◆ 虚拟机:服务器虚拟化及其他各种形式的虚拟机得到了广泛应用,因此本书新增了介绍面向虚拟机的操作系统的设计问题的一章。

◆ 多核设计问题:现在的主流体系结构是多核架构,因此新版中增加了相关操作系统设计问题的讨论。

◆ I/O标准化:考虑到最新技术的发展,本书进行了相应的更新,包括雷电接口。

◆ 存储硬件:书中的存储硬件部分进行了更新,现在已包含对固态硬盘驱动器的讨论。

◆ 容错:“ACM/IEEE计算机科学课程体系2013”已将容错列为操作系统课程的核心专题,因此新增了介绍容错机制的一节。


目标

本书是一本关于操作系统概念、结构和机制的教材,目的是尽可能清楚和全面地展示现代操作系统的本质与特点。

这是一项具有挑战性的任务。首先,需要为各种各样的计算机系统设计操作系统,包括嵌入式系统、智能手机、单用户工作站和个人计算机、中等规模的共享系统、大型计算机和超级计算机,以及诸如实时系统之类的专用机器。多样性不仅体现在机器的容量和速度上,而且体现在具体应用和系统支持的需求上;其次,计算机系统正以日新月异的速度发展变化,操作系统设计中的许多重要领域都是最近才开始研究的,并且关于这些领域及其他新领域的研究工作仍在进行。

尽管存在着多样性和变化快等问题,但一些基本概念仍然贯穿始终。当然,这些概念的应用依赖于当前的技术状况和特定的应用需求。本书的目的是全面讨论操作系统设计的基本原理,并将现代流行的设计问题与当前操作系统的发展方向相关联。

实例系统

本书的目的是使读者熟悉现代操作系统的设计原理和实现问题,因此单纯讲述概念和理论远远不够。为说明这些概念,同时将它们与真实世界中不得不做出的设计选择相关联,本书选择了4个操作系统作为实例:

◆ Windows 8:用于个人计算机、工作站和服务器的多任务操作系统。它融入了很多操作系统发展的最新技术。此外,Windows是最早采用面向对象原理进行设计的重要商业操作系统之一。本书涵盖了Windows最新版本所采用的技术,包括Windows 8。

◆ Android:Android是为嵌入式设备特别是手机量身定做的,主要是为了满足嵌入式环境的独特需求。本书介绍了Android的内核信息。

◆ UNIX:最初是为小型计算机设计的多用户操作系统,但后来广泛用于从微机到超级计算机的各种机器中。本书采用若干版本的UNIX作为实例。FreeBSD融合了很多的现代特征,是一个广泛应用的操作系统;Solaris是一个广泛应用的商业版UNIX系统。

◆ Linux:一个非常普及且源代码开放的UNIX版本。

选择这些操作系统的原因是它们之间存在相关性,同时它们也具有代表性。关于这些实例操作系统的讨论贯穿全书,而非集中于某一章或附录部分。因此在讨论并发性时,会描述每个实例操作系统的并发机制,并探讨各种设计选择的动机。采用真实的例子可加深读者对相关章节中设计概念的理解。为方便起见,读者也可在在线文档中查阅所有实例操作系统的资料。


对“ACM/IEEE计算机科学课程体系2013”的支持

本书的读者是大学学生和专业技术人员,可作为计算机科学、计算机工程和电气工程专业本科生一学期或两学期的操作系统课程教材。新版符合“ACM/IEEE计算机科学课程体系2013”(CS2013)最新草案版(2013年2月)的要求。在CS2013推荐的课程体系中,操作系统(OS)是计算机科学的主干课程。CS2013将所有课程内容分为三类,即核心类1(含课程体系中的所有专题)、核心类2(含所有或几乎所有专题)、选修类(提供深度和广度)。在操作系统领域,CS2013含有核心类1的2个专题、核心类2的4个专题及选修类的6个可选专题,每个专题下都含有一些子专题。本书涵盖了CS2013列出的三类课程中的所有专题和子专题。

表P.1中给出了本书对操作系统知识领域的支持情况。每个专题下的子专题清单,读者可参阅文件box.com/OS8e/CS2013-OS.pdf。


表P.1 本书对CS2013中操作系统知识领域的覆盖情况

专 题 本书中的覆盖情况

操作系统概述(类1) 第2章:操作系统概述


操作系统原理(类1) 第1章:计算机系统概述

第2章:操作系统概述

并发(类2) 第5章:并发性:互斥和同步

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

附录A:并发主题

第18章:分布式进程管理

第9章:单处理器调度

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

存储管理(类2) 第7章:内存管理

第8章:虚拟内存

安全与保护(类2) 第15章:计算机安全技术

虚拟机(选修) 第14章:虚拟机

设备管理(选修) 第11章:I/O管理和磁盘调度

文件系统(选修) 第12章:文件管理

实时与嵌入式系统(选修) 第10章:多处理器和实时调度

第13章:嵌入式操作系统

书中与Android相关的例子

容错(选修) 2.5节:容错性

系统性能评估(选修) 书中与存储管理、调度及其他领域相关的性能问题


本书结构

本书分为六部分(参见第0章的综述):

◆ 背景知识

◆ 进程

◆ 内存

◆ 调度

◆ 嵌入式系统

◆ 输入/输出和文件

本书适用于教学。书中含有大量的动画、视频和图表,每章末尾给出了关键术语、复习题、习题、深入阅读建议和相关网站的链接;书末给出了常用的缩略词和参考文献。此外,本书可为教师提供题库。


教师支持资源

本书的主要目的是成为操作系统这门课程的有效教学工具,这在本书的结构和补充材料中得到了反映。以下是便于教师教学的补充材料:



《计算的基石:深入理解计算机的核心》 本书并非仅仅是一本技术手册,它是一扇通往现代计算世界最核心秘密的窗口。在数字浪潮席卷全球的今天,我们每天都在与各种设备、软件和应用程序打交道,但其背后支撑一切运转的,是那个无声却至关重要的“大脑”——操作系统。这本书的宗旨,便是要揭开这层神秘的面纱,让你不仅知其然,更能知其所以然,从而真正理解我们所依赖的技术是如何实现的,以及它们为何如此设计。 内容梗概: 本书将带领读者踏上一段深入探索操作系统世界奥秘的旅程。我们不会停留在表面,而是深入其核心机制,逐一剖析构成现代计算环境的基石。 进程与线程管理: 想象一下,一台计算机如何在同一时间处理成千上万的任务?本书将详细讲解进程和线程的概念,以及操作系统如何高效地调度它们,确保流畅的运行体验。我们将探讨进程的状态转换,线程的生命周期,以及不同调度算法(如先到先得、最短作业优先、优先级调度、轮转法等)的原理和优缺点,并分析它们在不同场景下的适用性。你会了解到,看似同步进行的任务,背后是多么精密的协调与权衡。 内存管理: 内存是计算机的“工作台”,如何有效地分配和管理这宝贵的资源,直接影响着程序的运行效率和系统的稳定性。本书将深入讲解内存管理技术,包括程序的地址空间、分段、分页、虚拟内存等概念。你将理解内存是如何被划分、分配和回收的,以及页面置换算法(如FIFO、LRU、Optimal等)如何在有限的物理内存中容纳更多的程序。我们将探讨内存碎片化的问题,以及操作系统如何通过内存压缩、垃圾回收等技术来解决它。 文件系统: 文件是信息的载体,而文件系统则是组织、存储和检索这些信息的“图书馆”。本书将详细解析文件系统的结构和运作方式,包括目录结构、文件存储方式、文件访问控制以及数据完整性保障。我们将深入了解磁盘块的分配策略,文件系统的缓存机制,以及日志文件系统如何提高数据可靠性。你将明白,从你点击打开一个文件到内容呈现在屏幕上,背后发生了多少数据的读写和管理操作。 输入/输出(I/O)管理: 计算机与外部世界的交互,离不开高效的I/O管理。本书将深入探讨I/O设备的类型、I/O控制器的作用,以及各种I/O控制技术,包括程序控制I/O、中断驱动I/O和直接内存访问(DMA)。你将了解设备驱动程序在I/O过程中的关键作用,以及缓冲和缓存技术如何提高I/O性能。我们会分析轮询、中断、DMA等不同的I/O方式,以及它们各自的优势和局限性,从而让你理解为何不同设备的数据传输速度差异巨大。 并发与同步: 在多任务环境下,多个进程或线程之间需要协同工作,避免数据冲突和资源竞争。本书将深入讲解并发控制的技术,包括互斥锁、信号量、条件变量、管程等。你将理解死锁的概念及其产生的条件,并学习如何预防和解决死锁问题。我们将通过生动的例子,展示如何使用这些同步机制来协调并发执行的代码,确保程序的正确性和数据的完整性。 死锁: 死锁是并发编程中一个棘手的问题,它会导致系统部分或全部进程陷入僵局,无法继续运行。本书将详细分析死锁产生的四个必要条件(互斥、占有并等待、不可抢占、循环等待),并介绍多种死锁预防、避免和检测的方法。你将学会如何设计应用程序来避免死锁,以及当死锁发生时,如何有效地进行恢复。 安全性与保护: 保护系统的资源不被非法访问和破坏,是操作系统的另一项核心任务。本书将探讨操作系统提供的安全机制,包括访问控制、用户认证、权限管理和数据加密等。你将了解操作系统如何区分不同用户的身份,并根据预设的权限来限制他们对系统资源的访问。我们将讨论各种安全威胁,以及操作系统如何通过安全策略来抵御它们。 分布式系统入门: 随着互联网的普及,分布式系统已成为现代计算的重要组成部分。本书将对分布式系统的基本概念进行初步介绍,包括分布式系统的特点、挑战以及一些基本的分布式系统模型。虽然本书并非专门的分布式系统教材,但其内容将为读者理解更复杂的分布式系统打下坚实的基础。 本书的独特之处: 强调原理与设计: 与许多只介绍命令和语法的书籍不同,本书更侧重于讲解操作系统背后深层的原理和设计思想。我们不仅告诉你“如何做”,更会深入剖析“为什么这么做”,让你理解每一个设计决策的考量和权衡。 理论与实践结合: 书中通过大量的实例、图示和伪代码,将抽象的理论概念具象化,帮助读者更好地理解和掌握。许多概念的讲解都紧密结合实际的操作系统实现,让你看到理论如何在真实世界中发挥作用。 循序渐进的学习路径: 本书的结构经过精心设计,从基础概念逐步深入到复杂的机制,确保读者能够循序渐进地掌握操作系统的知识体系。每一章的内容都建立在前一章的基础上,形成一个逻辑连贯的学习过程。 培养问题解决能力: 通过对操作系统设计原理的深入理解,读者将能够更好地分析和解决实际的计算机系统问题,从而提升他们在软件开发、系统管理等领域的竞争力。 适合读者: 这本书是为那些希望深入了解计算机工作原理的读者而设计的。无论你是计算机科学专业的学生,还是对软件开发、系统架构充满热情的从业者,亦或是对技术有浓厚兴趣的爱好者,都能从中获益匪浅。如果你想摆脱“黑箱”式的计算机使用,希望理解你每天使用的软件和设备背后的逻辑,那么这本书将是你不可或缺的指南。 为何要理解操作系统? 在一个日益依赖计算的时代,对操作系统的理解已经不再是少数专业人士的专属技能。它就像是学习语言的语法,理解了语法,你才能更自如地运用语言进行表达和创作。对于开发者而言,深入理解操作系统能帮助你写出更高效、更稳定、更安全的程序;对于系统管理员而言,它能让你更精准地调优系统性能,诊断和解决问题;对于任何一位希望成为更聪明的技术使用者的人而言,它都能让你对所使用的技术有更深刻的洞察。 本书的目标,就是让你成为那个能够洞悉计算机“灵魂”的人,让你在面对复杂的计算挑战时,能够拥有强大的分析能力和解决问题的信心。让我们一起,揭开计算的神秘面纱,抵达其精髓与设计原理的深处。

用户评价

评分

我尝试着从一个完全非科班的角度来评价这本书。起初,我对操作系统这个概念只停留在“它让电脑能用”的模糊印象。读了这本书后,我才发现,原来我们每天使用的电脑背后,隐藏着如此精巧的设计和复杂的逻辑。作者的写作非常有耐心,他会从最基础的“程序是什么”开始讲起,然后慢慢引入进程、线程、内存、I/O等概念,每一步都衔接得非常自然。我特别喜欢作者在讲解多线程同步问题时,用的那些生动的故事和比喻,比如“哲学家就餐问题”,简直让我瞬间理解了死锁和避免死锁的重要性。虽然有些技术术语听起来还是有点吓人,但通过作者的解释,我感觉它们也没有那么难以理解了。书中的例子也很有代表性,经常会结合一些实际操作系统的设计来分析,让我能看到书本知识是如何落地到我们使用的软件中的。总而言之,这是一本能把枯燥的技术讲得有血有肉的书,即使是像我这样的“小白”,也能从中获得不少启发。

评分

这本书最让我印象深刻的是它在考察读者对概念的理解程度时,设计得非常巧妙。它不像一些速成教程那样,只是罗列概念和指令,而是通过大量的思考题和练习题,引导读者去主动分析和解决问题。我经常会在完成一个章节的学习后,花上大把时间来思考那些“挑战题”,这些题目往往会涉及到多个章节的知识点,需要我综合运用所学才能解答。有时候,一个题目就能让我纠结一下午,反复推敲,甚至会查阅其他资料来佐证自己的想法。这种“卡壳”的过程,虽然有时让人沮丧,但一旦解答出来,那种成就感是无与伦比的,而且对知识的掌握也变得异常牢固。书中提供的答案分析也非常详细,不仅给出了正确答案,还会解释为什么其他选项是错误的,或者在特定情况下为什么某个设计是优的。这种深入的解析,让我能看到自己的思维盲区,并及时纠正。

评分

这本书的语言风格非常严谨,用词精准,没有丝毫的含糊其辞。这一点对于深入理解操作系统这样高度抽象的学科来说,至关重要。每次阅读,我都觉得自己在和一位经验丰富的工程师在对话,他会耐心地、有条不紊地分析每一个组件的设计思路和技术细节。我尤其欣赏作者在引入新概念时,都会先给出其出现的背景和解决的问题,然后再深入探讨其实现原理。这种“知其然,更知其所以然”的讲解方式,让我不仅学会了“是什么”,更理解了“为什么”。例如,在讲解文件系统的部分,作者并没有仅仅罗列各种文件系统的特点,而是从早期磁盘存储的限制出发,分析了不同文件系统如何权衡性能、可靠性和易用性,最终发展出今天我们看到的NTFS、ext4等。这种历史纵深感和逻辑递进,让我在掌握知识的同时,也能培养出一种系统性的思考能力。我常常会合上书本,试着用自己的话复述一遍某个概念,并思考它在实际应用中可能遇到的挑战,这种主动思考的过程,极大地巩固了我的理解。

评分

从一个过来人的角度来看,这本书的优点在于它提供了一个非常全面且深入的视角来审视操作系统。它不仅仅是介绍性的,更侧重于“设计原理”这个层面,也就是为什么会这么设计,背后的权衡和取舍是什么。这本书能让你理解,为什么会有这些看似复杂的技术,它们又是如何协同工作以保证整个系统的高效和稳定运行的。我尤其看重的是它对并发和并行处理机制的细致阐述,这部分内容是现代计算机科学的核心之一,理解了它,就能更好地理解多核处理器、分布式系统等等。作者在处理这些复杂问题时,总是能够将抽象的理论与实际的工程实现相结合,使得读者在理论学习的同时,也能感受到工程上的挑战和解决方案。对我而言,这本书就像一个完整的骨架,把操作系统的各个部分都清晰地勾勒出来,让我能够在这个骨架上,进一步填充更具体的知识和经验。

评分

这本书的封面设计就透着一股扎实的学究气,金属质感的标题和深沉的背景色,一看就知道不是那种追求花哨视觉效果的书。拿到手里,厚重感也十足,沉甸甸的,让人感觉里面塞满了干货。我最喜欢的是它在讲解一些核心概念时,总能找到特别形象的比喻。比如讲进程调度算法的时候,作者会用排队买东西的比喻,把先来后到、优先级等等讲得明明白白,即使是初学者也能很快抓住要点。而且,书中大量的插图和流程图,就像一张张精准的路线图,指引着我一步步深入理解操作系统的内部运作。很多时候,我只需要盯着图看几分钟,就能把抽象的概念变得直观起来,这对于理解那些复杂的内存管理、并发控制等问题来说,简直是救星。我经常会在遇到难点时,翻回到前面的章节,重新梳理一下图示和文字的结合,总能发现之前忽略的细节,或者对整个逻辑框架有了更深的认识。这种循序渐进、图文并茂的讲解方式,让我在学习过程中少走了很多弯路,也增加了不少乐趣,不像有些理论书籍那样枯燥乏味。

评分

好厚的一本书,但是看完之后很有收获。

评分

茶馆(增订版)/语文新课标丛书

评分

挺好的,很满意

评分

内容浅显易懂,学习起来循序渐进,很好

评分

操作系统好,操作系统妙!

评分

买回来还没看,听说这门课程挺难的

评分

6666666666663

评分

一般

评分

买回来还没看,听说这门课程挺难的

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有