现代操作系统(原书第3版) (计算机科学丛书)

现代操作系统(原书第3版) (计算机科学丛书)

下载地址 https://pan.baidu.com/s/11y1KCMwWn8-2jYpqvNAnLw

扫码下面二维码关注公众号回复 100162获取分享码

 

本书目录结构如下:

第1章 引论 1
1.1 什么是操作系统 3
1.1.1 作为扩展机器的操作系统 4
1.1.2 作为资源管理者的操作系统 5
1.2 操作系统的历史 6
1.2.1 第一代(1945~1955):真空管和穿孔卡片 7
1.2.2 第二代(1955~1965):晶体管和批处理系统 8
1.2.3 第三代(1965~1980):集成电路和多道程序设计 9
1.2.4 第四代(1980年至今):个人计算机 14
1.2.5 第五代(1990年至今):移动计算机 19
1.3 计算机硬件简介 20
1.3.1 处理器 21
1.3.2 存储器 24
1.3.3 磁盘 27
1.3.4 I/O设备 28
1.3.5 总线 31
1.3.6 启动计算机 34
1.4 操作系统大观园 35
1.4.1 大型机操作系统 35
1.4.2 服务器操作系统 35
1.4.3 多处理器操作系统 36
1.4.4 个人计算机操作系统 36
1.4.5 掌上计算机操作系统 36
1.4.6 嵌入式操作系统 36
1.4.7 传感器节点操作系统 37
1.4.8 实时操作系统 37
1.4.9 智能卡操作系统 38
1.5 操作系统概念 38
1.5.1 进程 39
1.5.2 地址空间 41
1.5.3 文件 41
1.5.4 输入/输出 45
1.5.5 保护 45
1.5.6 shell 45
1.5.7 个体重复系统发育 46
1.6 系统调用 50
1.6.1 用于进程管理的系统调用 53
1.6.2 用于文件管理的系统调用 56
1.6.3 用于目录管理的系统调用 57
1.6.4 各种系统调用 59
1.6.5 Windows Win32 API 60
1.7 操作系统结构 62
1.7.1 单体系统 62
1.7.2 层次式系统 63
1.7.3 微内核 65
1.7.4 客户端–服务器模式 68
1.7.5 虚拟机 68
1.7.6 外核 72
1.8 依靠C的世界 73
1.8.1 C语言 73
1.8.2 头文件 74
1.8.3 大型编程项目 75
1.8.4 运行模型 76
1.9 有关操作系统的研究 77
1.10 本书其他部分概要 78
1.11 公制单位 79
1.12 小结 80
  第2章 进程与线程 85
2.1 进程 85
2.1.1 进程模型 86
2.1.2 进程的创建 88
2.1.3 进程的终止 90
2.1.4 进程的层次结构 91
2.1.5 进程的状态 92
2.1.6 进程的实现 94
2.1.7 多道程序设计模型 95
2.2 线程 97
2.2.1 线程的使用 97
2.2.2 经典的线程模型 102
2.2.3 POSIX线程 106
2.2.4 在用户空间中实现线程 108
2.2.5 在内核中实现线程 111
2.2.6 混合实现 112
2.2.7 调度程序激活机制 113
2.2.8 弹出式线程 114
2.2.9 使单线程代码多线程化 115
2.3 进程间通信 119
2.3.1 竞争条件 119
2.3.2 临界区 121
2.3.3 忙等待的互斥 121
2.3.4 睡眠与唤醒 127
2.3.5 信号量 130
2.3.6 互斥量 132
2.3.7 管程 137
2.3.8 消息传递 144
2.3.9 屏障 146
2.3.10 避免锁:读–复制–
  更新 148
2.4 调度 148
2.4.1 调度简介 149
2.4.2 批处理系统中的调度 156
2.4.3 交互式系统中的调度 158
2.4.4 实时系统中的调度 164
2.4.5 策略和机制 165
2.4.6 线程调度 165
2.5 经典的IPC问题 167
2.5.1 哲学家就餐问题 167
2.5.2 读者–写者问题 169
2.6 有关进程与线程的研究 172
2.7 小结 173
  第3章 内存管理 181
