华信教育资源网
操作系统——精髓与设计原理(第九版)
丛   书   名: 国外计算机科学教材系列
作   译   者:陈向群 出 版 日 期:2020-07-01
出   版   社:电子工业出版社 维   护   人:马岚 
书   代   号:G0388310 I S B N:9787121388316

编辑推荐:

您的专属联系人更多
关注 评论(0) 分享
配套资源 图书内容 样章/电子教材 图书评价
  • 配 套 资 源

    本书资源

    会员上传本书资源

  • 图 书 内 容

    内容简介

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

    图书详情

    ISBN:9787121388316
    开 本:16(185*260)
    页 数:476
    字 数:900

    本书目录

    第一部分  背景知识
     
    第1章  计算机系统概述	2
    1.1  基本构成	2
    1.2  微处理器的发展	3
    1.3  指令的执行	4
    1.4  中断	6
    1.4.1  中断和指令周期	7
    1.4.2  中断处理	8
    1.4.3  多个中断	10
    1.5  存储器的层次结构	11
    1.6  高速缓存	13
    1.6.1  动机	13
    1.6.2  高速缓存原理	13
    1.6.3  高速缓存设计	15
    1.7  直接内存存取	15
    1.8  多处理器和多核计算机组织结构	16
    1.8.1  对称多处理器	16
    1.8.2  多核计算机	17
    1.9  关键术语、复习题和习题	19
    1.9.1  关键术语	19
    1.9.2  复习题	19
    1.9.3  习题	19
    附录1A  两级存储器的性能特征	21
    第2章  操作系统概述	26
    2.1  操作系统的目标和功能	26
    2.1.1  作为用户/计算机接口的
    操作系统	26
    2.1.2  作为资源管理器的操作系统	27
    2.1.3  操作系统的易扩展性	28
    2.2  操作系统的演化	29
    2.2.1  串行处理	29
    2.2.2  简单批处理系统	29
    2.2.3  多道批处理系统	31
    2.2.4  分时系统	33
    2.3  主要成就	34
    2.3.1  进程	34
    2.3.2  内存管理	36
    2.3.3  信息保护和安全	37
    2.3.4  调度和资源管理	38
    2.4  现代操作系统的特征	39
    2.5  容错性	40
    2.5.1  基本概念	41
    2.5.2  错误	41
    2.5.3  操作系统机制	42
    2.6  多处理器和多核操作系统设计
    考虑因素	42
    2.6.1  对称多处理器操作系统设计
    考虑因素	42
    2.6.2  多核操作系统设计考虑因素	43
    2.7  微软Windows系统简介	44
    2.7.1  背景	44
    2.7.2  体系结构	44
    2.7.3  客户-服务器模型	46
    2.7.4  线程和SMP	47
    2.7.5  Windows对象	47
    2.8  传统的UNIX系统	48
    2.8.1  历史	48
    2.8.2  描述	49
    2.9  现代UNIX系统	50
    2.9.1  System V Release 4(SVR4)	51
    2.9.2  BSD	51
    2.9.3  Solaris 11	51
    2.10  Linux操作系统	51
    2.10.1  历史	51
    2.10.2  模块结构	52
    2.10.3  内核组件	53
    2.11  Android	55
    2.11.1  Android软件体系结构	56
    2.11.2  Android运行时	57
    2.11.3  Android系统体系结构	59
    2.11.4  活动	60
    2.11.5  电源管理	60
    2.12  关键术语、复习题和习题	60
    2.12.1  关键术语	60
    2.12.2  复习题	61
    2.12.3  习题	61
     
    第二部分  进程
     
    第3章  进程描述和控制	64
    3.1  什么是进程	64
    3.1.1  背景	64
    3.1.2  进程和进程控制块	65
    3.2  进程状态	66
    3.2.1  两状态进程模型	67
    3.2.2  进程的创建和终止	68
    3.2.3  五状态模型	69
    3.2.4  被挂起的进程	71
    3.3  进程描述	74
    3.3.1  操作系统的控制结构	75
    3.3.2  进程控制结构	75
    3.4  进程控制	79
    3.4.1  执行模式	79
    3.4.2  进程创建	80
    3.4.3  进程切换	81
    3.5  操作系统的执行	82
    3.5.1  无进程内核	82
    3.5.2  在用户进程内运行	83
    3.5.3  基于进程的操作系统	84
    3.6  UNIX SVR4进程管理	84
    3.6.1  进程状态	84
    3.6.2  进程描述	85
    3.6.3  进程控制	87
    3.7  小结	87
    3.8  关键术语、复习题和习题	88
    3.8.1  关键术语	88
    3.8.2  复习题	88
    3.8.3  习题	88
    第4章  线程	91
    4.1  进程和线程	91
    4.1.1  多线程	91
    4.1.2  线程的功能	93
    4.2  线程分类	95
    4.2.1  用户级和内核级线程	95
    4.2.2  其他方案	97
    4.3  多核和多线程	99
    4.3.1  多核系统上的软件性能	99
    4.3.2  应用示例:Valve游戏软件	100
    4.4  Windows的进程和线程管理	101
    4.4.1  后台任务管理和应用生命
    周期	102
    4.4.2  Windows进程	103
    4.4.3  进程对象和线程对象	103
    4.4.4  多线程	104
    4.4.5  线程状态	104
    4.4.6  对操作系统子系统的支持	105
    4.5  Solaris的线程和SMP管理	106
    4.5.1  多线程体系结构	106
    4.5.2  动机	106
    4.5.3  进程结构	107
    4.5.4  线程的执行	108
    4.5.5  把中断当作线程	108
    4.6  Linux的进程和线程管理	109
    4.6.1  Linux任务	109
    4.6.2  Linux线程	110
    4.6.3  Linux命名空间	111
    4.7  Android的进程和线程管理	112
    4.7.1  安卓应用	112
    4.7.2  活动	113
    4.7.3  进程和线程	114
    4.8  Mac OS X的GCD技术	114
    4.9  小结	116
    4.10  关键术语、复习题和习题	116
    4.10.1  关键术语	116
    4.10.2  复习题	116
    4.10.3  习题	117
    第5章  并发:互斥和同步	121
    5.1  互斥:软件解决方法	122
    5.1.1  Dekker算法	122
    5.1.2  Peterson算法	125
    5.2  并发的原理	126
    5.2.1  一个简单的例子	127
    5.2.2  竞争条件	128
    5.2.3  操作系统关注的问题	128
    5.2.4  进程的交互	128
    5.2.5  互斥的要求	131
    5.3  互斥:硬件的支持	131
    5.3.1  中断禁用	131
    5.3.2  专用机器指令	132
    5.4  信号量	133
    5.4.1  互斥	136
    5.4.2  生产者/消费者问题	137
    5.4.3  信号量的实现	142
    5.5  管程	142
    5.5.1  使用信号的管程	142
    5.5.2  使用通知和广播的管程	145
    5.6  消息传递	146
    5.6.1  同步	147
    5.6.2  寻址	148
    5.6.3  消息格式	149
    5.6.4  排队原则	149
    5.6.5  互斥	149
    5.7  读者/写者问题	150
    5.7.1  读者优先	151
    5.7.2  写者优先	152
    5.8  小结	154
    5.9  关键术语、复习题和习题	154
    5.9.1  关键术语	154
    5.9.2  复习题	154
    5.9.3  习题	155
    第6章  并发:死锁和饥饿	164
    6.1  死锁原理	164
    6.1.1  可重用资源	167
    6.1.2  可消耗资源	167
    6.1.3  资源分配图	168
    6.1.4  死锁的条件	169
    6.2  死锁预防	169
    6.2.1  互斥	170
    6.2.2  占有且等待	170
    6.2.3  不可抢占	170
    6.2.4  循环等待	170
    6.3  死锁避免	170
    6.3.1  进程启动拒绝	171
    6.3.2  资源分配拒绝	171
    6.4  死锁检测	174
    6.4.1  死锁检测算法	174
    6.4.2  恢复	175
    6.5  一种综合的死锁策略	175
    6.6  哲学家就餐问题	176
    6.6.1  基于信号量的解决方案	177
    6.6.2  基于管程的解决方案	178
    6.7  UNIX并发机制	178
    6.7.1  管道	179
    6.7.2  消息	179
    6.7.3  共享内存	179
    6.7.4  信号量	179
    6.7.5  信号	180
    6.8  Linux内核并发机制	180
    6.8.1  原子操作	181
    6.8.2  自旋锁	182
    6.8.3  信号量	183
    6.8.4  屏障	184
    6.9  Solaris线程同步原语	185
    6.9.1  互斥锁	186
    6.9.2  信号量	186
    6.9.3  多读者/单写者锁	186
    6.9.4  条件变量	187
    6.10  Windows的并发机制	187
    6.10.1  等待函数	187
    6.10.2  分派器对象	187
    6.10.3  临界区	188
    6.10.4  轻量级读写锁和条件变量	188
    6.10.5  锁无关同步机制	189
    6.11  Android进程间通信	189
    6.12  小结	190
    6.13  关键术语、复习题和习题	190
    6.13.1  关键术语	190
    6.13.2  复习题	190
    6.13.3  习题	191
     
    第三部分  内存
     
    第7章  内存管理	196
    7.1  内存管理的需求	196
    7.1.1  重定位	196
    7.1.2  保护	197
    7.1.3  共享	197
    7.1.4  逻辑组织	197
    7.1.5  物理组织	198
    7.2  内存分区	198
    7.2.1  固定分区	198
    7.2.2  动态分区	200
    7.2.3  伙伴系统	202
    7.2.4  重定位	203
    7.3  分页	204
    7.4  分段	206
    7.5  小结	207
    7.6  关键术语、复习题和习题	207
    7.6.1  关键术语	207
    7.6.2  复习题	208
    7.6.3  习题	208
    附录7A  加载和链接	210
    第8章  虚拟内存	214
    8.1  硬件和控制结构	214
    8.1.1  局部性和虚拟内存	215
    8.1.2  分页	216
    8.1.3  分段	222
    8.1.4  段页式	223
    8.1.5  保护和共享	224
    8.2  操作系统软件	224
    8.2.1  读取策略	225
    8.2.2  放置策略	226
    8.2.3  置换策略	226
    8.2.4  驻留集管理	230
    8.2.5  清除策略	234
    8.2.6  加载控制	234
    8.3  UNIX和Solaris内存管理	235
    8.3.1  分页系统	235
    8.3.2  内核内存分配器	237
    8.4  Linux内存管理	238
    8.4.1  虚拟内存	239
    8.4.2  内核内存分配	240
    8.5  Windows内存管理	240
    8.5.1  Windows虚拟地址映射	241
    8.5.2  Windows分页	241
    8.5.3  Windows交换	242
    8.6  Android内存管理	242
    8.7  小结	242
    8.8  关键术语、复习题和习题	243
    8.8.1  关键术语	243
    8.8.2  复习题	243
    8.8.3  习题	243
     
    第四部分  调度
     
    第9章  单处理器调度	248
    9.1  处理器调度的类型	248
    9.1.1  长程调度	249
    9.1.2  中程调度	250
    9.1.3  短程调度	250
    9.2  调度算法	250
    9.2.1  短程调度规则	250
    9.2.2  优先级的使用	251
    9.2.3  选择调度策略	252
    9.2.4  性能比较	258
    9.2.5  公平共享调度	261
    9.3  传统的UNIX调度	263
    9.4  小结	264
    9.5  关键术语、复习题和习题	264
    9.5.1  关键术语	264
    9.5.2  复习题	264
    9.5.3  习题	265
    第10章  多处理器、多核和实时调度	268
    10.1  多处理器和多核调度	268
    10.1.1  粒度	268
    10.1.2  设计问题	269
    10.1.3  进程调度	270
    10.1.4  线程调度	271
    10.1.5  多核线程调度	275
    10.2  实时调度	276
    10.2.1  背景	276
    10.2.2  实时操作系统的特点	276
    10.2.3  实时调度	278
    10.2.4  限期调度	279
    10.2.5  速率单调调度	282
    10.2.6  优先级反转	284
    10.3  Linux调度	285
    10.3.1  实时调度	285
    10.3.2  非实时调度	286
    10.4  UNIX SVR4调度	287
    10.5  FreeBSD调度程序	288
    10.5.1  优先级	288
    10.5.2  对称多处理器与多核支持	289
    10.6  Windows调度	290
    10.6.1  进程和线程优先级	290
    10.6.2  多处理器调度	291
    10.7  小结	291
    10.8  关键术语、复习题和习题	292
    10.8.1  关键术语	292
    10.8.2  复习题	292
    10.8.3  习题	292
     
    第五部分  输入/输出和文件
     
    第11章  I/O管理和磁盘调度	296
    11.1  I/O设备	296
    11.2  I/O功能的组织	297
    11.2.1  I/O功能的发展	297
    11.2.2  直接内存访问	298
    11.3  操作系统设计问题	299
    11.3.1  设计目标	299
    11.3.2  I/O功能的逻辑结构	300
    11.4  I/O缓冲	301
    11.4.1  单缓冲	301
    11.4.2  双缓冲	302
    11.4.3  循环缓冲	302
    11.4.4  缓冲的作用	302
    11.5  磁盘调度	303
    11.5.1  磁盘性能参数	303
    11.5.2  磁盘调度策略	304
    11.6  RAID	307
    11.6.1  RAID级别0	310
    11.6.2  RAID级别1	310
    11.6.3  RAID级别2	311
    11.6.4  RAID级别3	311
    11.6.5  RAID级别4	312
    11.6.6  RAID级别5	312
    11.6.7  RAID级别6	312
    11.7  磁盘高速缓存	313
    11.7.1  设计考虑因素	313
    11.7.2  性能考虑因素	314
    11.8  UNIX SVR 4 I/O	315
    11.8.1  缓冲区高速缓冲	315
    11.8.2  字符队列	316
    11.8.3  无缓冲I/O	316
    11.8.4  UNIX设备	316
    11.9  Linux I/O	317
    11.9.1  磁盘调度	317
    11.9.2  Linux页面缓存	319
    11.10  Windows I/O	320
    11.10.1  基本I/O机制	320
    11.10.2  异步I/O和同步I/O	320
    11.10.3  软件RAID	321
    11.10.4  卷影复制	321
    11.10.5  卷加密	321
    11.11  小结	321
    11.12  关键术语、复习题和习题	322
    11.12.1  关键术语	322
    11.12.2  复习题	322
    11.12.3  习题	322
    第12章  文件管理	324
    12.1  概述	324
    12.1.1  文件和文件系统	324
    12.1.2  文件结构	325
    12.1.3  文件管理系统	326
    12.2  文件组织和访问	327
    12.2.1  堆	328
    12.2.2  顺序文件	328
    12.2.3  索引顺序文件	329
    12.2.4  索引文件	329
    12.2.5  直接文件或散列文件	330
    12.3  B树	330
    12.4  文件目录	332
    12.4.1  内容	332
    12.4.2  结构	333
    12.4.3  命名	334
    12.5  文件共享	335
    12.5.1  访问权限	335
    12.5.2  同时访问	335
    12.6  记录组块	336
    12.7  辅存管理	337
    12.7.1  文件分配	337
    12.7.2  空闲空间管理	339
    12.7.3  卷	341
    12.7.4  可靠性	341
    12.8  UNIX文件管理	341
    12.8.1  索引节点	342
    12.8.2  文件分配	343
    12.8.3  目录	344
    12.8.4  卷结构	344
    12.9  Linux虚拟文件系统	344
    12.9.1  超级块对象	345
    12.9.2  索引节点对象	346
    12.9.3  目录项对象	346
    12.9.4  文件对象	346
    12.9.5  缓存	346
    12.10  Windows文件系统	347
    12.10.1  NTFS的重要特征	347
    12.10.2  NTFS卷和文件结构	347
    12.10.3  可恢复性	349
    12.11  Android文件系统	350
    12.11.1  文件系统	350
    12.11.2  SQLite	350
    12.12  小结	351
    12.13  关键术语、复习题和习题	351
    12.13.1  关键术语	351
    12.13.2  复习题	351
    12.13.3  习题	352
     
    第六部分  嵌入式系统
     
    第13章  嵌入式操作系统	354
    13.1  嵌入式系统	354
    13.1.1  嵌入式系统概念	354
    13.1.2  通用处理器和专用处理器	355
    13.1.3  微处理器	355
    13.1.4  微控制器	356
    13.1.5  深度嵌入式系统	357
    13.2  嵌入式操作系统的特性	357
    13.2.1  主环境和目标环境	358
    13.2.2  开发方法	359
    13.2.3  适配现有的操作系统	359
    13.2.4  根据目标建立的嵌入式
    操作系统	359
    13.3  嵌入式Linux	360
    13.3.1  嵌入式Linux系统的特性	360
    13.3.2  嵌入式Linux文件系统	361
    13.3.3  嵌入式Linux的优势	361
    13.3.4  μClinux	362
    13.3.5  Android	363
    13.4  TinyOS	364
    13.4.1  无线传感器网络	364
    13.4.2  TinyOS的目标	365
    13.4.3  TinyOS的组件	365
    13.4.4  TinyOS的调度程序	367
    13.4.5  配置示例	367
    13.4.6  TinyOS的资源接口	369
    13.5  关键术语、复习题和习题	370
    13.5.1  关键术语	370
    13.5.2  复习题	370
    13.5.3  习题	370
    第14章  虚拟机	372
    14.1  虚拟机概念	372
    14.2  虚拟机管理程序	374
    14.2.1  虚拟机管理程序	374
    14.2.2  半虚拟化	375
    14.2.3  硬件辅助虚拟化	376
    14.2.4  虚拟设备	376
    14.3  容器虚拟化	377
    14.3.1  内核控制组	377
    14.3.2  容器的概念	377
    14.3.3  容器文件系统	379
    14.3.4  微服务	380
    14.3.5  Docker	380
    14.4  处理器问题	381
    14.5  内存管理	382
    14.6  输入/输出管理	383
    14.7  VMware ESXi	384
    14.8  微软Hyper-V与Xen系列	385
    14.9  Java虚拟机	386
    14.10  Linux VServer虚拟机架构	386
    14.10.1  架构	387
    14.10.2  进程调度	387
    14.11  小结	388
    14.12  关键术语、复习题和习题	388
    14.12.1  关键术语	388
    14.12.2  复习题	389
    14.12.3  习题	389
    第15章  操作系统安全技术	390
    15.1  入侵者与恶意软件	390
    15.1.1  系统访问威胁	390
    15.1.2  应对措施	391
    15.2  缓冲区溢出	392
    15.2.1  缓冲区溢出攻击	392
    15.2.2  编译时防御	394
    15.2.3  运行时防御	396
    15.3  访问控制	397
    15.3.1  文件系统访问控制	397
    15.3.2  访问控制策略	399
    15.4  UNIX访问控制	402
    15.4.1  传统UNIX文件访问控制	402
    15.4.2  UNIX中的访问控制列表	403
    15.5  操作系统加固	404
    15.5.1  操作系统安装:初始安装
    与后续更新	404
    15.5.2  删除不必要的服务、应用
    与协议	405
    15.5.3  对用户、组和认证过程
    进行配置	405
    15.5.4  对资源控制进行配置	405
    15.5.5  安装额外的安全控制工具	406
    15.5.6  对系统安全进行测试	406
    15.6  安全性维护	406
    15.6.1  记录日志	406
    15.6.2  数据备份和存档	407
    15.7  Windows安全性	407
    15.7.1  访问控制方案	407
    15.7.2  访问令牌	408
    15.7.3  安全描述符	408
    15.8  小结	410
    15.9  关键术语、复习题和习题	411
    15.9.1  关键术语	411
    15.9.2  复习题	411
    15.9.3  习题	411
    第16章  云与物联网操作系统	413
    16.1  云计算	413
    16.1.1  云计算要素	413
    16.1.2  云服务模型	414
    16.1.3  云部署模型	415
    16.1.4  云计算参考架构	416
    16.2  云操作系统	418
    16.2.1  基础设施即服务	419
    16.2.2  云操作系统的需求	420
    16.2.3  云操作系统的基本架构	420
    16.2.4  OpenStack	424
    16.3  物联网	428
    16.3.1  物联网中的物	429
    16.3.2  升级换代	429
    16.3.3  物联网支持设备的组件	429
    16.3.4  物联网和云环境	429
    16.4  物联网操作系统	431
    16.4.1  受限设备	431
    16.4.2  物联网操作系统的要求	432
    16.4.3  物联网操作系统架构	433
    16.4.4  RIOT	434
    16.5  关键术语和复习题	435
    16.5.1  关键术语	435
    16.5.2  复习题	436
    附录A  并发主题	437
    附录B  编程和操作系统项目	446
    参考文献  	450
    展开

    前     言

    译 者 序
    操作系统技术一直在不断地发展和变化,计算机科学与技术专业、软件工程专业和信息安全专业的学生怎样全面且深入地理解操作系统呢?William Stallings博士的这本教材给出了答案。William Stallings博士撰写了很多有关计算机领域的教材,曾13次获得美国年度最佳计算机科学教科书奖和学术作者协会奖。他的这本教材已更新到了如今的第九版,并被国内外很多大学采用为操作系统课程的教材或参考书。本书内容丰富、布局合理、概念清晰、举例恰当、文字简洁,是一本不可多得的优秀教材。
    本书在保持第八版的众多特色的基础上,紧跟操作系统技术的最新发展,增加了许多新内容:及时反映了Linux内核和Android内核的最新技术变化;从内容的组织、广泛性和先进性上完全改写了虚拟机一章,并增加了关于容器的内容;新增了云操作系统的内容;新增了物联网操作系统的内容。
    特别值得一提的是,本书的配套资源可为教师和学生提供很大的帮助,这些资源包括每章末尾复习题和习题的参考答案、项目安排建议、教学课件、测试题库、教学大纲示范等。这些资源非常宝贵,可为我国各高等学校开设操作系统课程的教师提高教学质量提供有力的支持。即使是在课堂上带领学生认真讨论每章后面精心提炼的关键术语,对学生顺利完成操作系统课程的学习也是非常有意义的。
    本书主要由陈向群、陈渝翻译。参加整理和校对工作的还有杨子岳、刘炳言、张子祺、田檬、张宸宁、阎钰璠、刘德培、江超等,在此对他们的贡献表示真诚的感谢。
    由于译者水平有限,本书的译文中必定会存在一些不足或错误之处,欢迎各位专家和广大读者批评指正。
    
    译  者
    
    
    前   言
    第九版新增内容
    自本书第八版出版以来,操作系统领域一直都在不断地发展。第九版试图在反映这些发展的同时,保持操作系统领域的广泛性。修订本书时,从事教学和研究的许多教授审阅了第九版,因此新版中许多地方的叙述更清晰、更紧凑。
    除有利于教学和阅读外,书中的内容也因应操作系统领域的进展做了整体更新,并扩展了教师和学生支持。主要变化如下:
    ?	更新了Linux的内容。为反映第八版后Linux内核的最新变化,更新和扩展了Linux的内容。
    ?	更新了Android的内容。为反映第八版后Android内核的最新变化,更新和扩展了Android的内容。
    ?	新增了虚拟化方面的内容。完全改写了关于虚拟机的章节,更好地组织了内容,加入了更广泛的新内容。此外,新增加了一节关于容器使用方面的内容。
    ?	新增了云操作系统的内容。新增了云操作系统的介绍,包括云计算概述、云操作系统原理和需求,以及流行开源云操作系统OpenStack。
    ?	新增了物联网操作系统的内容。新增了物联网操作系统的介绍,包括物联网概述、物联网操作系统原理和需求,以及流行开源物联网操作系统RIOT。
    ?	更新和扩展了嵌入式操作系统的内容。本章实质性的修改和扩展内容包括:
    —	扩展了嵌入式系统章节,增加了微控制器和深度嵌入式系统的介绍。
    —	扩展和更新了嵌入式操作系统的概述部分。
    —	扩展了嵌入式Linux的内容,新增了关于流行嵌入式Linux系统μClinux的介绍。
    ?	并发。在项目手册中增加了新项目,以便更好地帮助学生理解并发的原理。
    目标
    本书是一本关于操作系统概念、结构和原理的教材,目的是尽可能清楚与全面地展示现代操作系统的本质和特点。
    这是一项具有挑战性的任务。首先,需要为各种各样的计算机系统设计操作系统,包括嵌入式系统、智能手机、单用户工作站和个人计算机、中等规模的共享系统、大型计算机和超级计算机,以及诸如实时系统之类的专用机器。多样性不仅体现在机器的容量和速度上,而且体现在具体应用和系统支持的需求上。其次,计算机系统正以日新月异的速度发展和变化,操作系统设计中的许多重要领域都是最近才开始研究的,并且关于这些领域及其他新领域的研究工作仍在进行。
    尽管存在多样性和变化快等问题,但有些基本概念仍然保持不变。当然,这些概念的应用依赖于当前的技术状况和特定的应用需求。本书的目的是全面讨论操作系统设计的基本原理,并将现代流行的设计问题与当前操作系统的发展方向关联起来。
    实例系统
    本书的目的是让读者熟悉现代操作系统的设计原理和实现问题,因此单纯地讲述概念和理论远远不够。为了说明这些概念,同时将它们与真实世界中不得不做出的设计选择相关联,本书选择了4个操作系统作为实例:
    ?	Windows:用于个人计算机、工作站和服务器的多任务操作系统,融入了很多操作系统发展的最新技术。此外,Windows是最早采用面向对象原理进行设计的重要商业操作系统之一。本书涵盖了Windows最新版本(包括Windows 10)采用的技术。
    ?	Android:Android是为嵌入式设备特别是手机量身定做的,主要是为了满足嵌入式环境的独特需求。本书介绍了Android的内核信息。
    ?	UNIX:最初是为小型计算机设计的多用户操作系统,但后来广泛用于从微型计算机到超级计算机的各种机器中。本书采用若干版本的UNIX作为实例。FreeBSD融合了很多的现代特征,是一个广泛应用的操作系统;Solaris是一个广泛应用的商用UNIX系统。
    ?	Linux:一个非常普及且源代码开放的UNIX版本。
    选择这些操作系统的原因是它们之间存在相关性,同时它们也具有代表性。关于这些实例系统的讨论贯穿全书,而非集中于某章或附录部分。因此,在讨论并发性时,会描述每个实例系统的并发机制,并探讨各种设计选择的动机。采用真实的例子可加深读者对相关章节中设计概念的理解。为方便起见,读者也可以在在线文档中查阅所有实例系统的资料。
    支持ACM/IEEE计算机科学课程体系2013
    本书的读者是大学学生和专业技术人员,可作为计算机科学、计算机工程和电气工程专业本科生一学期或两学期操作系统课程的教材。新版符合“ACM/IEEE计算机科学课程体系2013”(CS2013)最新草案版(2013年12月)的要求。在CS2013推荐的课程体系中,操作系统(OS)是计算机科学的主干课程。CS2013将所有课程内容分为三类,即核心类1(含课程体系中的所有专题)、核心类2(含所有或几乎所有专题)、选修类(深度和广度更大)。在操作系统领域,CS2013含有核心类1的2个专题、核心类2的4个专题及选修类的6个可选专题,每个专题下都含有一些子专题。本书涵盖了CS2013列出的三类课程中的所有专题和子专题。
    表P.1中给出了本书对操作系统知识领域的支持情况。对于每个专题下的子专题清单,读者可参阅文件网站box.com/OS9e上的文件CS2013-OS.pdf。
    表P.1  本书对CS2013中操作系统知识领域的覆盖情况
    专    题	本书的覆盖情况
    操作系统概述(核心类1)	第2章:操作系统概述
    操作系统原理(核心类1)	第1章:计算机系统概述
    第2章:操作系统概述
    并发(核心类2)	第5章:并发:互斥和同步
    第6章:并发:死锁和饥饿
    附录A:并发主题
    第19章:分布式进程管理
    调度与分派(核心类2)	第9章:单处理器调度
    第10章:多处理器、多核和实时调度
    存储管理(核心类2)	第7章:内存管理
    第8章:虚拟内存
    安全与保护(核心类2)	第15章:操作系统安全技术
    虚拟机(选修类)	第14章:虚拟机
    设备管理(选修类)	第11章:I/O管理和磁盘调度
    文件系统(选修类)	第12章:文件管理
    实时与嵌入式系统(选修类)	第10章:多处理器、多核和实时调度
    第13章:嵌入式操作系统。书中与Android相关的例子
    容错(选修类)	2.5节:容错性
    系统性能评估(选修类)	书中与存储管理、调度及其他领域相关的性能问题
    本书结构
    本书分为六部分:
    1.	背景知识
    2.	进程
    3.	内存
    4.	调度
    5.	输入/输出和文件
    6.	嵌入式系统(嵌入式操作系统、虚拟机、操作系统安全、云与物联网操作系统)
    为便于说明,书中含有大量的图表,每章末尾给出了关键术语、复习题和习题;书后给出了参考文献。此外,本书可为教师提供题库。
    教师支持资源
    本书的主要目的是成为操作系统课程的有效教学工具,这体现在本书的结构和补充材料中。以下是便于教师教学的补充材料:
    ?	参考答案:提供了每章末复习题和习题的答案。
    ?	项目手册:对前言中列出的所有项目给出了项目布置建议。
    ?	PowerPoint课件:所有章节的课件,可用于课堂教学。
    ?	PDF文件:给出了本书中的全部图表。
    ?	测试题库:按章给出了测试题,并附有单独的答案。
    ?	教学大纲示范:本书的内容很多,很难在一学期内全部讲授。教学大纲示范告诉教师如何在有限的时间内使用本书。大纲示范是根据使用本书上一版的教师的实际教学经验总结形成的。
    所有支持材料均可在本书的教师资源中心(IRC)找到。需要这些材料的教师,可通过培生公司的网站www.pearsonhighered.com/stallings下载。要访问IRC,可联系本地销售代表 。
    操作系统项目和其他学生练习
    对许多教师而言,操作系统课程的一项重要任务是,通过一个或多个项目来加深学生对概念的理解。本书在课程中加入了一个项目,因为这个项目得到了众多的支持。本书的在线部分提供两个编程项目。此外,在通过培生公司得到的教师支持资源中,不仅包括分配和组织各个项目的方式,而且包括针对不同项目和特殊任务的手册。教师可布置如下任务:
    ?	OS/161项目:见后面的介绍。
    ?	模拟项目:见后面的介绍。
    ?	信号量项目:旨在帮助学生理解并发的概念,包括竞争条件、饥饿和死锁。
    ?	内核项目:IRC提供了两组不同的Linux内核编程项目及一组Android内核编程项目的完整支持。
    ?	编程项目:见后面的介绍。
    ?	研究项目:研究特定专题的网上项目和报告撰写。
    ?	阅读/报告任务:让学生阅读后完成报告或布置为作业的论文。
    ?	写作任务:便于学习的写作任务清单。
    ?	讨论专题:课堂、聊天室和消息板上所用的专题,加深学生的理解和协作。
    此外,本书还为教师和学生提供一个研究并发机制的软件包BACI。
    这些项目和学生练习可丰富教师的教学内容,教师和学生也可根据自己的需要对其进行裁剪,详见附录B。
    OS/161项目
    第九版支持基于OS/161的主动学习部分。OS/161是一个教学用操作系统,越来越多的人已将其作为操作系统内核教学的首选平台,目的是既让学生体验真实操作系统的工作方式,又不会被相当复杂的成熟操作系统如Linux压垮。与部署得最多的操作系统比较,OS/161的体量很小(仅约20000行代码和注释),因此学生很容易在理解整个代码的基础上进行二次开发。
    IRC包括如下内容:
    1.教师可上传到课程服务器上供学生下载的html文件压缩包。
    2.帮助学生使用OS/161的入门手册。
    3.供学生实践使用的OS/161练习。
    4.供教师使用的习题解答。
    5.教材中的相应位置会说明这些项目,学生阅读相关内容后可完成相应的OS/161项目。
    模拟项目
    IRC提供了涵盖操作系统设计关键内容的7个模拟项目。学生可以使用这套模拟工具包分析操作系统的设计特性。这些模拟工具是用Java编写的,既可作为Java应用程序在本地运行,又可在浏览器上在线运行。IRC中含有学生所用的作业,这些作业演示了实施步骤和结果。
    编程项目
    新版教材支持编程项目。编程项目有两个:一是开发一个shell程序,即命令解释器;二是开发教材在线部分中介绍的进程分派器。IRC为开发程序提供了所需的资料和逐步练习。
    指导教师也可针对本书中的许多基本原理安排强度更大的编程项目。本书为这些项目的实施提供了详细的指导材料,并提供了与每个项目相关的习题。
    IRC提供的项目手册包括一系列编程项目,涵盖了大部分专题,并且可以在任何平台上使用合适的语言来实现。
    在线文档和其他资源
    第九版在两个网站上为学生在线提供大量配套资料。其中,配套网站(先登录WilliamStallings. com/OperatingSystems,后单击Student Resources链接)中含有按章组织的链接列表和本书的勘误。网站上的相关内容包括: 
    ?	在线章节:为使本书不致太厚,5章内容以PDF格式提供,详见目录。
    ?	在线附录:很多有趣的专题未放入纸质教材,而以附录的形式放在网上,详见目录。
    ?	习题和解答:为便于学生理解,本书提供了一套习题及其解答。
    致谢
    感谢以下人员做出的贡献:Rami Rosen提供了大部分关于Linux的新内容,Vinet Chadha提供了关于虚拟机的新内容,Durgadoss Ramanathan提供了关于Android ART的新内容。
    本书的多次修订得到了数以百计的教师和技术人员的帮助,他们慷慨地奉献了宝贵的时间和专业知识,在此向他们表示感谢。
    以下教师审阅了本书的所有或大部分初稿:Jiang Guo(加州大学洛杉矶分校)、Euripides Montagne(中佛罗里达大学)、Kihong Park(普渡大学)、Mohammad Abdus Salam(南方大学农工学院)、Robert Marmorstein(朗沃德大学)、Christopher Diaz(薛顿希尔大学)和Barbara Bracken(威尔克斯大学)。
    还要感谢所有对一个或多个章节进行详细技术审查的如下人员:Nischay Anikar、Adri Jovin、Ron Munitz、Fatih Eyup Nar、Atte Peltomaki、Durgadoss Ramanathan、Carlos Villavieja、Wei Wang、Serban Constantinescu和Chen Yang。
    感谢详细审阅实例系统的如下人员:Kristopher Micinski、Ron Munitz、Atte Peltomaki、Durgadoss Ramanathan、Manish Shakya、Samuel Simon、Wei Wang和Chen Yang审阅了关于Android的内容;Tigran Aivazian、Kaiwan Billimoria、Peter Huewe、Manmohan Manoharan、Rami Rosen、Neha Naik和Hualing Yu审阅了关于Linux的内容;Francisco Cotrina、Sam Haidar、Christopher Kuleci、Benny Olsson和Dave Probert审阅了关于Windows的内容;Emmanuel Baccelli和Kaspar Schleiser审阅了关于RIOT的内容;Bob Callaway审阅了关于OpenStack的内容。eCosCentric公司的Nick Garnett审阅了关于eCos的内容;TinyOS公司的开发人员Philip Levis审阅了关于TinyOS的内容;Sid Young审阅了关于容器虚拟化的内容。
    多伦多大学的Andrew Peterson教授为IRC补充了关于OS/161的内容,James Craig Burley撰写和录制了相关视频。
    得克萨斯州立大学圣安东尼奥分校的Adam Critchley开发了模拟项目的习题;伊利诺伊大学香槟分校的Matt Sparks为本书改编了一组编程习题。
    澳大利亚国防大学的Lawrie Brown提供了关于缓冲区溢出攻击的内容;密歇根工学院的Ching-Kuang Shene为竞争条件一节提供了示例,并审阅了该节;克罗拉多矿业大学的Tracy Camp和Keith Hellman提供了一些新的课外练习。此外,Fernando Ariel Gont提供了一些课外练习,同时详细审阅了本书的全部章节。
    感谢威廉与玛丽学院的Bill Bynum和克罗拉多矿业大学的Tracy Camp对附录O的贡献;感谢伍斯特理工学院的Steve Taylor对教师手册中程序设计项目和阅读/报告任务的贡献;感谢乔治?梅森大学的Tan N. Nguyen教授对教学手册中研究项目的贡献;感谢格里菲斯大学的Ian G. Graham对书中两个编程项目的贡献;感谢库兹敦大学的Oskars Rieksts允许我使用他的讲稿、测验与项目。
    最后要感谢负责出版本书的人们。他们是培生公司的工作人员,特别是编辑Tracy Johnson及其助理Kristy Alaura、产品经理Carole Snyder和项目经理Bob Engelhardt。感谢培生公司的市场和销售人员,没有他们的努力,本书不可能面世。
    
    展开

    作者简介

    William Stallings,美国圣母大学电气工程专业学士,麻省理工学院计算机科学系博士。William Stallings已出版图书18种,含修订版在内共出版图书40种,内容涉及计算机安全、计算机网络和计算机体系结构。在多家期刊上发表了大量论文,包括Proceedings of the IEEE、ACM Computing Reviews和Cryptologia。13次荣获教材与学术作者协会颁发的最佳计算机科学教材奖。在计算机科学领域的30多年,William Stallings一直是一位技术贡献者、技术管理者和多家高科技公司的主管;针对许多计算机和操作系统,设计和实现了基于TCP/IP与基于OSI的协议套件。<BR>关于作者William Stallings,美国圣母大学电气工程专业学士,麻省理工学院计算机科学专业博士。William Stallings已出版图书近20种,含修订版在内共出版图书40种,内容涉及计算机安全、计算机网络和计算机体系结构。在多家期刊上发表了大量论文,包括《IEEE进展》《ACM计算评论》和《密码术》。13次荣获教材与学术作者协会颁发的最佳计算机科学教科书奖。在计算机科学领域工作的30多年,William Stallings一直是一位技术贡献者、技术管理者和多家高科技公司的主管;针对许多计算机和操作系统,设计和实现了基于TCP/IP与基于OSI的协议套件。William Stallings还是政府机构、计算机和软件供应商以及设计、选用网络软件与产品的用户的顾问。创建与维护了计算机科学专业学生资源网站ComputerScienceStudent.com,为计算机科学专业的学生(及专业人员)提供文献及大量专题链接,也是学术期刊《密码术》的编委会成员。
  • 样 章 试 读
  • 图 书 评 价 我要评论
华信教育资源网