首页>文档>JavaGuide(Java面试+学习指南)>JavaGuide-操作系统书籍推荐

JavaGuide-操作系统书籍推荐

考虑到很多同学比较喜欢看视频,因此,这部分内容我不光会推荐书籍,还会顺便推荐一些我觉得不错的视频教程和各大高校的 Project。

操作系统

为什么要学习操作系统?

从对个人能力方面提升来说,操作系统中的很多思想、很多经典的算法,你都可以在我们日常开发使用的各种工具或者框架中找到它们的影子。比如说我们开发的系统使用的缓存(比如 Redis)和操作系统的高速缓存就很像。CPU 中的高速缓存有很多种,不过大部分都是为了解决 CPU 处理速度和内存处理速度不对等的问题。我们还可以把内存可以看作外存的高速缓存,程序运行的时候我们把外存的数据复制到内存,由于内存的处理速度远远高于外存,这样提高了处理速度。同样地,我们使用的 Redis 缓存就是为了解决程序处理速度和访问常规关系型数据库速度不对等的问题。高速缓存一般会按照局部性原理(2-8 原则)根据相应的淘汰算法保证缓存中的数据是经常会被访问的。我们平常使用的 Redis 缓存很多时候也会按照 2-8 原则去做,很多淘汰算法都和操作系统中的类似。既说了 2-8 原则,那就不得不提命中率了,这是所有缓存概念都通用的。简单来说也就是你要访问的数据有多少能直接在缓存中直接找到。命中率高的话,一般表明你的缓存设计比较合理,系统处理速度也相对较快。

从面试角度来说,尤其是校招,对于操作系统方面知识的考察是非常非常多的。

简单来说,学习操作系统能够提高自己思考的深度以及对技术的理解力,并且,操作系统方面的知识也是面试必备。

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

另外,去年新出的一本国产的操作系统书籍也很不错:《现代操作系统:原理与实现》 (夏老师和陈老师团队的力作,值得推荐)。

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

纸上学来终觉浅 绝知此事要躬行!强烈推荐 CS 专业的小伙伴一定要多多实践!!!

其他相关书籍推荐:

  • 《自己动手写操作系统》:不光会带着你详细分析操作系统原理的基础,还会用丰富的实例代码,一步一步地指导你用 C 语言和汇编语言编写出一个具备操作系统基本功能的操作系统框架。
  • 《现代操作系统》:内容很不错,不过,翻译的一般。如果你是精读本书的话,建议把课后习题都做了。
  • 《操作系统真象还原》:这本书的作者毕业于北京大学,前百度运维高级工程师。因为在大学期间曾重修操作系统这一科,后对操作系统进行深入研究,著下此书。
  • 《深度探索 Linux 操作系统》:跟着这本书的内容走,可以让你对如何制作一套完善的 GNU/Linux 系统有了清晰的认识。
  • 《操作系统设计与实现》:操作系统的权威教学教材。
  • 《Orange’S:一个操作系统的实现》:从只有二十行的引导扇区代码出发,一步一步地向读者呈现一个操作系统框架的完成过程。配合《操作系统设计与实现》一起食用更佳!

如果你比较喜欢看视频的话,推荐哈工大李治军老师主讲的慕课 《操作系统》,内容质量吊打一众国家精品课程。

课程的大纲如下:

主要讲了一个基本操作系统中的六个基本模块:CPU 管理、内存管理、外设管理、磁盘管理与文件系统、用户接口和启动模块 。

课程难度还是比较大的,尤其是课后的 lab。如果大家想要真正搞懂操作系统底层原理的话,对应的 lab 能做尽量做一下。正如李治军老师说的那样:“纸上得来终觉浅,绝知此事要躬行”。

如果你能独立完成几个 lab 的话,我相信你对操作系统的理解绝对要上升几个台阶。当然了,如果你仅仅是为了突击面试的话,那就不需要做 lab 了。

说点心里话,我本人非常喜欢李治军老师讲的课,我觉得他是国内不可多得的好老师。他知道我们国内的教程和国外的差距在哪里,也知道国内的学生和国外学生的差距在哪里,他自己在努力着通过自己的方式来缩小这个差距。真心感谢,期待李治军老师的下一个课程。

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

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
搜索