操作系统之哲学原理(第2版)

操作系统之哲学原理(第2版)

操作系统之哲学原理

暂无评价综合评分的显示会考虑用户真实性等多项因素,每部作品出现综合评分的时间不定。
8.3138 评价豆瓣读书
免费试读
¥25.00¥14.99
今日特价截止至:2020-07-05 02:00:00了解详情

作品简介

操作系统是计算机系统的核心系统软件,负责控制和管理整个系统,使之协调工作。本书对操作系统的核心内容进行了全面分析,包括操作系统的发展历史和基本概念、进程与线程、内存管理、文件系统、输入与输出、多核环境下的进程调度和操作系统设计。本书用大量生活实例,生动地解释了操作系统中的主要难点和模糊点:锁的实现、同步机制的发展轴线、纯粹分段到段页式的演变、多核环境下的进程同步与调度和操作系统设计等内容。本书重点突出、逻辑清晰、内容连贯,便于学生顺利掌握操作系统的核心内容。

本书层次丰富、涵盖操作系统的所有核心内容,适合作为国内高校计算机及相关专业本科生操作系统课程的教材,也是了解计算机操作系统原理不可多得的参考书。

邹恒明,美国密歇根大学博士。曾任职美国IBM、国家数据公司、朗讯、EMC公司8年多。在IBM和EMC分别从事AIX操作系统和Engenity存储操作系统的研发,其中包括911中挽摩根斯坦利公司于既倒的、美国唯一的“英雄软件”SRDF。2007年在中国金融期货交易系统(股指期货)专家测评中担任软件测评组长。2004年以来在上海交大研究、执教操作系统和算法设计等14门课程多年。

