您现在的位置是:论文诗词网 > 成语词典 > 图书库 >

现代操作系统(原书第4版)

2021-12-02 22:26图书库 人已围观



现代操作系统(原书第4版)

基本介绍


作者: [荷] Andrew S. Tanenbaum / [荷] Herbert Bos
出版社: 机械工业出版社
原作名: Modern Operating Systems (4th Edition)
译者: 陈向群 / 马洪兵 等
出版年: 2017-7
页数: 610
定价: 89.00
装帧: 平装
丛书: 计算机科学丛书
ISBN: 9787111573692

书本简介


Andrew S. Tanenbaum教授编写的教材《现代操作系统》现在已经是第4版了。第4版在保持原有特色的基础上,又增添了许多新的内容,反映了当代操作系统的发展与动向,并不断地与时俱进。

对比第3版,第4版有很多变化。一些是教材中多处可见的细微变化,一些是就某一功能或机制增加了对最新技术的介绍,如增加了futex同步原语、读–复制–更新(Read-Copy-Update)机制以及6级RAID的内容。另外一些则是重大变化,例如:用Windows 8替换了Vista的内容;用相当大的篇幅介绍了移动终端应用最广泛、发展最快的Android,以替换原来Symbian的内容;增加了新的一章,介绍目前最流行的虚拟化和云技术,其中还包括典型案例VMware。很多章节在内容安排上也有较大的改动,例如:第8章对多处理机系统的内容进行了大幅更新;第9章对安全的内容进...


作者简介


Andrew S. Tanenbaum拥有麻省理工学院的理学学士学位和加州大学伯克利分校的博士学位,如今他是阿姆斯特丹自由大学计算机科学学院的教授。他曾经是计算与图像高级学院的院长,这是一个跨大学的研究生院,主要研究高级并行、分布式以及图像系统。他同时也是荷兰皇家艺术与科学院的教授,这使得他没有变成一个刻板的人。他还赢得过享有盛名的欧洲研究理事会卓越贡献奖。

过去一段时间,他的主要研究方向是编译器、操作系统、网络以及分布式系统。现在他的主要研究方向是安全可靠的操作系统。他在这个研究方向已经发表了超过175篇经常被引用的期刊和会议论文。Tanenbaum教授还撰写或参与撰写了5本教材,并被翻译成20种语言,其中包括巴斯克语和泰语。这些教材被全球的大学使用,总计有163个版本(语言和版本加起来)。

Tanenbaum教授还编写了大量的软件,特别是MINI...

目录


目录
出版者的话
译者序
前言
作者简介
第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 shell25
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 API34
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 用软件模拟LRU120
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 分段和分页结合:MULTICS136
3.7.3 分段和分页结合:Intel x86138
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/O190
5.1.4 直接存储器存取192
5.1.5 重温中断194
5.2 I/O软件原理196
5.2.1 I/O软件的目标196
5.2.2 程序控制I/O197
5.2.3 中断驱动I/O198
5.2.4 使用DMA的I/O199
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 案例研究:VMware281
7.12.1 VMware的早期历史281
7.12.2 VMware Workstation282
7.12.3 将虚拟化引入x86的挑战282
7.12.4 VMware Workstation解决方案概览283
7.12.5 VMware Workstation的演变288
7.12.6 VMware的第一类虚拟机管理程序ESX Server288
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 rootkit384
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和Android403
10.1 UNIX与Linux的历史403
10.1.1 UNICS403
10.1.2 PDP-11 UNIX404
10.1.3 可移植的UNIX404
10.1.4 Berkeley UNIX405
10.1.5 标准UNIX405
10.1.6 MINIX406
10.1.7 Linux407
10.2 Linux简介408
10.2.1 Linux的设计目标408
10.2.2 到Linux的接口409
10.2.3 shell410
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 Android455
10.8.1 Android与Google455
10.8.2 Android的历史455
10.8.3 设计目标457
10.8.4 Android体系结构458
10.8.5 Linux扩展459
10.8.6 Dalvik461
10.8.7 Binder IPC462
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 8487
11.1 Windows 8.1的历史487
11.1.1 20世纪80年代:MS-DOS487
11.1.2 20世纪90年代:基于MS-DOS的Windows488
11.1.3 21世纪00年代:基于NT的Windows488
11.1.4 Windows Vista489
11.1.5 21世纪10年代:现代Windows490
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/O534
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和Android588
13.1.11 实例研究2:Windows 8588
13.1.12 操作系统设计589
13.2 按字母顺序排序的参考文献589

现代操作系统(原书第4版)图书介绍 : 直接购买

上一篇:审计学

下一篇:因缘际会

站点信息

  • 文章统计111294篇文章