内容简介
这是一本关于现代操作系统的书。全书围绕虚拟化、并发和持久性这3个主要概念展开,介绍了所有现代系统的主要组件(包括调度、虚拟内存管理、磁盘和I/O子系统、文件系统 )。
本书共50章,分为3个部分,分别讲述虚拟化、并发和持久性的相关内容。本书大部分章节均先提出特定的问题,然后通过书中介绍的技术、算法和思想来解决这些问题。笔者以对话形式引入所介绍的主题概念,行文诙谐幽默却又鞭辟入里,力求帮助读者理解操作系统中虚拟化、并发和持久性的原理。
本书内容全面,并给出了真实可运行的代码(而非伪代码),还提供了相应的练习,适合高等院校相关专业教师教学和高校学生自学。
目录
第 1章 关于本书的对话 1
第 2章 操作系统介绍 3
2.1 虚拟化CPU 4
2.2 虚拟化内存 6
2.3 并发 7
2.4 持久性 9
2.5 设计目标 11
2.6 简单历史 12
2.7 小结 15
参考资料 15
第 1部分 虚拟化
第3章 关于虚拟化的对话 18
第4章 抽象:进程 19
4.1 抽象:进程 20
4.2 进程API 20
4.3 进程创建:更多细节 21
4.4 进程状态 22
4.5 数据结构 24
4.6 小结 25
参考资料 25
作业 26
问题 26
第5章 插叙:进程API 28
5.1 fork()系统调用 28
5.2 wait()系统调用 29
5.3 最后是exec()系统调用 30
5.4 为什么这样设计API 32
5.5 其他API 34
5.6 小结 34
参考资料 34
作业(编码) 35
问题 35
第6章 机制:受限直接执行 37
6.1 基本技巧:受限直接执行 37
6.2 问题1:受限制的操作 38
6.3 问题2:在进程之间切换 40
6.4 担心并发吗 44
6.5 小结 45
参考资料 45
作业(测量) 47
第7章 进程调度:介绍 48
7.1 工作负载假设 48
7.2 调度指标 49
7.3 先进先出(FIFO) 49
7.4 最短任务优先(SJF) 50
7.5 最短完成时间优先(STCF) 51
7.6 新度量指标:响应时间 52
7.7 轮转 52
7.8 结合I/O 54
7.9 无法预知 54
7.10 小结 55
参考资料 55
作业 56
问题 56
第8章 调度:多级反馈队列 57
8.1 MLFQ:基本规则 57
8.2 尝试 #1:如何改变优先级 58
8.3 尝试 #2:提升优先级 60
8.4 尝试 #3:更好的计时方式 61
8.5 MLFQ调优及其他问题 61
8.6 MLFQ:小结 62
参考资料 63
作业 64
问题 64
第9章 调度:比例份额 65
9.1 基本概念:彩票数表示份额 65
9.2 彩票机制 66
9.3 实现 67
9.4 一个例子 68
9.5 如何分配彩票 68
9.6 为什么不是确定的 69
9.7 小结 70
参考资料 70
作业 71
问题 71
第 10章 多处理器调度(高级) 73
10.1 背景:多处理器架构 73
10.2 别忘了同步 75
10.3 最后一个问题:缓存亲和度 76
10.4 单队列调度 76
10.5 多队列调度 77
10.6 Linux 多处理器调度 79
10.7 小结 79
参考资料 79
第 11章 关于CPU虚拟化的总结对话 81
第 12章 关于内存虚拟化的对话 83
第 13章 抽象:地址空间 85
13.1 早期系统 85
13.2 多道程序和时分共享 85
13.3 地址空间 86
13.4 目标 87
13.5 小结 89
参考资料 89
第 14章 插叙:内存操作API 91
14.1 内存类型 91
14.2 malloc()调用 92
14.3 free()调用 93
14.4 常见错误 93
14.5 底层操作系统支持 96
14.6 其他调用 97
14.7 小结 97
参考资料 97
作业(编码) 98
问题 98
第 15章 机制:地址转换 100
15.1 假设 101
15.2 一个例子 101
15.3 动态(基于硬件)重定位 103
15.4 硬件支持:总结 105
15.5 操作系统的问题 105
15.6 小结 108
参考资料 109
作业 110
问题 110
第 16章 分段 111
16.1 分段:泛化的基址/界限 111
16.2 我们引用哪个段 113
16.3 栈怎么办 114
16.4 支持共享 114
16.5 细粒度与粗粒度的分段 115
16.6 操作系统支持 115
16.7 小结 117
参考资料 117
作业 118
问题 119
第 17章 空闲空间管理 120
17.1 假设 120
17.2 底层机制 121
17.3 基本策略 126
17.4 其他方式 128
17.5 小结 130
参考资料 130
作业 131
问题 131
第 18章 分页:介绍 132
18.1 一个简单例子 132
18.2 页表存在哪里 134
18.3 列表中究竟有什么 135
18.4 分页:也很慢 136
18.5 内存追踪 137
18.6 小结 139
参考资料 139
作业 140
问