作品目录

  1. 操作系统之哲学原理(第2版)
  2. 前言
  3. 计算机的心智
  4. 操作系统的奥秘
  5. 操作系统之哲学原理
  6. 本书内容安排
  7. 基础原理篇
  8. 进程原理篇
  9. 线程原理篇
  10. 内存原理篇
  11. 文件原理篇
  12. I/O原理篇
  13. 多核原理篇
  14. 操作系统设计篇
  15. 本书特点
  16. 第一篇 基础原理篇
  17. 第1章 操作系统导论
  18. 引子:智者的挑战
  19. 1.1 人造与神造
  20. 1.2 程序是如何运行的
  21. 1.3 什么是操作系统
  22. 1.4 魔术与管理
  23. 1.4.1 魔术家角色
  24. 1.4.2 管理者角色
  25. 1.5 用户程序与操作系统
  26. 1.6 操作系统的范畴
  27. 1.7 为什么学习操作系统
  28. 思考题
  29. 第2章 操作系统历史
  30. 引子:不能承受之真
  31. 2.1 第一阶段:状态机操作系统(1940年以前)
  32. 2.2 第二阶段:单一操作员单一控制端操作系统(20世纪40年代)
  33. 2.3 第三阶段:批处理操作系统(20世纪50年代)
  34. 2.4 第四代:多道批处理操作系统(20世纪60年代)
  35. 2.5 第五代之一:分时操作系统(20世纪70年代)
  36. 2.6 第五代之二:实时操作系统
  37. 2.7 第六代:现代操作系统(1980年以后)
  38. 2.8 操作系统的演变过程
  39. 2.9 操作系统的未来发展趋势
  40. 2.10 讨论:操作系统虚拟化和虚拟化的操作系统
  41. 思考题
  42. 第3章 操作系统基本概念
  43. 引子:软件师的尴尬
  44. 3.1 计算机硬件基本知识
  45. 3.2 抽象
  46. 3.3 内核态和用户态
  47. 3.3.1 态势的识别
  48. 3.3.2 内核态与用户态的实现
  49. 3.4 操作系统结构
  50. 3.5 进程、内存和文件
  51. 3.6 系统调用
  52. 3.7 壳
  53. 思考题
  54. 第二篇 进程原理篇
  55. 第4章 进程
  56. 引子:牛顿的困惑
  57. 4.1 进程概论
  58. 4.2 进程模型
  59. 4.3 多道编程的好处
  60. 4.4 进程的产生与消亡
  61. 4.5 进程的层次结构
  62. 4.6 进程的状态
  63. 4.7 进程与地址空间
  64. 4.8 进程管理
  65. 4.8.1 进程管理所需要的手段
  66. 4.8.2 进程的创建过程
  67. 4.8.3 进程管理要处理的问题
  68. 4.9 进程的缺陷
  69. 思考题
  70. 第5章 进程调度
  71. 引子:恐怖分子的调度
  72. 5.1 进程调度的定义
  73. 5.2 进程调度的目标
  74. 5.3 先来先服务调度算法
  75. 5.4 时间片轮转算法
  76. 5.5 短任务优先算法
  77. 5.6 优先级调度算法
  78. 5.7 混合调度算法
  79. 5.8 其他调度算法
  80. 5.9 实时调度算法
  81. 5.9.1 EDF调度算法
  82. 5.9.2 RMS调度算法
  83. 5.10 进程调度的过程
  84. 5.11 高级议题:调度异常之优先级倒挂
  85. 思考题
  86. 第6章 进程通信
  87. 引子:孤独爆破手的自白
  88. 6.1 为什么要通信
  89. 6.2 进程对白:管道、记名管道、套接字
  90. 6.2.1 管道
  91. 6.2.2 记名管道
  92. 6.2.3 虫洞:套接字
  93. 6.3 进程电报:信号
  94. 6.4 进程旗语:信号量
  95. 6.5 进程拥抱:共享内存
  96. 6.6 信件发送:消息队列
  97. 6.7 其他通信机制
  98. 思考题
  99. 第三篇 线程原理篇
  100. 第7章 线程
  101. 引子:亚历山大的分身术
  102. 7.1 进程的分身术——线程
  103. 7.2 线程管理
  104. 7.3 线程模型的实现
  105. 7.3.1 内核态线程实现
  106. 7.3.2 用户态线程实现
  107. 7.4 现代操作系统的线程实现模型
  108. 7.5 多线程的关系
  109. 7.6 讨论:从用户态进入内核态
  110. 7.7 讨论:线程的困惑——确定性与非确定性
  111. 思考题
  112. 第8章 线程同步
  113. 引子:滑铁卢的同步
  114. 8.1 为什么要同步
  115. 8.2 线程同步的目的
  116. 8.3 锁的进化:金鱼生存
  117. 8.3.1 变形虫阶段
  118. 8.3.2 鱼阶段
  119. 8.3.3 猴阶段
  120. 8.3.4 锁
  121. 8.4 睡觉与叫醒:生产者与消费者问题
  122. 8.5 信号量
  123. 8.6 锁、睡觉与叫醒、信号量
  124. 8.7 管程
  125. MESA和HOARE管程
  126. 8.8 消息传递
  127. 8.9 栅栏
  128. 思考题
  129. 第9章 死锁应对之哲学原理
  130. 引子:迷雾笼罩的加拿大
  131. 9.1 为什么会发生死锁
  132. 9.2 死锁的描述
  133. 9.3 死锁的4个必要条件
  134. 9.4 哲学家就餐问题
  135. 9.5 死锁的应对
  136. 9.5.1 顺其自然:不予理睬
  137. 9.5.2 先礼后兵:死锁检测与修复
  138. 9.5.3 先发制人:死锁的动态避免
  139. 9.5.4 斩草除根:死锁的静态防止
  140. 9.6 消除死锁的必要条件
  141. 9.6.1 消除资源独占条件
  142. 9.6.2 消除保持和请求条件
  143. 9.6.3 消除非抢占条件
  144. 9.6.4 消除循环等待条件
  145. 9.7 银行家算法:冒险的代价
  146. 9.8 哲学家就餐问题之解
  147. 9.9 讨论:死锁的思考——综合治理
  148. 9.10 讨论:死锁、活锁与饥饿
  149. 思考题
  150. 第10章 锁的实现
  151. 引子:高登绳结
  152. 10.1 以中断启用与禁止来实现锁
  153. 10.2 以测试与设置指令来实现锁
  154. 10.3 以非繁忙等待、中断启用与禁止来实现锁
  155. 10.4 以最少繁忙等待、测试与设置来实现锁
  156. 10.5 中断禁止、测试与设置
  157. 思考题
  158. 第四篇 内存原理篇
  159. 第11章 基本内存管理
  160. 引子:让别人无路可走
  161. 11.1 内存管理的环境
  162. 11.2 内存管理的目标
  163. 11.3 虚拟内存的概念
  164. 11.4 操作系统在内存中的位置
  165. 11.5 单道编程的内存管理
  166. 11.6 多道编程的内存管理
  167. 11.6.1 固定分区的多道编程内存管理
  168. 11.6.2 地址翻译的方法
  169. 11.6.3 动态地址翻译的优点
  170. 11.6.4 非固定分区的内存管理
  171. 11.6.5 交换
  172. 11.6.6 重叠
  173. 11.6.7 双基址
  174. 11.7 闲置空间管理
  175. 思考题
  176. 第12章 页式内存管理
  177. 引子:虚拟概念的变现
  178. 12.1 基址极限管理模式的问题
  179. 12.1.1 空间浪费问题
  180. 12.1.2 程序受限问题
  181. 12.1.3 解决之道
  182. 12.2 分页内存管理
  183. 12.2.1 地址翻译
  184. 12.2.2 页表
  185. 12.2.3 页面翻译过程
  186. 12.3 分页系统的优缺点
  187. 12.3.1 多级页表
  188. 12.3.2 反转页表
  189. 12.4 翻译速度
  190. 12.5 缺页中断处理
  191. 12.6 锁住页面
  192. 12.7 页面尺寸
  193. 12.8 内存抖动
  194. 思考题
  195. 第13章 页面更换算法
  196. 引子:黑洞理论的替换
  197. 13.1 页面需要更换
  198. 13.2 页面更换的目标
  199. 13.3 随机更换算法
  200. 13.4 先进先出算法
  201. 13.5 第二次机会算法
  202. 13.6 时钟算法
  203. 13.7 最优更换算法
  204. 13.8 NRU算法
  205. 13.9 LRU算法
  206. 13.9.1 使用矩阵实现LRU算法
  207. 13.9.2 使用移位寄存器实现LRU算法
  208. 13.10 工作集算法
  209. 13.11 工作集时钟算法
  210. 13.12 页面替换策略
  211. 13.12.1 固定与可变驻留集
  212. 13.12.2 初始页面数确定
  213. 思考题
  214. 第14章 段式内存管理
  215. 引子:否定之否定
  216. 14.1 分页系统的缺点
  217. 14.2 分段管理系统
  218. 14.3 分段的优缺点
  219. 14.4 段页式内存管理
  220. 14.5 段号是否占用寻址字位
  221. 14.6 讨论:否定之否定的嵌套——纯粹分段与逻辑分段、分页与段页
  222. 思考题
  223. 第五篇 文件原理篇
  224. 第15章 磁盘操作
  225. 引子:EMC——从不可能到可能
  226. 15.1 磁盘组织与管理
  227. 15.2 磁盘的结构
  228. 15.3 盘面的结构
  229. 15.4 磁盘驱动器的访问速度
  230. 15.5 操作系统界面
  231. 15.6 磁盘调度算法
  232. 15.6.1 先来先服务
  233. 15.6.2 短任务优先
  234. 15.6.3 短寻道优先
  235. 15.6.4 电梯调度
  236. 15.6.5 提前查看电梯算法
  237. 15.7 讨论:固态盘
  238. 15.8 讨论:智能磁盘系统
  239. 思考题
  240. 第16章 文件系统
  241. 引子:掩饰的极致
  242. 16.1 为什么需要文件系统
  243. 16.2 文件系统
  244. 16.3 文件系统的目标
  245. 16.4 文件的基本知识
  246. 16.5 从用户角度看文件系统
  247. 16.5.1 文件命名
  248. 16.5.2 扩展名
  249. 16.5.3 内容寻址
  250. 16.5.4 文件内容组织
  251. 16.5.5 文件类型
  252. 16.5.6 文件格式
  253. 16.5.7 文件访问
  254. 16.5.8 文件属性
  255. 16.5.9 文件操作
  256. 16.6 地址独立的实现机制:文件夹
  257. 16.6.1 文件夹结构
  258. 16.6.2 相对路径与绝对路径
  259. 16.6.3 共享与链接
  260. 16.7 文件系统调用
  261. 16.8 内存映射的文件访问
  262. 思考题
  263. 第17章 文件系统实现
  264. 引子:成功中的失败
  265. 17.1 文件系统的布局
  266. 17.2 文件的实现
  267. 17.2.1 连续空间存放方式
  268. 17.2.2 非连续空间存放方式
  269. 17.2.3 FAT文件系统
  270. 17.2.4 索引文件组织
  271. 17.2.5 多级索引组织
  272. 17.2.6 非对称多级索引
  273. 17.2.7 文件缓存
  274. 17.3 目录实现:地址独立的实现
  275. 17.3.1 文件属性的存放
  276. 17.3.2 长文件名的存放
  277. 17.3.3 文件共享
  278. 17.3.4 硬链接
  279. 17.3.5 软链接
  280. 17.3.6 切断链接
  281. 17.3.7 链接带来的问题
  282. 17.3.8 文件系统挂载
  283. 17.3.9 卸载
  284. 17.4 闲置空间管理
  285. 17.4.1 磁盘分配块
  286. 17.4.2 磁盘配额
  287. 思考题
  288. 第18章 文件系统性能
  289. 引子:从不可能到可能
  290. 18.1 文件授权管理
  291. 18.2 主动控制:访问控制表
  292. 18.3 能力表
  293. 18.4 访问控制的实施
  294. 18.5 其他文件安全措施
  295. 18.6 文件系统性能
  296. 18.6.1 文件系统可靠性
  297. 18.6.2 文件系统持久性
  298. 18.6.3 文件系统一致性
  299. 18.7 文件系统效率性能
  300. 18.7.1 文件缓存
  301. 18.7.2 虚拟内存和文件缓存
  302. 18.7.3 提前读取
  303. 18.7.4 减少磁臂移动
  304. 18.8 文件系统设计分析:日志结构的文件系统
  305. 18.9 海量数据文件系统
  306. 思考题
  307. 第六篇 1/O原理篇
  308. 第19章 输入输出
  309. 引子:约翰逊的输出——从没有到爆发
  310. 19.1 输入输出
  311. 19.2 输入输出的目的
  312. 19.3 输入输出硬件
  313. 19.3.1 输入输出设备的差异性
  314. 19.3.2 设备控制器
  315. 19.3.3 物理I/O模式
  316. 19.3.4 根据CPU在I/O过程中的涉入程度进行分类
  317. 19.4 I/O软件
  318. 19.4.1 I/O软件的目的
  319. 19.4.2 逻辑I/O模式
  320. 19.5 I/O软件分层
  321. 19.5.1 中断服务程序
  322. 19.5.2 设备驱动程序
  323. 19.5.3 设备驱动程序操作
  324. 19.5.4 设备独立的操作系统软件
  325. 19.5.5 用户层I/O软件
  326. 思考题
  327. 第七篇 多核原理篇
  328. 第20章 多核结构与内存
  329. 引子:不能承受之热
  330. 20.1 以量取胜
  331. 20.2 多核基本概念
  332. 20.2.1 多处理器结构
  333. 20.2.2 超线程结构
  334. 20.2.3 多核结构
  335. 20.2.4 多核超线程结构
  336. 20.3 多核的内存结构
  337. 20.3.1 UMA
  338. 20.3.2 NUMA结构
  339. 20.3.3 COMA
  340. 20.3.4 NORMA
  341. 20.4 对称多处理器计算机的启动过程
  342. 20.5 多处理器之间的通信
  343. 20.6 SMP缓存一致性
  344. 20.7 多处理器、超线程和多核的比较
  345. 思考题
  346. 第21章 多核环境下的进程同步与调度
  347. 引子:“多核”帝国的陨落
  348. 21.1 多核环境下操作系统的修正
  349. 21.2 多核环境下的进程同步与调度
  350. 21.3 多核进程同步
  351. 21.4 硬件原子操作
  352. 21.5 总线锁
  353. 21.6 多核环境下的软件同步原语
  354. 21.7 旋锁
  355. 21.7.1 旋锁的实现
  356. 21.7.2 旋锁的缺点
  357. 21.7.3 队列旋锁
  358. 21.8 其他同步原语
  359. 21.9 多核环境下的进程调度
  360. 21.9.1 调度策略
  361. 21.9.2 调度域
  362. 21.9.3 负载平衡
  363. 21.9.4 进程迁移
  364. 21.9.5 钉子进程
  365. 21.9.6 关联线程的调度
  366. 21.10 多核环境下的能耗管理
  367. 21.10.1 超线程结构
  368. 21.10.2 多核结构
  369. 21.10.3 调度上的考虑
  370. 21.11 讨论:多核系统的性能
  371. 思考题
  372. 第八篇 操作系统设计篇
  373. 第22章 操作系统设计之哲学原理
  374. 引子:残缺心智的胜利
  375. 22.1 操作系统设计的追求
  376. 22.2 操作系统设计的第1条哲学原理:层次架构
  377. 22.3 操作系统设计的第2条哲学原理:没有对错
  378. 22.4 操作系统设计的第3条哲学原理:懒人哲学
  379. 22.5 操作系统设计的第4条哲学原理:让困于人
  380. 22.6 操作系统设计的第5条哲学原理:留有余地
  381. 22.7 操作系统设计的第6条哲学原理:子虚乌有——海市蜃楼之美
  382. 22.8 操作系统设计的第7条哲学原理:时空转换——沧海桑田之变
  383. 22.9 操作系统设计的第8条哲学原理:策机分离与权利分离
  384. 22.10 操作系统设计的第9条哲学原理:简单为美——求于至简,归于永恒
  385. 22.11 操作系统设计的第10条哲学原理:适可而止
  386. 思考题
  387. 结语:失望与希望
  388. 参考文献
载入中

热门划线

喜欢这本书的人也喜欢