查看原文
其他

如何学习操作系统?看哪本书好?有没有相关的公开课呢?

G哥 Github掘金计划 2022-03-15

前言

在前几天的这篇文章《硬核!从零实现一个操作系统内核!毕设/项目经验不愁了》中,我推荐了一个学弟手写的「操作系统内核」

后面实在是没想到这个学弟才上大二,「属实后浪啊!」

这篇文章的留言区有读者询问有没有操作系统相关的视频推荐。

刚好想写一篇关于「如何学习操作系统」的文章。这篇文章我会从下面 2 个角度来说一下:

  1. 「为什么要学习操作系统?操作系统对我们平时开发有啥用?」(搞清楚之后再去学习更有目的性)
  2. 「推荐一些操作系统相关的书籍/文章/公开课」

为什么要学习操作系统?

操作系统也是一门比较重要的学科。「为何这样说呢?」

操作系统中的很多思想、很多经典的算法,你都可以在我们日常开发使用的各种工具或者框架中找到它们的影子。

比如说我们开发的系统使用的缓存(比如 Redis)和操作系统的高速缓存就很像。CPU 中的高速缓存有很多种,不过大部分都是为了解决 CPU 处理速度和内存处理速度不对等的问题。我们还可以把内存可以看作外存的高速缓存,程序运行的时候我们把外存的数据复制到内存,由于内存的处理速度远远高于外存,这样提高了处理速度。同样地,我们使用的 Redis 缓存就是为了解决程序处理速度和访问常规关系型数据库速度不对等的问题。

高速缓存一般会按照局部性原理(2-8 原则)根据相应的淘汰算法保证缓存中的数据是经常会被访问的。我们平常使用的 Redis 缓存很多时候也会按照 2-8 原则去做,很多淘汰算法都和操作系统中的类似。

既说了 2-8 原则,那就不得不提命中率了,这是所有缓存概念都通用的。简单来说也就是你要访问的数据有多少能直接在缓存中直接找到。命中率高的话,一般表明你的缓存设计比较合理,系统处理速度也相对较快。

总结来说,「我觉得学好操作系统除了能够加深自己对于操作系统的了解/程序运行的底层机制,还能够提高自己思考的深度以及对技术的理解力。」

操作系统相关的书籍/文章/视频推荐

操作系统内容比较多,如果说你单纯是为了应付面试的话,你可以看我之前总结的一篇文章:https://snailclimb.gitee.io/javaguide/#/docs/operating-system/basis[1]

这篇文章的目录如下,涵盖了操作系统一些比较常见的问题。

如果你要系统地学习操作系统的话,最硬核最权威的书籍是 「《操作系统导论》」 。你可以再配套一个 「《深入理解计算机系统》」 加深你对计算机系统本质的认识,美滋滋!

如果你比较喜欢动手,对于理论知识比较抵触的话,我推荐你看看《30 天自制操作系统》,这本书会手把手教你编写一个操作系统。

再推荐一个我的朋友总结的图解操作系统 PDF!后台回复:“「PDF」” 即可获取。

如果你比较喜欢看视频的话,我建议你可以看看北京交通大学的慕课《操作系统》。

这个视频课程基本把操作系统的体系结构、设计机理及实现方法和技术相关重要的知识点介绍的差不多了。

还有下面这个国外的课程 《深入理解计算机系统 》 也很不错。

Reference

[1]

https://snailclimb.gitee.io/javaguide/#/docs/operating-system/basis: https://snailclimb.gitee.io/javaguide/#/docs/operating-system/basis

厚脸皮的来求个赞

Github掘金计划由3位志同道合的Github重度用户维护,我们想让Github 和 Gitee 上优质的开源项目被更多人看到。

每一个项目都是精心筛选而来,文章都是我们利用工作之余的业余时间整理。如果有帮助的话点个在看或者赞就是对我们最大的鼓励!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存