内容简介 · · · · · ·
操作系统是计算机系统的核心系统软件,负责控制和管理整个系统,使之协调工作。本书对操作系统的核心内容进行了全面分析,包括操作系统的发展历史和基本概念、进程与线程、内存管理、文件系统、输入与输出、多核环境下的进程调度和操作系统设计。本书用大量生活实例,生动地解释了操作系统中的主要难点和模糊点:锁的实现、同步机制的发展轴线、纯粹分段到段页式的演变、多核环境下的进程同步与调度和操作系统设计等内容。本书重点突出、逻辑清晰、内容连贯,便于学生顺利掌握操作系统的核心内容。
本书层次丰富、涵盖操作系统的所有核心内容,适合作为国内高校计算机及相关专业本科生操作系统课程的教材,也是了解计算机操作系统原理不可多得的参考书。
作者简介 · · · · · ·
邹恒明,美国密歇根大学博士。曾任职美国IBM、国家数据公司、朗讯、EMC公司8年多。在IBM和EMC分别从事AIX操作系统和Engenity存储操作系统的研发,其中包括911中挽摩根斯坦利公司于既倒的、美国唯一的“英雄软件”SRDF。2007年在中国金融期货交易系统(股指期货)专家测评中担任软件测评组长。2004年以来在上海交大研究、执教操作系统和算法设计等14门课程多年。
目录 · · · · · ·
前言
第一篇 基础原理篇
第1章 操作系统导论
引子:智者的挑战
1.1 人造与神造
1.2 程序是如何运行的
1.3 什么是操作系统
1.4 魔术与管理
1.5 用户程序与操作系统
1.6 操作系统的范畴
1.7 为什么学习操作系统
思考题
第2章操 作系统历史
引子:不能承受之真
2.1 第一阶段:状态机操作系统(1940年以前)
2.2 第二阶段:单一操作员单一控制端操作系统(20世纪40年代)
2.3 第三阶段:批处理操作系统(20世纪50年代)
2.4 第四代:多道批处理操作系统(20世纪60年代)
2.5 第五代之一:分时操作系统(20世纪70年代)
2.6 第五代之二:实时操作系统
2.7 第六代:现代操作系统(1980年以后)
2.8 操作系统的演变过程
2.9 操作系统的未来发展趋势
2.10 讨论:操作系统虚拟化和虚拟化的操作系统
思考题
第3章 操作系统基本概念
引子:软件师的尴尬
3.1 计算机硬件基本知识
3.2 抽象
3.3 内核态和用户态
3.4 操作系统结构
3.5 进程、内存和文件
3.6 系统调用
3.7 壳
思考题
第二篇 进程原理篇
第4章 进程
引子:牛顿的困惑
4.1 进程概论
4.2 进程模型
4.3 多道编程的好处
4.4 进程的产生与消失
4.5 进程的层次结构
4.6 进程的状态
4.7 进程与地址空间
4.8 进程管理
4.9 进程的缺陷
思考题
第5章 进程调度
引子:恐怖分子的调度
5.1 进程调度的定义
5.2 进程调度的目标
5.3 先来先服务调度算法
5.4 时间片轮转算法
5.5 短任务优先算法
5.6 优先级调度算法
5.7 混合调度算法
5.8 其他调度算法
5.9 实时调度算法
5.10 进程调度的过程
5.11 高级议题:调度异常之优先级倒挂
思考题
第6章 进程通信
引子:孤独爆破手的自白
6.1 为什么要通信
6.2 进程对白:管道、记名管道、套接字
6.3 进程电报:信号
6.4 进程旗语:信号量
6.5 进程拥抱:共享内存
6.6 信件发送:消息队列
6.7 其他通信机制
思考题
第三篇 线程原理篇
第7章 线程
引子:亚历山大的分身术
7.1 进程的分身术——线程
7.2 线程管理
7.3 线程模型的实现
7.4 现代操作系统的线程实现模型
7.5 多线程的关系
7.6 讨论:从用户态进入内核态
7.7 讨论:线程的困惑——确定性与非确定性
思考题
第8章 线程同步
引子:滑铁卢的同步
8.1 为什么要同步
8.2 线程同步的目的
8.3 锁的进化:金鱼生存
8.4 睡觉与叫醒:生产者与消费者问题
8.5 信号量
8.6 锁、睡觉与叫醒、信号量
8.7 管程
8.8 消息传递
8.9 栅栏
思考题
第9章 死锁应对之哲学原理
引子:迷雾笼罩的加拿大
9.1 为什么会发生死锁
9.2 死锁的描述
9.3 死锁的4个必要条件
9.4 哲学家就餐问题
9.5 死锁的应对
9.6 消除死锁的必要条件
9.7 银行家算法:冒险的代价
9.8 哲学家就餐问题之解
9.9 讨论:死锁的思考——综合治理
9.10 讨论:死锁、活锁与饥饿
思考题
第10章 锁的实现
引子:高登绳结
10.1 以中断启用与禁止来实现锁
10.2 以测试与设置指令来实现锁
10.3 以非繁忙等待、中断启用与禁止来实现锁
10.4 以最少繁忙等待、测试与设置来实现锁
10.5 中断禁止、测试与设置
思考题
第四篇 内存原理篇
第11章 基本内存管理
引子:让别人无路可走
11.1 内存管理的环境
11.2 内存管理的目标
11.3 虚拟内存的概念
11.4 操作系统在内存中的位置
11.5 单道编程的内存管理
11.6 多道编程的内存管理
11.7 闲置空间管理
思考题
第12章 页式内存管理
引子:虚拟概念的变现
12.1 基址极限管理模式的问题
12.2 分页内存管理
12.3 分页系统的优缺点
12.4 翻译速度
12.5 缺页中断处理
12.6 锁住页面
12.7 页面尺寸
12.8 内存抖动
思考题
第13章 页面更换算法
引子:黑洞理论的替换
13.1 页面需要更换
13.2 页面更换的目标
13.3 随机更换算法
13.4 先进先出算法
13.5 第二次机会算法
13.6 时钟算法
13.7 最优更换算法
13.8 NRU算法
13.9 LRU算法
13.10 工作集算法
13.11 工作集时钟算法
13.12 页面替换策略
思考题
第14章 段式内存管理
引子:否定之否定
14.1 分页系统的缺点
14.2 分段管理系统
14.3 分段的优缺点
14.4 段页式内存管理
14.5 段号是否占用寻址字位
14.6 讨论:否定之否定的嵌套——纯粹分段与逻辑分段、分页与段页
思考题
第五篇 文件原理篇
第15章 磁盘操作
引子:EMC——从不可能到可能
15.1 磁盘组织与管理
15.2 磁盘的结构
15.3 盘面的结构
15.4 磁盘驱动器的访问速度
15.5 操作系统界面
15.6 磁盘调度算法
15.7 讨论:固态盘
15.8 讨论:智能磁盘系统
思考题
第16章 文件系统
引子:掩饰的极致
16.1 为什么需要文件系统
16.2 文件系统
16.3 文件系统的目标
16.4 文件的基本知识
16.5 从用户角度看文件系统
16.6 地址独立的实现机制:文件夹
16.7 文件系统调用
16.8 内存映射的文件访问
思考题
第17 章文件系统实现
引子:成功中的失败
17.1 文件系统的布局
17.2 文件的实现
17.3 目录实现:地址独立的实现
17.4 闲置空间管理
思考题
第18章 文件系统性能
引子:从不可能到可能
18.1 文件授权管理
18.2 主动控制:访问控制表
18.3 能力表
18.4 访问控制的实施
18.5 其他文件安全措施
18.6 文件系统性能
18.7 文件系统效率性能
18.8 文件系统设计分析:日志结构的文件系统
18.9 海量数据文件系统
思考题
第六篇 I/O原理篇
第19章 输入输出
引子:约翰逊的输出——从没有到爆发
19.1 输入输出
19.2 输入输出的目的
19.3 输入输出硬件
19.4 I/O软件
19.5 I/O软件分层
思考题
第七篇 多核原理篇
第20章 多核结构与内存
引子:不能承受之热
20.1 以量取胜
20.2 多核基本概念
20.3 多核的内存结构
20.4 对称多处理器计算机的启动过程
20.5 多处理器之间的通信
20.6 SMP缓存一致性
20.7 多处理器、超线程和多核的比较
思考题
第21章 多核环境下的进程同步与调度
引子:“多核”帝国的陨落
21.1 多核环境下操作系统的修正
21.2 多核环境下的进程同步与调度
21.3 多核进程同步
21.4 硬件原子操作
21.5 总线锁
21.6 多核环境下的软件同步原语
21.7 旋锁
21.8 其他同步原语
21.9 多核环境下的进程调度
21.10 多核环境下的能耗管理
21.11 讨论:多核系统的性能
思考题
第八篇 操作系统设计篇
第22章 操作系统设计之哲学原理
引子:残缺心智的胜利
22.1 操作系统设计的追求
22.2 操作系统设计的第1条哲学原理:层次架构
22.3 操作系统设计的第2条哲学原理:没有对错
22.4 操作系统设计的第3条哲学原理:懒人哲学
22.5 操作系统设计的第4条哲学原理:让困于人
22.6 操作系统设计的第5条哲学原理:留有余地
22.7 操作系统设计的第6条哲学原理:子虚乌有——海市蜃楼之美
22.8 操作系统设计的第7条哲学原理:时空转换——沧海桑田之变
22.9 操作系统设计的第8条哲学原理:策机分离与权利分离
22.10 操作系统设计的第9条哲学原理:简单为美——求于至简,归于永恒
22.11 操作系统设计的第10条哲学原理:适可而止
思考题
结语:失望与希望
参考文献
· · · · · · (收起)
第一篇 基础原理篇
第1章 操作系统导论
引子:智者的挑战
1.1 人造与神造
1.2 程序是如何运行的
1.3 什么是操作系统
1.4 魔术与管理
1.5 用户程序与操作系统
1.6 操作系统的范畴
1.7 为什么学习操作系统
思考题
第2章操 作系统历史
引子:不能承受之真
2.1 第一阶段:状态机操作系统(1940年以前)
2.2 第二阶段:单一操作员单一控制端操作系统(20世纪40年代)
2.3 第三阶段:批处理操作系统(20世纪50年代)
2.4 第四代:多道批处理操作系统(20世纪60年代)
2.5 第五代之一:分时操作系统(20世纪70年代)
2.6 第五代之二:实时操作系统
2.7 第六代:现代操作系统(1980年以后)
2.8 操作系统的演变过程
2.9 操作系统的未来发展趋势
2.10 讨论:操作系统虚拟化和虚拟化的操作系统
思考题
第3章 操作系统基本概念
引子:软件师的尴尬
3.1 计算机硬件基本知识
3.2 抽象
3.3 内核态和用户态
3.4 操作系统结构
3.5 进程、内存和文件
3.6 系统调用
3.7 壳
思考题
第二篇 进程原理篇
第4章 进程
引子:牛顿的困惑
4.1 进程概论
4.2 进程模型
4.3 多道编程的好处
4.4 进程的产生与消失
4.5 进程的层次结构
4.6 进程的状态
4.7 进程与地址空间
4.8 进程管理
4.9 进程的缺陷
思考题
第5章 进程调度
引子:恐怖分子的调度
5.1 进程调度的定义
5.2 进程调度的目标
5.3 先来先服务调度算法
5.4 时间片轮转算法
5.5 短任务优先算法
5.6 优先级调度算法
5.7 混合调度算法
5.8 其他调度算法
5.9 实时调度算法
5.10 进程调度的过程
5.11 高级议题:调度异常之优先级倒挂
思考题
第6章 进程通信
引子:孤独爆破手的自白
6.1 为什么要通信
6.2 进程对白:管道、记名管道、套接字
6.3 进程电报:信号
6.4 进程旗语:信号量
6.5 进程拥抱:共享内存
6.6 信件发送:消息队列
6.7 其他通信机制
思考题
第三篇 线程原理篇
第7章 线程
引子:亚历山大的分身术
7.1 进程的分身术——线程
7.2 线程管理
7.3 线程模型的实现
7.4 现代操作系统的线程实现模型
7.5 多线程的关系
7.6 讨论:从用户态进入内核态
7.7 讨论:线程的困惑——确定性与非确定性
思考题
第8章 线程同步
引子:滑铁卢的同步
8.1 为什么要同步
8.2 线程同步的目的
8.3 锁的进化:金鱼生存
8.4 睡觉与叫醒:生产者与消费者问题
8.5 信号量
8.6 锁、睡觉与叫醒、信号量
8.7 管程
8.8 消息传递
8.9 栅栏
思考题
第9章 死锁应对之哲学原理
引子:迷雾笼罩的加拿大
9.1 为什么会发生死锁
9.2 死锁的描述
9.3 死锁的4个必要条件
9.4 哲学家就餐问题
9.5 死锁的应对
9.6 消除死锁的必要条件
9.7 银行家算法:冒险的代价
9.8 哲学家就餐问题之解
9.9 讨论:死锁的思考——综合治理
9.10 讨论:死锁、活锁与饥饿
思考题
第10章 锁的实现
引子:高登绳结
10.1 以中断启用与禁止来实现锁
10.2 以测试与设置指令来实现锁
10.3 以非繁忙等待、中断启用与禁止来实现锁
10.4 以最少繁忙等待、测试与设置来实现锁
10.5 中断禁止、测试与设置
思考题
第四篇 内存原理篇
第11章 基本内存管理
引子:让别人无路可走
11.1 内存管理的环境
11.2 内存管理的目标
11.3 虚拟内存的概念
11.4 操作系统在内存中的位置
11.5 单道编程的内存管理
11.6 多道编程的内存管理
11.7 闲置空间管理
思考题
第12章 页式内存管理
引子:虚拟概念的变现
12.1 基址极限管理模式的问题
12.2 分页内存管理
12.3 分页系统的优缺点
12.4 翻译速度
12.5 缺页中断处理
12.6 锁住页面
12.7 页面尺寸
12.8 内存抖动
思考题
第13章 页面更换算法
引子:黑洞理论的替换
13.1 页面需要更换
13.2 页面更换的目标
13.3 随机更换算法
13.4 先进先出算法
13.5 第二次机会算法
13.6 时钟算法
13.7 最优更换算法
13.8 NRU算法
13.9 LRU算法
13.10 工作集算法
13.11 工作集时钟算法
13.12 页面替换策略
思考题
第14章 段式内存管理
引子:否定之否定
14.1 分页系统的缺点
14.2 分段管理系统
14.3 分段的优缺点
14.4 段页式内存管理
14.5 段号是否占用寻址字位
14.6 讨论:否定之否定的嵌套——纯粹分段与逻辑分段、分页与段页
思考题
第五篇 文件原理篇
第15章 磁盘操作
引子:EMC——从不可能到可能
15.1 磁盘组织与管理
15.2 磁盘的结构
15.3 盘面的结构
15.4 磁盘驱动器的访问速度
15.5 操作系统界面
15.6 磁盘调度算法
15.7 讨论:固态盘
15.8 讨论:智能磁盘系统
思考题
第16章 文件系统
引子:掩饰的极致
16.1 为什么需要文件系统
16.2 文件系统
16.3 文件系统的目标
16.4 文件的基本知识
16.5 从用户角度看文件系统
16.6 地址独立的实现机制:文件夹
16.7 文件系统调用
16.8 内存映射的文件访问
思考题
第17 章文件系统实现
引子:成功中的失败
17.1 文件系统的布局
17.2 文件的实现
17.3 目录实现:地址独立的实现
17.4 闲置空间管理
思考题
第18章 文件系统性能
引子:从不可能到可能
18.1 文件授权管理
18.2 主动控制:访问控制表
18.3 能力表
18.4 访问控制的实施
18.5 其他文件安全措施
18.6 文件系统性能
18.7 文件系统效率性能
18.8 文件系统设计分析:日志结构的文件系统
18.9 海量数据文件系统
思考题
第六篇 I/O原理篇
第19章 输入输出
引子:约翰逊的输出——从没有到爆发
19.1 输入输出
19.2 输入输出的目的
19.3 输入输出硬件
19.4 I/O软件
19.5 I/O软件分层
思考题
第七篇 多核原理篇
第20章 多核结构与内存
引子:不能承受之热
20.1 以量取胜
20.2 多核基本概念
20.3 多核的内存结构
20.4 对称多处理器计算机的启动过程
20.5 多处理器之间的通信
20.6 SMP缓存一致性
20.7 多处理器、超线程和多核的比较
思考题
第21章 多核环境下的进程同步与调度
引子:“多核”帝国的陨落
21.1 多核环境下操作系统的修正
21.2 多核环境下的进程同步与调度
21.3 多核进程同步
21.4 硬件原子操作
21.5 总线锁
21.6 多核环境下的软件同步原语
21.7 旋锁
21.8 其他同步原语
21.9 多核环境下的进程调度
21.10 多核环境下的能耗管理
21.11 讨论:多核系统的性能
思考题
第八篇 操作系统设计篇
第22章 操作系统设计之哲学原理
引子:残缺心智的胜利
22.1 操作系统设计的追求
22.2 操作系统设计的第1条哲学原理:层次架构
22.3 操作系统设计的第2条哲学原理:没有对错
22.4 操作系统设计的第3条哲学原理:懒人哲学
22.5 操作系统设计的第4条哲学原理:让困于人
22.6 操作系统设计的第5条哲学原理:留有余地
22.7 操作系统设计的第6条哲学原理:子虚乌有——海市蜃楼之美
22.8 操作系统设计的第7条哲学原理:时空转换——沧海桑田之变
22.9 操作系统设计的第8条哲学原理:策机分离与权利分离
22.10 操作系统设计的第9条哲学原理:简单为美——求于至简,归于永恒
22.11 操作系统设计的第10条哲学原理:适可而止
思考题
结语:失望与希望
参考文献
· · · · · · (收起)
喜欢读"操作系统之哲学原理(第2版)"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"操作系统之哲学原理(第2版)"的人也喜欢 · · · · · ·
- 分布式系统应用设计 6.8
- 数据库系统实现 8.7
- Linux/UNIX系统编程手册 9.4
- 数据库索引设计与优化 8.5
- MongoDB权威指南(第2版) 7.8
- 代码之髓 7.9
- 图解TCP/IP (第5版) 7.9
- Netty实战 7.5
操作系统之哲学原理(第2版)的书评 · · · · · · ( 全部 19 条 )
操作系统设计的十条哲学原理
操作系统设计的十条哲学原理 第一条哲学原理:层次架构 第二条哲学原理:没有对错 第三条哲学原理:懒人哲学 第四条哲学原理:让困于人 第五条哲学原理:留有余地 第六条哲学原理:子虚乌有——海市蜃楼之美 第七条哲学原理:时空转换——沧海桑田之变 第八条哲学原理:策机分...
(展开)
打着哲学旗号的新颖的OS教材
神学,哲学,科学,作者似乎想把三者结合为一体,但从每章开头的似乎和本章内容无甚联系的小故事来看,似乎没有做到这一点,每章的技术性讲解还是没有脱离“科学”而上升到“哲学”,所以想要从所谓“哲学”的高度(就像作者在序中说的那样)来理解操作系统的朋友们可能要失望...
(展开)
表示此书和modern os都看过
这学期开os课 这书和modern os定位不同,不知道某些拿这两本书来评价的童鞋是出于什么心态。 这书给我感觉就是像小说似的,读起来不累,甚至于舒服,有想读下去的欲望,但是要想读完它能吸收到什么精华精髓,这还是有点过分了的。 有些地方是有些偏激的个人观点,不把它当教...
(展开)
一本适合入门的计算机兴趣读物
这是一本适合OS入门的读物。 给我的总体感觉,这是邹老师的课堂语录和课件的整理、总结。作者希望从哲学的角度阐释计算机原理,别出心裁,但总体还是流于表面,读者要深入学习还需要付诸经典!(第二版没读过,不做评论) 个人感觉有些 “类比” 比较牵强,实际上和操作系统的...
(展开)
> 更多书评 19篇
论坛 · · · · · ·
在这本书的论坛里发言在哪儿借这本书 · · · · · ·
以下书单推荐 · · · · · · ( 全部 )
- 3.linux内核 (葡萄)
- 计算机专业必读经典书籍(知乎整理) (草莓)
- 操作系统,编译器原理和编程相关书籍 (xinglongbing)
- 硬件与软件 (华章数媒)
- 技术判断力 (zuowj)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有396人想读,手里有一本闲着?
订阅关于操作系统之哲学原理(第2版)的评论:
feed: rss 2.0
0 有用 猪头 2014-04-15 08:52:11
这倒看起来有点像是科普了,然后,又有某种基于思考的东西,感觉还可以~
0 有用 诗酒趁年华 2016-06-17 12:16:59
实在是对不起哲学两个字,作者用大白话把现代操作系统翻译了一遍
0 有用 v 2016-03-06 11:46:53
和人类社会一样,这也是一个相互妥协的结果,老师推荐的,可以看看
0 有用 小二 2014-09-04 22:03:41
比较适合操作系统初学者
1 有用 ...... 2015-07-01 21:02:56
易懂,就是肉眼可见的错误太太太太太多了
0 有用 EricLi 2023-01-30 10:12:17 北京
冲着哲学去看的,结果很是失望,与哲学的结合较为生硬,剥离书里哲学和宗教相关的语录,就是一本操作系统原理的通俗读物,书名不过是噱头罢了
0 有用 小山 2022-09-18 20:31:29 北京
用大量非专业的词句生动且系统解释了复杂操作系统,无论对于专业或者行业外都很友好。
0 有用 宇辰星君 2022-05-17 15:58:36
科室推荐,第一次对操作系统、内存等有了更深入的理解。
1 有用 虎弟想当幸运儿 2022-05-09 16:14:52
哈工大两位操作系统老师孙志岗和李治军是截然不同的授课风格,时至今日我也觉得孙志岗老师的课是最适合操作系统初学者学习的。两位老师在课堂上推荐了两本不同的书,李老师是那本0.11内核剖析,孙老师是这本。操作系统导论类的书籍看一本就足够了,了解几大模块后直接学习源码会有更透彻的理解,两本书配合效果会更好。只不过2.6和4.x才是现代操作系统真正要学习、理解和使用的东西,而导论来说,这本书足够了。
0 有用 wangyk 2022-04-12 23:49:15
[22-14] 好书! 全面易懂, 很有意思. 让我对操作系统和计算机的关系有了一个基础的了解! 因为疫情一直在拖学, 很不好意思.