3.1 无存储器抽象 182
3.2 一种存储器抽象:地址空间 185
3.2.1 地址空间的概念 185
3.2.2 交换技术 187
3.2.3 空闲内存管理 190
3.3 虚拟内存 194
3.3.1 分页 195
3.3.2 页表 198
3.3.3 加速分页过程 201
3.3.4 针对大内存的页表 205
3.4 页面置换算法 209
3.4.1 最优页面置换算法 209
3.4.2 最近未使用页面置换算法 210
3.4.3 先进先出页面置换算法 211
3.4.4 第二次机会页面置换算法 211
3.4.5 时钟页面置换算法 212
3.4.6 最近最少使用页面置换算法 213
3.4.7 用软件模拟LRU 214
3.4.8 工作集页面置换算法 215
3.4.9 工作集时钟页面置换算法 219
3.4.10 页面置换算法小结 221
3.5 分页系统中的设计问题 222
3.5.1 局部分配策略与全局分配策略 222
3.5.2 负载控制 225
3.5.3 页面大小 225
3.5.4 分离的指令空间和数据空间 227
3.5.5 共享页面 228
3.5.6 共享库 229
3.5.7 内存映射文件 231
3.5.8 清除策略 232
3.5.9 虚拟内存接口 232
3.6 有关实现的问题 233
3.6.1 与分页有关的工作 233
3.6.2 缺页中断处理 234
3.6.3 指令备份 235
3.6.4 锁定内存中的页面 236
3.6.5 后备存储 237
3.6.6 策略和机制的分离 239
3.7 分段 240
3.7.1 纯分段的实现 243
3.7.2 分段和分页结合:MULTICS 243
3.7.3 分段和分页结合:Intel x86 247
3.8 有关内存管理的研究 252
3.9 小结 253
  第4章 文件系统 263
4.1 文件 265
4.1.1 文件命名 265
4.1.2 文件结构 267
4.1.3 文件类型 268
4.1.4 文件访问 269
4.1.5 文件属性 271
4.1.6 文件操作 271
4.1.7 使用文件系统调用的一个示例程序 273
4.2 目录 276
4.2.1 一级目录系统 276
4.2.2 层次目录系统 276
4.2.3 路径名 277
4.2.4 目录操作 280
4.3 文件系统的实现 281
4.3.1 文件系统布局 281
4.3.2 文件的实现 282
4.3.3 目录的实现 287
4.3.4 共享文件 290
4.3.5 日志结构文件系统 293
4.3.6 日志文件系统 294
4.3.7 虚拟文件系统 296
4.4 文件系统管理和优化 299
4.4.1 磁盘空间管理 299
4.4.2 文件系统备份 306
4.4.3 文件系统的一致性 312
4.4.4 文件系统性能 314
4.4.5 磁盘碎片整理 319
4.5 文件系统实例 320
4.5.1 MS-DOS文件系统 320
4.5.2 UNIX V7文件系统 323
4.5.3 CD-ROM文件系统 325
4.6 有关文件系统的研究 331
4.7 小结 332
  第5章 输入/输出 337
