书籍详情
现代操作系统(第2版)
作者:(荷)Andrew S. Tanenbaum著;陈向群等译;陈向群译
出版社:机械工业出版社
出版时间:2005-06-01
ISBN:9787111165118
定价:¥55.00
购买这本书可以去
内容简介
本书是操作系统领域的经典之作,与第1版相比有较大的变化。书中集中讨论了操作系统的基本原理,除了重点放在单处理机操作系统之外,还包含了有关计算机安全、多媒体操作系统、UNIX、Windows2000以及操作系统设计等方面的内容。书中涉及的主题包括图形用户界面、多处理机操作系统、笔记本电脑电源管理、可信系统、病毒、网络终端、CD-ROM文件系统、互斥信号量、RAID、软定时器、稳定存储器以及新的页面置换算法等。此外,书中还增加了大量习题,方便教学。本书适合作为高等院校计算机科学与技术专业操作系统课程教材,也是设计、开发操作系统的重要参考书。
作者简介
坦尼鲍姆,是ACM和IEEE的资深会员,荷兰皇家艺术和科学学院院士,获得过1997年度ACM/SIGCSE计算机科学教育杰出贡献奖。当前,他的主要研究方向是设计规模达十亿级用户的广域分布式系统。在进行这些研究项目的基础上,他在各种学术杂志及会议上发表了70多篇论文,并出版了多本计算机专著。他还入选了《世界名人录》。他的个人主页是:http//www.cs.vu相关图书数据仓库(原书第3版)C++语言的设计和演化离散数学导学数据库设计教程(第2版)软件需求信息系统原理:原书第6版并行程序设计数据库与事务处理计算机网络:自顶向下方法与Internet特色(原书第3版)高级编译器设计与实现计算机网络系统方案(原书第3版)C程序设计语言(第2版·新版)习题解答计算机网络与因特网(原书第4版)计算机科学概论(原书第2版)人工智能:英文可扩展并行计算技术、结构与编程数据库原理、编程与性能嵌入式微控制器C++编程思想。第2卷:实用编程技术神经网络原理(原书第2版)编译原理并行计算导论(原书第2版)信息论、编码与密码学组合数学(原书第4版)JAVA编程思想(第2版)3D游戏卷1实时渲染与软件技术数据库系统导论3D游戏卷2动画与高级实时渲染技术数字图像处理疑难解析现代信息检索CAXA数控铣CAD/CAM技术C语言的科学和艺术计算机视觉UNIX系统编程操作系统3D计算机图形学(原书第3版)Java面向对象程序设计教程模式分析的核方法微机接口技术实验教程
目录
第1章 引论 1
1.1 什么是操作系统 2
1.1.1 作为扩展机器的操作系统 2
1.1.2 作为资源管理者的操作系统 2
1.2 操作系统的历史 3
1.2.1 第一代(1945~1955):真空管和
插件板 3
1.2.2 第二代(1955~1965):晶体管和
批处理系统 4
1.2.3 第三代(1965~1980):集成电路和多道程序设计 5
1.2.4 第四代(1980~至今):个人计算机 7
1.2.5 个体的重复发展 9
1.3 操作系统大观 10
1.3.1 大型机操作系统 10
1.3.2 服务器操作系统 10
1.3.3 多处理机操作系统 10
1.3.4 个人计算机操作系统 10
1.3.5 实时操作系统 10
1.3.6 嵌入式操作系统 11
1.3.7 智能卡操作系统 11
1.4 计算机硬件介绍 11
1.4.1 处理器 11
1.4.2 存储器 13
1.4.3 I/O设备 15
1.4.4 总线 17
1.5 操作系统概念 19
1.5.1 进程 19
1.5.2 死锁 20
1.5.3 存储管理 21
1.5.4 输入/输出 21
1.5.5 文件 21
1.5.6 安全 23
1.5.7 shell 23
1.5.8 概念的重用 24
1.6 系统调用 25
1.6.1 用于进程管理的系统调用26
1.6.2 用于文件管理的系统调用28
1.6.3 用于目录管理的系统调用29
1.6.4 其他系统调用 30
1.6.5 Windows Win32 API 30
1.7 操作系统结构 32
1.7.1 单体系统 32
1.7.2 分层系统 33
1.7.3 虚拟机 33
1.7.4 外核 34
1.7.5 客户机-服务器模型 35
1.8 有关操作系统的研究 36
1.9 本书其他部分概要 37
1.10 公制单位 37
1.11 小结 38
习题 38
第2章 进程与线程 41
2.1 进程 41
2.1.1 进程模型 41
2.1.2 进程的创建 42
2.1.3 进程的终止 43
2.1.4 进程的层次结构 44
2.1.5 进程的状态 44
2.1.6 进程的实现 45
2.2 线程 46
2.2.1 线程模型 46
2.2.2 线程的使用 48
2.2.3 在用户空间中实现线程 51
2.2.4 在内核中实现线程 53
2.2.5 混合实现 53
2.2.6 调度程序激活机制 54
2.2.7 弹出式线程 54
2.2.8 使单线程代码多线程化 55
2.3 进程间通信 57
2.3.1 竞争条件 57
2.3.2 临界区 58
2.3.3 忙等待的互斥 59
2.3.4 休眠与唤醒 61
2.3.5 信号量 63
2.3.6 互斥信号量 64
2.3.7 管程 65
2.3.8 消息传递 69
2.3.9 屏障 70
2.4 经典的IPC问题 71
2.4.1 哲学家就餐问题 71
2.4.2 读者-写者问题 73
2.4.3 睡眠理发师问题 74
2.5 调度 75
2.5.1 调度介绍 76
2.5.2 批处理系统中的调度 79
2.5.3 交互式系统中的调度 81
2.5.4 实时系统中的调度 84
2.5.5 策略和机制 85
2.5.6 线程调度 85
2.6 有关进程和线程的研究 86
2.7 小结 87
习题 87
第3章 死锁 91
3.1 资源 91
3.1.1 可抢占资源和不可抢占资源91
3.1.2 资源获取 92
3.2 死锁概述 93
3.2.1 死锁的条件 93
3.2.2 死锁建模 94
3.3 鸵鸟算法 95
3.4 死锁检测和死锁恢复 96
3.4.1 每种类型一个资源的死锁检测96
3.4.2 每种类型多个资源的死锁检测97
3.4.3 从死锁中恢复 99
3.5 死锁避免 100
3.5.1 资源轨迹图 100
3.5.2 安全状态和不安全状态 101
3.5.3 单个资源的银行家算法 101
3.5.4 多个资源的银行家算法 102
3.6 死锁预防 103
3.6.1 破坏互斥条件 103
3.6.2 破坏占有和等待条件 103
3.6.3 破坏不可抢占条件 104
3.6.4 破坏循环等待条件 104
3.7 其他问题 104
3.7.1 两阶段加锁 105
3.7.2 非资源死锁 105
3.7.3 饥饿 105
3.8 有关死锁的研究 105
3.9 小结 106
习题 106
第4章 存储管理 109
4.1 基本存储管理 109
4.1.1 无交换或分页的单道程序设计109
4.1.2 固定分区的多道程序设计110
4.1.3 建立多道程序设计模型 111
4.1.4 多道程序设计系统的性能分析111
4.1.5 重定位和保护 112
4.2 交换 113
4.2.1 使用位图的存储管理 114
4.2.2 使用链表的存储管理 115
4.3 虚拟存储器 116
4.3.1 分页 116
4.3.2 页表 118
4.3.3 转换检测缓冲区 121
4.3.4 倒排页表 122
4.4 页面置换算法 123
4.4.1 最优页面置换算法 123
4.4.2 最近未使用页面置换算法124
4.4.3 先进先出页面置换算法 124
4.4.4 第二次机会页面置换算法125
4.4.5 时钟页面置换算法 125
4.4.6 最近最少使用页面置换算法125
4.4.7 用软件模拟LRU 126
4.4.8 工作集页面置换算法 127
4.4.9 工作集时钟页面置换算法 129
4.4.10 页面置换算法小结 130
4.5 建立页面置换算法模型 131
4.5.1 Belady异常 131
4.5.2 栈式算法 131
4.5.3 距离字符串 133
4.5.4 页面失效率预测 133
4.6 分页系统的设计问题 133
4.6.1 局部分配策略与全局分配策略 134
4.6.2 负载控制 135
4.6.3 页面大小 136
4.6.4 分离的指令空间和数据空间136
4.6.5 共享页面 137
4.6.6 清除策略 138
4.6.7 虚拟存储器接口 138
4.7 有关实现的问题 138
4.7.1 与分页有关的操作系统 138
4.7.2 页面失效处理 139
4.7.3 指令备份 139
4.7.4 锁定内存中的页面 140
4.7.5 后备存储 140
4.7.6 策略和机制的分离 141
4.8 分段 142
4.8.1 纯分段的实现 144
4.8.2 分段和分页结合:MULTICS144
4.8.3 分段和分页结合:Intel Pentium146
4.9 有关存储管理的研究 149
4.10 小结 149
习题 150
第5章 输入/输出 153
5.1 I/O硬件组成原理 153
5.1.1 I/O设备 153
5.1.2 设备控制器 153
5.1.3 内存映射I/O 154
5.1.4 直接存储器存取 156
5.1.5 重温中断 158
5.2 I/O软件原理 160
5.2.1 I/O软件的目标 160
5.2.2 程序控制I/O 161
5.2.3 中断驱动I/O 162
5.2.4 使用DMA的I/O 163
5.3 I/O软件层次 163
5.3.1 中断处理程序 163
5.3.2 设备驱动程序 164
5.3.3 与设备无关的I/O软件 166
5.3.4 用户空间的I/O软件 169
5.4 盘 170
5.4.1 盘的硬件 170
5.4.2 磁盘格式化 179
5.4.3 磁盘臂调度算法 181
5.4.4 错误处理 183
5.4.5 稳定存储器 185
5.5 时钟 187
5.5.1 时钟硬件 187
5.5.2 时钟软件 187
5.5.3 软定时器 189
5.6 面向字符的终端 190
5.6.1 RS-232终端硬件 190
5.6.2 输入软件 192
5.6.3 输出软件 194
5.7 图形用户界面 195
5.7.1 个人计算机键盘、鼠标和显示器硬件 195
5.7.2 输入软件 198
5.7.3 Windows输出软件 198
5.8 网络终端 203
5.8.1 X Window系统 203
5.8.2 SLIM网络终端 206
5.9 电源管理 207
5.9.1 硬件问题 208
5.9.2 操作系统问题 209
5.9.3 退化的操作 212
5.10 关于输入/输出的研究 212
5.11 小结 213
习题 213
第6章 文件系统 217
6.1 文件 217
6.1.1 文件命名 217
6.1.2 文件结构 218
6.1.3 文件类型 219
6.1.4 文件存取 220
6.1.5 文件属性 221
6.1.6 文件操作 221
6.1.7 使用文件系统调用的一个示例程序222
6.1.8 内存映射文件 224
6.2 目录 224
6.2.1 一级目录系统 224
6.2.2 两级目录系统 225
6.2.3 层次目录系统 225
6.2.4 路径名 225
6.2.5 目录操作 227
6.3 文件系统的实现 228
6.3.1 文件系统布局 228
6.3.2 文件的实现 228
6.3.3 目录的实现 231
6.3.4 共享文件 233
6.3.5 磁盘空间管理 234
6.3.6 文件系统的可靠性 237
6.3.7 文件系统性能 242
6.3.8 日志结构文件系统 244
6.4 文件系统实例 246
6.4.1 CD-ROM文件系统 246
6.4.2 CP/M文件系统 249
6.4.3 MS-DOS文件系统 250
6.4.4 Windows 98文件系统 252
6.4.5 UNIX V7文件系统 254
6.5 有关文件系统的研究 256
6.6 小结 256
习题 256
第7章 多媒体操作系统 259
7.1 多媒体简介 259
7.2 多媒体文件 261
7.2.1 音频编码 262
7.2.2 视频编码 263
7.3 视频压缩 265
7.3.1 JPEG标准 265
7.3.2 MPEG标准 267
7.4 多媒体进程调度 268
7.4.1 调度同质进程 268
7.4.2 一般实时调度 268
7.4.3 速率单调调度 270
7.4.4 最早最终时限优先调度 270
7.5 多媒体文件系统范型 272
7.5.1 VCR控制功能 272
7.5.2 近似视频点播 273
7.5.3 具有VCR功能的近似视频点播274
7.6 文件存放 276
7.6.1 在单个磁盘上存放文件 276
7.6.2 两个替代的文件组织策略276
7.6.3 近似视频点播的文件存放278
7.6.4 在单个磁盘上存放多个文件279
7.6.5 在多个磁盘上存放文件 281
7.7 高速缓存 282
7.7.1 块高速缓存 282
7.7.2 文件高速缓存 283
7.8 多媒体磁盘调度 284
7.8.1 静态磁盘调度 284
7.8.2 动态磁盘调度 285
7.9 有关多媒体的研究 286
7.10 小结 286
习题 287
第8章 多处理机系统 289
8.1 多处理机 290
8.1.1 多处理机硬件 290
8.1.2 多处理机操作系统类型 294
8.1.3 多处理机同步 297
8.1.4 多处理机调度 299
8.2 多计算机 302
8.2.1 多计算机硬件 302
8.2.2 低层通信软件 305
8.2.3 用户层通信软件 307
8.2.4 远程过程调用 309
8.2.5 分布式共享存储器 310
8.2.6 多计算机调度 313
8.2.7 负载平衡 313
8.3 分布式系统 315
8.3.1 网络硬件 317
8.3.2 网络服务和网络协议 319
8.3.3 基于文档的中间件 321
8.3.4 基于文件系统的中间件 322
8.3.5 基于共享对象的中间件 326
8.3.6 基于协作的中间件 329
8.4 有关多处理机系统的研究 332
8.5 小结 333
习题 333
第9章 安全 337
9.1 安全环境 337
9.1.1 威胁 337
9.1.2 入侵者 338
9.1.3 数据意外遗失 338
9.2 密码学基础 338
9.2.1 秘密密钥加密 339
9.2.2 公钥加密体制 339
9.2.3 单向函数 340
9.2.4 数字签名 340
9.3 用户验证 341
9.3.1 使用口令验证 341
9.3.2 使用实际物体的验证 346
9.3.3 使用生物识别的验证 347
9.3.4 对策 348
9.4 来自系统内部的攻击 349
9.4.1 特洛伊木马 349
9.4.2 登录欺骗 350
9.4.3 逻辑炸弹 350
9.4.4 后门陷阱 350
9.4.5 缓冲区溢出 351
9.4.6 一般安全性攻击 352
9.4.7 著名的安全缺陷 353
9.4.8 安全设计原则 354
9.5 来自系统外部的攻击 355
9.5.1 病毒破坏的场景 355
9.5.2 病毒工作方式 356
9.5.3 病毒如何传播 360
9.5.4 反病毒技术和抑制反病毒技术361
9.5.5 因特网蠕虫 365
9.5.6 移动代码 366
9.5.7 Java安全性 369
9.6 保护机制 371
9.6.1 保护域 371
9.6.2 访问控制列表 372
9.6.3 权能字 374
9.7 可信系统 375
9.7.1 可信计算基 376
9.7.2 安全系统的形式模型 377
9.7.3 多级安全 377
9.7.4 橘皮书安全标准 379
9.7.5 隐蔽信道 380
9.8 有关安全的研究 382
9.9 小结 382
习题 383
第10章 实例研究1:UNIX和Linux387
10.1 UNIX的历史 387
10.1.1 UNICS 387
10.1.2 PDP-11上的UNIX 388
10.1.3 可移植的UNIX 388
10.1.4 伯克利UNIX 389
10.1.5 标准UNIX 389
10.1.6 MINIX 390
10.1.7 Linux 390
10.2 UNIX概述 392
10.2.1 UNIX的目标 392
10.2.2 UNIX接口 392
10.2.3 UNIX shell 393
10.2.4 UNIX实用程序 394
10.2.5 内核结构 395
10.3 UNIX进程 396
10.3.1 基本概念 396
10.3.2 UNIX中的进程管理系统调用398
10.3.3 UNIX中进程的实现 401
10.3.4 引导UNIX 406
10.4 UNIX中的存储管理 407
10.4.1 基本概念 408
10.4.2 UNIX里的存储管理系统调用 409
10.4.3 UNIX中存储管理的实现 410
10.5 UNIX中的输入/输出 415
10.5.1 基本概念 415
10.5.2 UNIX中的输入/输出系统调用 417
10.5.3 UNIX中输入/输出的实现417
10.5.4 流 419
10.6 UNIX文件系统 420
10.6.1 基本概念 420
10.6.2 UNIX中的文件系统调用423
10.6.3 UNIX中文件系统的实现425
10.6.4 NFS:网络文件系统 429
10.7 UNIX中的安全 432
10.7.1 基本概念 432
10.7.2 UNIX中的安全系统调用434
10.7.3 UNIX中安全的实现 434
10.8 小结 435
习题 435
第11章 实例研究2:Windows 2000439
11.1 Windows 2000 的历史 439
11.1.1 MS-DOS 439
11.1.2 Windows 95/98/Me 439
11.1.3 Windows NT 440
11.1.4 Windows 2000 441
11.2 Windows 2000编程 444
11.2.1 Win32应用程序接口 444
11.2.2 注册表 445
11.3 系统结构 447
11.3.1 操作系统结构 447
11.3.2 对象的实现 452
11.3.3 环境子系统 456
11.4 Windows 2000的进程和线程458
11.4.1 基本概念 458
11.4.2 管理作业、进程、线程和纤程的
API调用 460
11.4.3 进程和线程的实现 461
11.4.4 MS-DOS仿真 465
11.4.5 引导Windows 2000 466
11.5 存储管理 467
11.5.1 基本概念 467
11.5.2 存储管理的系统调用 470
11.5.3 存储管理的实现 470
11.6 Windows 2000中的输入/输出474
11.6.1 基本概念 474
11.6.2 输入/输出的API调用 475
11.6.3 I/O实现 476
11.6.4 设备驱动程序 476
11.7 Windows 2000文件系统 478
11.7.1 基本概念 478
11.7.2 Windows 2000中的文件系统API
调用 478
11.7.3 Windows 2000中文件系统的实现 480
11.8 Windows 2000中的安全 486
11.8.1 基本概念 487
11.8.2 安全API调用 487
11.8.3 安全的实现 488
11.9 Windows 2000中的高速缓存机制489
11.10 小结 490
习题 491
第12章 操作系统设计 493
12.1 设计问题的本质 493
12.1.1 目标 493
12.1.2 设计操作系统为什么困难494
12.2 接口设计 495
12.2.1 指导原则 495
12.2.2 范型 496
12.2.3 系统调用接口 498
12.3 实现 499
12.3.1 系统结构 499
12.3.2 机制与策略 501
12.3.3 正交性 502
12.3.4 命名 502
12.3.5 绑定的时机 503
12.3.6 静态与动态结构 503
12.3.7 自顶向下与自底向上的实现504
12.3.8 实用技术 505
12.4 性能 508
12.4.1 操作系统为什么运行缓慢508
12.4.2 什么应该优化 508
12.4.3 空间-时间的权衡 508
12.4.4 高速缓存 510
12.4.5 线索 511
12.4.6 利用局部性 511
12.4.7 优化常见的情况 511
12.5 项目管理 512
12.5.1 人月神话 512
12.5.2 团队结构 513
12.5.3 经验的作用 514
12.5.4 没有银弹 514
12.6 操作系统设计的趋势 514
12.6.1 大型地址空间操作系统515
12.6.2 联网 515
12.6.3 并行系统与分布式系统515
12.6.4 多媒体 516
12.6.5 电池供电的计算机 516
12.6.6 嵌入式系统 516
12.7 小结 516
习题 517
第13章 阅读材料及参考文献 519
13.1 进行深入阅读的建议 519
13.1.1 简介及概要 519
13.1.2 进程和线程 519
13.1.3 死锁 520
13.1.4 存储管理 520
13.1.5 输入/输出 520
13.1.6 文件系统 520
13.1.7 多媒体操作系统 521
13.1.8 多处理机系统 521
13.1.9 安全 522
13.1.10 UNIX和Linux 523
13.1.11 Windows 2000 523
13.1.12 设计原理 523
13.2 按字母顺序排序的参考文献525
索引 537
1.1 什么是操作系统 2
1.1.1 作为扩展机器的操作系统 2
1.1.2 作为资源管理者的操作系统 2
1.2 操作系统的历史 3
1.2.1 第一代(1945~1955):真空管和
插件板 3
1.2.2 第二代(1955~1965):晶体管和
批处理系统 4
1.2.3 第三代(1965~1980):集成电路和多道程序设计 5
1.2.4 第四代(1980~至今):个人计算机 7
1.2.5 个体的重复发展 9
1.3 操作系统大观 10
1.3.1 大型机操作系统 10
1.3.2 服务器操作系统 10
1.3.3 多处理机操作系统 10
1.3.4 个人计算机操作系统 10
1.3.5 实时操作系统 10
1.3.6 嵌入式操作系统 11
1.3.7 智能卡操作系统 11
1.4 计算机硬件介绍 11
1.4.1 处理器 11
1.4.2 存储器 13
1.4.3 I/O设备 15
1.4.4 总线 17
1.5 操作系统概念 19
1.5.1 进程 19
1.5.2 死锁 20
1.5.3 存储管理 21
1.5.4 输入/输出 21
1.5.5 文件 21
1.5.6 安全 23
1.5.7 shell 23
1.5.8 概念的重用 24
1.6 系统调用 25
1.6.1 用于进程管理的系统调用26
1.6.2 用于文件管理的系统调用28
1.6.3 用于目录管理的系统调用29
1.6.4 其他系统调用 30
1.6.5 Windows Win32 API 30
1.7 操作系统结构 32
1.7.1 单体系统 32
1.7.2 分层系统 33
1.7.3 虚拟机 33
1.7.4 外核 34
1.7.5 客户机-服务器模型 35
1.8 有关操作系统的研究 36
1.9 本书其他部分概要 37
1.10 公制单位 37
1.11 小结 38
习题 38
第2章 进程与线程 41
2.1 进程 41
2.1.1 进程模型 41
2.1.2 进程的创建 42
2.1.3 进程的终止 43
2.1.4 进程的层次结构 44
2.1.5 进程的状态 44
2.1.6 进程的实现 45
2.2 线程 46
2.2.1 线程模型 46
2.2.2 线程的使用 48
2.2.3 在用户空间中实现线程 51
2.2.4 在内核中实现线程 53
2.2.5 混合实现 53
2.2.6 调度程序激活机制 54
2.2.7 弹出式线程 54
2.2.8 使单线程代码多线程化 55
2.3 进程间通信 57
2.3.1 竞争条件 57
2.3.2 临界区 58
2.3.3 忙等待的互斥 59
2.3.4 休眠与唤醒 61
2.3.5 信号量 63
2.3.6 互斥信号量 64
2.3.7 管程 65
2.3.8 消息传递 69
2.3.9 屏障 70
2.4 经典的IPC问题 71
2.4.1 哲学家就餐问题 71
2.4.2 读者-写者问题 73
2.4.3 睡眠理发师问题 74
2.5 调度 75
2.5.1 调度介绍 76
2.5.2 批处理系统中的调度 79
2.5.3 交互式系统中的调度 81
2.5.4 实时系统中的调度 84
2.5.5 策略和机制 85
2.5.6 线程调度 85
2.6 有关进程和线程的研究 86
2.7 小结 87
习题 87
第3章 死锁 91
3.1 资源 91
3.1.1 可抢占资源和不可抢占资源91
3.1.2 资源获取 92
3.2 死锁概述 93
3.2.1 死锁的条件 93
3.2.2 死锁建模 94
3.3 鸵鸟算法 95
3.4 死锁检测和死锁恢复 96
3.4.1 每种类型一个资源的死锁检测96
3.4.2 每种类型多个资源的死锁检测97
3.4.3 从死锁中恢复 99
3.5 死锁避免 100
3.5.1 资源轨迹图 100
3.5.2 安全状态和不安全状态 101
3.5.3 单个资源的银行家算法 101
3.5.4 多个资源的银行家算法 102
3.6 死锁预防 103
3.6.1 破坏互斥条件 103
3.6.2 破坏占有和等待条件 103
3.6.3 破坏不可抢占条件 104
3.6.4 破坏循环等待条件 104
3.7 其他问题 104
3.7.1 两阶段加锁 105
3.7.2 非资源死锁 105
3.7.3 饥饿 105
3.8 有关死锁的研究 105
3.9 小结 106
习题 106
第4章 存储管理 109
4.1 基本存储管理 109
4.1.1 无交换或分页的单道程序设计109
4.1.2 固定分区的多道程序设计110
4.1.3 建立多道程序设计模型 111
4.1.4 多道程序设计系统的性能分析111
4.1.5 重定位和保护 112
4.2 交换 113
4.2.1 使用位图的存储管理 114
4.2.2 使用链表的存储管理 115
4.3 虚拟存储器 116
4.3.1 分页 116
4.3.2 页表 118
4.3.3 转换检测缓冲区 121
4.3.4 倒排页表 122
4.4 页面置换算法 123
4.4.1 最优页面置换算法 123
4.4.2 最近未使用页面置换算法124
4.4.3 先进先出页面置换算法 124
4.4.4 第二次机会页面置换算法125
4.4.5 时钟页面置换算法 125
4.4.6 最近最少使用页面置换算法125
4.4.7 用软件模拟LRU 126
4.4.8 工作集页面置换算法 127
4.4.9 工作集时钟页面置换算法 129
4.4.10 页面置换算法小结 130
4.5 建立页面置换算法模型 131
4.5.1 Belady异常 131
4.5.2 栈式算法 131
4.5.3 距离字符串 133
4.5.4 页面失效率预测 133
4.6 分页系统的设计问题 133
4.6.1 局部分配策略与全局分配策略 134
4.6.2 负载控制 135
4.6.3 页面大小 136
4.6.4 分离的指令空间和数据空间136
4.6.5 共享页面 137
4.6.6 清除策略 138
4.6.7 虚拟存储器接口 138
4.7 有关实现的问题 138
4.7.1 与分页有关的操作系统 138
4.7.2 页面失效处理 139
4.7.3 指令备份 139
4.7.4 锁定内存中的页面 140
4.7.5 后备存储 140
4.7.6 策略和机制的分离 141
4.8 分段 142
4.8.1 纯分段的实现 144
4.8.2 分段和分页结合:MULTICS144
4.8.3 分段和分页结合:Intel Pentium146
4.9 有关存储管理的研究 149
4.10 小结 149
习题 150
第5章 输入/输出 153
5.1 I/O硬件组成原理 153
5.1.1 I/O设备 153
5.1.2 设备控制器 153
5.1.3 内存映射I/O 154
5.1.4 直接存储器存取 156
5.1.5 重温中断 158
5.2 I/O软件原理 160
5.2.1 I/O软件的目标 160
5.2.2 程序控制I/O 161
5.2.3 中断驱动I/O 162
5.2.4 使用DMA的I/O 163
5.3 I/O软件层次 163
5.3.1 中断处理程序 163
5.3.2 设备驱动程序 164
5.3.3 与设备无关的I/O软件 166
5.3.4 用户空间的I/O软件 169
5.4 盘 170
5.4.1 盘的硬件 170
5.4.2 磁盘格式化 179
5.4.3 磁盘臂调度算法 181
5.4.4 错误处理 183
5.4.5 稳定存储器 185
5.5 时钟 187
5.5.1 时钟硬件 187
5.5.2 时钟软件 187
5.5.3 软定时器 189
5.6 面向字符的终端 190
5.6.1 RS-232终端硬件 190
5.6.2 输入软件 192
5.6.3 输出软件 194
5.7 图形用户界面 195
5.7.1 个人计算机键盘、鼠标和显示器硬件 195
5.7.2 输入软件 198
5.7.3 Windows输出软件 198
5.8 网络终端 203
5.8.1 X Window系统 203
5.8.2 SLIM网络终端 206
5.9 电源管理 207
5.9.1 硬件问题 208
5.9.2 操作系统问题 209
5.9.3 退化的操作 212
5.10 关于输入/输出的研究 212
5.11 小结 213
习题 213
第6章 文件系统 217
6.1 文件 217
6.1.1 文件命名 217
6.1.2 文件结构 218
6.1.3 文件类型 219
6.1.4 文件存取 220
6.1.5 文件属性 221
6.1.6 文件操作 221
6.1.7 使用文件系统调用的一个示例程序222
6.1.8 内存映射文件 224
6.2 目录 224
6.2.1 一级目录系统 224
6.2.2 两级目录系统 225
6.2.3 层次目录系统 225
6.2.4 路径名 225
6.2.5 目录操作 227
6.3 文件系统的实现 228
6.3.1 文件系统布局 228
6.3.2 文件的实现 228
6.3.3 目录的实现 231
6.3.4 共享文件 233
6.3.5 磁盘空间管理 234
6.3.6 文件系统的可靠性 237
6.3.7 文件系统性能 242
6.3.8 日志结构文件系统 244
6.4 文件系统实例 246
6.4.1 CD-ROM文件系统 246
6.4.2 CP/M文件系统 249
6.4.3 MS-DOS文件系统 250
6.4.4 Windows 98文件系统 252
6.4.5 UNIX V7文件系统 254
6.5 有关文件系统的研究 256
6.6 小结 256
习题 256
第7章 多媒体操作系统 259
7.1 多媒体简介 259
7.2 多媒体文件 261
7.2.1 音频编码 262
7.2.2 视频编码 263
7.3 视频压缩 265
7.3.1 JPEG标准 265
7.3.2 MPEG标准 267
7.4 多媒体进程调度 268
7.4.1 调度同质进程 268
7.4.2 一般实时调度 268
7.4.3 速率单调调度 270
7.4.4 最早最终时限优先调度 270
7.5 多媒体文件系统范型 272
7.5.1 VCR控制功能 272
7.5.2 近似视频点播 273
7.5.3 具有VCR功能的近似视频点播274
7.6 文件存放 276
7.6.1 在单个磁盘上存放文件 276
7.6.2 两个替代的文件组织策略276
7.6.3 近似视频点播的文件存放278
7.6.4 在单个磁盘上存放多个文件279
7.6.5 在多个磁盘上存放文件 281
7.7 高速缓存 282
7.7.1 块高速缓存 282
7.7.2 文件高速缓存 283
7.8 多媒体磁盘调度 284
7.8.1 静态磁盘调度 284
7.8.2 动态磁盘调度 285
7.9 有关多媒体的研究 286
7.10 小结 286
习题 287
第8章 多处理机系统 289
8.1 多处理机 290
8.1.1 多处理机硬件 290
8.1.2 多处理机操作系统类型 294
8.1.3 多处理机同步 297
8.1.4 多处理机调度 299
8.2 多计算机 302
8.2.1 多计算机硬件 302
8.2.2 低层通信软件 305
8.2.3 用户层通信软件 307
8.2.4 远程过程调用 309
8.2.5 分布式共享存储器 310
8.2.6 多计算机调度 313
8.2.7 负载平衡 313
8.3 分布式系统 315
8.3.1 网络硬件 317
8.3.2 网络服务和网络协议 319
8.3.3 基于文档的中间件 321
8.3.4 基于文件系统的中间件 322
8.3.5 基于共享对象的中间件 326
8.3.6 基于协作的中间件 329
8.4 有关多处理机系统的研究 332
8.5 小结 333
习题 333
第9章 安全 337
9.1 安全环境 337
9.1.1 威胁 337
9.1.2 入侵者 338
9.1.3 数据意外遗失 338
9.2 密码学基础 338
9.2.1 秘密密钥加密 339
9.2.2 公钥加密体制 339
9.2.3 单向函数 340
9.2.4 数字签名 340
9.3 用户验证 341
9.3.1 使用口令验证 341
9.3.2 使用实际物体的验证 346
9.3.3 使用生物识别的验证 347
9.3.4 对策 348
9.4 来自系统内部的攻击 349
9.4.1 特洛伊木马 349
9.4.2 登录欺骗 350
9.4.3 逻辑炸弹 350
9.4.4 后门陷阱 350
9.4.5 缓冲区溢出 351
9.4.6 一般安全性攻击 352
9.4.7 著名的安全缺陷 353
9.4.8 安全设计原则 354
9.5 来自系统外部的攻击 355
9.5.1 病毒破坏的场景 355
9.5.2 病毒工作方式 356
9.5.3 病毒如何传播 360
9.5.4 反病毒技术和抑制反病毒技术361
9.5.5 因特网蠕虫 365
9.5.6 移动代码 366
9.5.7 Java安全性 369
9.6 保护机制 371
9.6.1 保护域 371
9.6.2 访问控制列表 372
9.6.3 权能字 374
9.7 可信系统 375
9.7.1 可信计算基 376
9.7.2 安全系统的形式模型 377
9.7.3 多级安全 377
9.7.4 橘皮书安全标准 379
9.7.5 隐蔽信道 380
9.8 有关安全的研究 382
9.9 小结 382
习题 383
第10章 实例研究1:UNIX和Linux387
10.1 UNIX的历史 387
10.1.1 UNICS 387
10.1.2 PDP-11上的UNIX 388
10.1.3 可移植的UNIX 388
10.1.4 伯克利UNIX 389
10.1.5 标准UNIX 389
10.1.6 MINIX 390
10.1.7 Linux 390
10.2 UNIX概述 392
10.2.1 UNIX的目标 392
10.2.2 UNIX接口 392
10.2.3 UNIX shell 393
10.2.4 UNIX实用程序 394
10.2.5 内核结构 395
10.3 UNIX进程 396
10.3.1 基本概念 396
10.3.2 UNIX中的进程管理系统调用398
10.3.3 UNIX中进程的实现 401
10.3.4 引导UNIX 406
10.4 UNIX中的存储管理 407
10.4.1 基本概念 408
10.4.2 UNIX里的存储管理系统调用 409
10.4.3 UNIX中存储管理的实现 410
10.5 UNIX中的输入/输出 415
10.5.1 基本概念 415
10.5.2 UNIX中的输入/输出系统调用 417
10.5.3 UNIX中输入/输出的实现417
10.5.4 流 419
10.6 UNIX文件系统 420
10.6.1 基本概念 420
10.6.2 UNIX中的文件系统调用423
10.6.3 UNIX中文件系统的实现425
10.6.4 NFS:网络文件系统 429
10.7 UNIX中的安全 432
10.7.1 基本概念 432
10.7.2 UNIX中的安全系统调用434
10.7.3 UNIX中安全的实现 434
10.8 小结 435
习题 435
第11章 实例研究2:Windows 2000439
11.1 Windows 2000 的历史 439
11.1.1 MS-DOS 439
11.1.2 Windows 95/98/Me 439
11.1.3 Windows NT 440
11.1.4 Windows 2000 441
11.2 Windows 2000编程 444
11.2.1 Win32应用程序接口 444
11.2.2 注册表 445
11.3 系统结构 447
11.3.1 操作系统结构 447
11.3.2 对象的实现 452
11.3.3 环境子系统 456
11.4 Windows 2000的进程和线程458
11.4.1 基本概念 458
11.4.2 管理作业、进程、线程和纤程的
API调用 460
11.4.3 进程和线程的实现 461
11.4.4 MS-DOS仿真 465
11.4.5 引导Windows 2000 466
11.5 存储管理 467
11.5.1 基本概念 467
11.5.2 存储管理的系统调用 470
11.5.3 存储管理的实现 470
11.6 Windows 2000中的输入/输出474
11.6.1 基本概念 474
11.6.2 输入/输出的API调用 475
11.6.3 I/O实现 476
11.6.4 设备驱动程序 476
11.7 Windows 2000文件系统 478
11.7.1 基本概念 478
11.7.2 Windows 2000中的文件系统API
调用 478
11.7.3 Windows 2000中文件系统的实现 480
11.8 Windows 2000中的安全 486
11.8.1 基本概念 487
11.8.2 安全API调用 487
11.8.3 安全的实现 488
11.9 Windows 2000中的高速缓存机制489
11.10 小结 490
习题 491
第12章 操作系统设计 493
12.1 设计问题的本质 493
12.1.1 目标 493
12.1.2 设计操作系统为什么困难494
12.2 接口设计 495
12.2.1 指导原则 495
12.2.2 范型 496
12.2.3 系统调用接口 498
12.3 实现 499
12.3.1 系统结构 499
12.3.2 机制与策略 501
12.3.3 正交性 502
12.3.4 命名 502
12.3.5 绑定的时机 503
12.3.6 静态与动态结构 503
12.3.7 自顶向下与自底向上的实现504
12.3.8 实用技术 505
12.4 性能 508
12.4.1 操作系统为什么运行缓慢508
12.4.2 什么应该优化 508
12.4.3 空间-时间的权衡 508
12.4.4 高速缓存 510
12.4.5 线索 511
12.4.6 利用局部性 511
12.4.7 优化常见的情况 511
12.5 项目管理 512
12.5.1 人月神话 512
12.5.2 团队结构 513
12.5.3 经验的作用 514
12.5.4 没有银弹 514
12.6 操作系统设计的趋势 514
12.6.1 大型地址空间操作系统515
12.6.2 联网 515
12.6.3 并行系统与分布式系统515
12.6.4 多媒体 516
12.6.5 电池供电的计算机 516
12.6.6 嵌入式系统 516
12.7 小结 516
习题 517
第13章 阅读材料及参考文献 519
13.1 进行深入阅读的建议 519
13.1.1 简介及概要 519
13.1.2 进程和线程 519
13.1.3 死锁 520
13.1.4 存储管理 520
13.1.5 输入/输出 520
13.1.6 文件系统 520
13.1.7 多媒体操作系统 521
13.1.8 多处理机系统 521
13.1.9 安全 522
13.1.10 UNIX和Linux 523
13.1.11 Windows 2000 523
13.1.12 设计原理 523
13.2 按字母顺序排序的参考文献525
索引 537
猜您喜欢