5.1 I/O硬件原理 337
5.1.1 I/O设备 338
5.1.2 设备控制器 339
5.1.3 内存映射I/O 340
5.1.4 直接存储器存取 344
5.1.5 重温中断 347
5.2 I/O软件原理 351
5.2.1 I/O软件的目标 351
5.2.2 程序控制I/O 352
5.2.3 中断驱动I/O 354
5.2.4 使用DMA的I/O 355
5.3 I/O软件层次 356
5.3.1 中断处理程序 356
5.3.2 设备驱动程序 357
5.3.3 与设备无关的I/O软件 361
5.3.4 用户空间的I/O软件 367
5.4 盘 369
5.4.1 盘的硬件 369
5.4.2 磁盘格式化 375
5.4.3 磁盘臂调度算法 379
5.4.4 错误处理 382
5.4.5 稳定存储器 385
5.5 时钟 388
5.5.1 时钟硬件 388
5.5.2 时钟软件 389
5.5.3 软定时器 392
5.6 用户界面:键盘、鼠标和监视器 394
5.6.1 输入软件 394
5.6.2 输出软件 399
5.7 瘦客户机 416
5.8 电源管理 417
5.8.1 硬件问题 418
5.8.2 操作系统问题 419
5.8.3 应用程序问题 425
5.9 有关输入/输出的研究 426
5.10 小结 428
  第6章 死锁 435
6.1 资源 436
6.1.1 可抢占资源和不可抢占资源 436
6.1.2 资源获取 437
6.2 死锁简介 438
6.2.1 资源死锁的条件 439
6.2.2 死锁建模 440
6.3 鸵鸟算法 443
6.4 死锁检测和死锁恢复 443
6.4.1 每种类型一个资源的死锁检测 444
6.4.2 每种类型多个资源的死锁检测 446
6.4.3 从死锁中恢复 448
6.5 死锁避免 450
6.5.1 资源轨迹图 450
6.5.2 安全状态和不安全状态 452
6.5.3 单个资源的银行家算法 453
6.5.4 多个资源的银行家算法 454
6.6 死锁预防 456
6.6.1 破坏互斥条件 456
6.6.2 破坏占有并等待条件 456
6.6.3 破坏不可抢占条件 457
6.6.4 破坏环路等待条件 457
6.7 其他问题 458
6.7.1 两阶段加锁 458
6.7.2 通信死锁 459
6.7.3 活锁 461
6.7.4 饥饿 463
6.8 有关死锁的研究 464
6.9 小结 464
  第7章 虚拟化和云 471
7.1 历史 473
7.2 虚拟化的必要条件 474
7.3 第一类和第二类虚拟机管理程序 477
7.4 高效虚拟化技术 478
7.4.1 在不支持虚拟化的平台上实现虚拟化 479
7.4.2 虚拟化的开销 482
7.5 虚拟机管理程序是正确的微内核吗 483
7.6 内存虚拟化 486
7.7 I/O虚拟化 490
7.8 虚拟装置 493
7.9 多核CPU上的虚拟机 494
7.10 授权问题 494
7.11 云 495
7.11.1 云即服务 496
7.11.2 虚拟机迁移 496
7.11.3 检查点 497
7.12 案例研究:VMware 498
7.12.1 VMware的早期历史 498
7.12.2 VMware Workstation 499
7.12.3 将虚拟化引入x86的挑战 500
7.12.4 VMware Workstation解决方案概览 502
7.12.5 VMware Workstation的演变 511
7.12.6 VMware的第一类虚拟机管理程序ESX Server 512
7.13 有关虚拟化和云的研究 514
  第8章 多处理机系统 517
8.1 多处理机 520
8.1.1 多处理机硬件 520
8.1.2 多处理机操作系统类型 530
8.1.3 多处理机同步 534
8.1.4 多处理机调度 539
8.2 多计算机 544
8.2.1 多计算机硬件 545
8.2.2 低层通信软件 550
8.2.3 用户层通信软件 552
8.2.4 远程过程调用 556
8.2.5 分布式共享存储器 558
8.2.6 多计算机调度 563
8.2.7 负载平衡 563
8.3 分布式系统 566
8.3.1 网络硬件 568
8.3.2 网络服务和协议 571
8.3.3 基于文档的中间件 576
8.3.4 基于文件系统的中间件 577
8.3.5 基于对象的中间件 582
8.3.6 基于协作的中间件 584
8.4 有关多处理机系统的研究 587
8.5 小结 588
  第9章 安全 593
9.1 环境安全 595
9.1.1 威胁 596
9.1.2 入侵者 598
9.2 操作系统完全 599
9.2.1 可信系统 600
9.2.2 可信计算基 601
9.3 保护机制 602
9.3.1 保护域 602
9.3.2 访问控制列表 605
9.3.3 权能字 608
9.4 安全系统的形式化模型 611
9.4.1 多级安全 612
9.4.2 隐蔽信道 615
9.5 密码学原理 619
9.5.1 私钥加密技术 620
9.5.2 公钥加密技术 621
9.5.3 单向函数 622
9.5.4 数字签名 622
9.5.5 可信平台模块 624
9.6 认证 626
9.6.1 使用物理识别的认证方式 633
9.6.2 使用生物识别的认证方式 636
9.7 软件漏洞 639
9.7.1 缓冲区溢出攻击 640
9.7.2 格式化字符串攻击 649
9.7.3 悬垂指针 652
9.7.4 空指针间接引用攻击 653
9.7.5 整数溢出攻击 654
9.7.6 命令注入攻击 655
9.7.7 检查时间/使用时间攻击 656
9.8 内部攻击 657
9.8.1 逻辑炸弹 657
9.8.2 后门陷阱 658
9.8.3 登录欺骗 659
9.9 恶意软件 660
9.9.1 特洛伊木马 662
9.9.2 病毒 664
9.9.3 蠕虫 674
9.9.4 间谍软件 676
9.9.5 rootkit 680
9.10 防御 684
9.10.1 防火墙 685
9.10.2 反病毒和抑制反病毒技术 687
9.10.3 代码签名 693
9.10.4 囚禁 694
9.10.5 基于模型的入侵检测 695
9.10.6 封装移动代码 697
9.10.7 Java安全性 701
9.11 有关安全的研究 703
9.12 小结 704
  第10章 实例研究1:UNIX、Linux和Android 713
10.1 UNIX与Linux的历史 714
10.1.1 UNICS 714
10.1.2 PDP-11 UNIX 715
10.1.3 可移植的UNIX 716
10.1.4 Berkeley UNIX 717
10.1.5 标准UNIX 718
10.1.6 MINIX 719
10.1.7 Linux 720
10.2 Linux简介 723
10.2.1 Linux的设计目标 723
10.2.2 到Linux的接口 724
10.2.3 shell 725
10.2.4 Linux应用程序 728
10.2.5 内核结构 730
10.3 Linux中的进程 733
10.3.1 基本概念 733
10.3.2 Linux中进程管理相关的系统调用 735
10.3.3 Linux中进程与线程的实现 739
10.3.4 Linux中的调度 746
10.3.5 启动Linux系统 751
10.4 Linux中的内存管理 753
10.4.1 基本概念 753
10.4.2 Linux中的内存管理系统调用 756
10.4.3 Linux中内存管理的实现 758
10.4.4 Linux中的分页 764
10.5 Linux中的I/O系统 767
10.5.1 基本概念 767
10.5.2 网络 769
10.5.3 Linux中的I/O系统调用 770
10.5.4 I/O在Linux中的实现 771
10.5.5 Linux中的模块 774
10.6 Linux文件系统 775
10.6.1 基本概念 775
10.6.2 Linux中的文件系统调用 780
10.6.3 Linux文件系统的实现 783
10.6.4 NFS:网络文件系统 792
10.7 Linux的安全性 798
10.7.1 基本概念 798
10.7.2 Linux中安全相关的系统调用 800
10.7.3 Linux中的安全实现 801
10.8 Android 802
10.8.1 Android与Google 803
10.8.2 Android的历史 803
10.8.3 设计目标 807
10.8.4 Android体系结构 809
10.8.5 Linux扩展 810
10.8.6 Dalvik 814
10.8.7 Binder IPC 815
10.8.8 Android应用 824
10.8.9 意图 836
10.8.10 应用程序沙箱 837
10.8.11 安全性 838
10.8.12 进程模型 844
10.9 小结 848
  第11章 实例研究2:Windows 8 857
11.1 Windows 8.1的历史 857
11.1.1 20世纪80年代:MS-DOS 857
11.1.2 20世纪90年代:基于MS-DOS的Windows 859
11.1.3 21世纪00年代:基于NT的Windows 859
11.1.4 Windows Vista 862
11.1.5 21世纪10年代:现代Windows 863
11.2 Windows 编程 864
11.2.1 原生NT应用编程接口 867
11.2.2 Win32应用编程接口 871
11.2.3 Windows注册表 875
11.3 系统结构 877
11.3.1 操作系统结构 877
11.3.2 启动Windows 893
11.3.3 对象管理器的实现 894
11.3.4 子系统、DLL和用户态服务 905
11.4 Windows中的进程和线程 908
11.4.1 基本概念 908
11.4.2 作业、进程、线程和纤程管理API调用 914
11.4.3 进程和线程的实现 919
11.5 内存管理 927
11.5.1 基本概念 927
11.5.2 内存管理系统调用 931
11.5.3 存储管理的实现 932
11.6 Windows的高速缓存 942
11.7 Windows的I/O 943
11.7.1 基本概念 944
11.7.2 I/O的API调用 945
11.7.3 I/O实现 948
11.8 Windows NT文件系统 952
11.8.1 基本概念 953
11.8.2 NTFS文件系统的实现 954
11.9 Windows电源管理 964
11.10 Windows 8中的安全 966
11.10.1 基本概念 967
11.10.2 安全相关的API调用 969
11.10.3 安全实现 970
11.10.4 安全缓解技术 972
11.11 小结 975
  第12章 操作系统设计 981
12.1 设计问题的本质 982
12.1.1 目标 982
12.1.2 设计操作系统为什么困难 983
12.2 接口设计 985
12.2.1 指导原则 985
12.2.2 范型 987
12.2.3 系统调用接口 991
12.3 实现 993
12.3.1 系统结构 993
12.3.2 机制与策略 997
12.3.3 正交性 998
12.3.4 命名 999
12.3.5 绑定的时机 1001
12.3.6 静态与动态结构 1001
12.3.7 自顶向下与自底向上的实现 1003
12.3.8 同步通信与异步通信 1004
12.3.9 实用技术 1005
12.4 性能 1010
12.4.1 操作系统为什么运行缓慢 1010
12.4.2 什么应该优化 1011
12.4.3 空间–时间的权衡 1012
12.4.4 缓存 1015
12.4.5 线索 1016
12.4.6 利用局部性 1016
12.4.7 优化常见的情况 1017
12.5 项目管理 1018
12.5.1 人月神话 1018
12.5.2 团队结构 1019
12.5.3 经验的作用 1021
12.5.4 没有银弹 1021
12.6 操作系统设计的趋势 1022
12.6.1 虚拟化与云 1023
12.6.2 众核芯片 1023
12.6.3 大型地址空间操作系统 1024
12.6.4 无缝的数据访问 1025
12.6.5 电池供电的计算机 1025
12.6.6 嵌入式系统 1026
12.7 小结 1027
  第13章 参考书目与文献 1031
13.1 进行深入阅读的建议 1031
13.1.1 引论 1031
13.1.2 进程与线程 1032
13.1.3 内存管理 1033
13.1.4 文件系统 1033
13.1.5 输入/输出 1034
13.1.6 死锁 1035
13.1.7 虚拟化和云 1035
13.1.8 多处理机系统 1036
13.1.9 安全 1037
13.1.10 实例研究1:UNIX、Linux和Android 1039
13.1.11 实例研究2:Windows 8 1040
13.1.12 操作系统设计 1040
13.2 按字母顺序排序的参考文献 1041

猜你喜欢

转载自blog.csdn.net/yusongcao7/article/details/109560453