很久没有给大家推荐过操作系统的相关书籍了。
说到操作系统这门课程,可以说让人又爱又恨,爱它是因为它有着极其重要的地位和作用,懂操作系统的人会对硬件有一些了解,同时懂操作系统也能够把各种形式的汇编搞清楚了,而且你还掌握了高级语言的王者 — C 语言。
可以说懂操作系统和不懂操作系统的程序员完全是两类人,不懂操作系统的程序员可能把活能做完完并且能够做好,但是你可能做的不精细,而且涉及到原理之类的知识你无法讲出来,那么懂操作系统的程序员会把一些程序设计细节以及原理给你讲清楚并能够实现出来。
事实上,你不仅仅要学操作系统,你要打牢的是整个计算机科学,只不过本篇我们只会聊到操作系统。
软件工程师分为两种:一种充分理解了计算机科学,从而有能力应对充满挑战的创造性工作;另一种仅仅凭着对一些高级工具的熟悉而勉强应付。
这两种人都自称软件工程师,都能在职业生涯早期挣到差不多的工资。然而,随着时间流逝,第一种工程师不断成长,所做的事情将会越来越有意义且更为高薪,不论是有价值的商业工作、突破性的开源项目、技术上的领导力或者高质量的个人贡献。
底层的重要性我已经跟大家聊了太多回了,我的嘴甚至都快讲烂了,我把操作系统领域比较权威的书籍列出来,并提供一条有效的学习路径,学不学就是大家的事儿了。
第一步 — 炼气
如果你是个啥也不懂没接触过计算机的小白,亦或是跨行从机械等专业转过来的同学,还是刚刚入行打算深入理解计算机的程序员,我都建议你先要了解一下计算机基础。
我个人比较推荐的计算机入门书籍就是《编码》。
推荐指数:🌟🌟🌟🌟🌟
在本书中作者介绍了很多专业知识,包括汇编语言,数字电路,计算机组成原理,操作系统等等,作者凭借着他巧妙的写作方式,一个包袱一个包袱地把这些知识慢慢抛出,让之前完全没有听过这些东西的人也能够很容易理解。
这本书同时适合两类人:小白和大神。小白最喜欢的就是零门槛入门,然后带你一步一步推导某个物质的原理、某个公式的原理、因为知识是呈线性的,这是最容易的入门方式。这本书也适合大神,在你懂得很多原理之后,你就会明白往往一个概念、一个逻辑其实是非常简单的,正所谓的美味的食材往往只需要简单的烹饪方式,很多问题在你看过之后都会迎刃而解。
另外一本非常适合小白入门的书籍是《程序是怎样跑起来的》
推荐指数:🌟🌟🌟🌟
这本书采取通俗易懂的方式来为你讲解各种计算机硬件 — CPU ,内存,磁盘,汇编,算法,操作系统,计算机程序等,是一本计算机入门的基础读物。
这个小日子作者还写了另外两本书《计算机是怎样跑起来的》以及《网络是怎样连接的》,个人觉得计算机是怎样跑起来的这本书写的不和我的胃口,还是《程序是怎样跑起来的》读的酣畅淋漓。
我自己也写过这本书的读书笔记,并且做成了 PDF ,可以作为辅助学习的工具。
学习操作系统就好像修仙一样(事实上不少人都已经这么认为了),要从最基础的概念开始入手,然后再把硬件和软件串联起来,最后能自己手撸一个极简版的操作系统(这是大部分人所能接触到的天花板了)。再往后就可以专精操作系统的各个细分领域了。
所以这第一步就是炼气,炼气就是筑基打基础,修成之后举手投足都有千斤之力,快若奔马,超脱人体极限,向非人转化,并且体内凝聚真元,施展一些小法术 :)
开个玩笑,炼过气之后你会觉得操作系统很有意思,从上到下焕发出来了对知识的渴望,对底层的兴趣,想要继续深入。
第二步 — 金丹
继续深入操作系统的第一步就是需要对操作系统有个比较全面的理解了。这里给大家推荐一本书 《操作系统导论》(OS Three Easy Pieces)。
推荐指数:🌟🌟🌟🌟🌟
这本书是很多国外高校的大学教材,国内也有不少知名大学引进这本书,这本书作为操作系统的第一本书非常合适,汉译过来也比较易懂,当然有条件还是直接建议原版书。这本书介绍了所有现代系统的主要组件(包括调度、虚拟内存管理、磁盘和I/O子系统、文件系统)。内容非常全面,而且给出了真实可运行的代码,非常适合高校学生和教师。
还有一本操作系统入门非常好的书籍是《现代操作系统》,这也是我入门操作系统所看的第一本书。
推荐指数:🌟🌟🌟🌟
这本书的作者是知名的 Tanenbaum 教授,他写了著名的 MINIX 操作系统,本身就是操作系统领域的大拿那么其写出来的书也一定值得一读。这本书对于操作系统相关的介绍非常全面,而且有些地方的举例很有意思。
这本书最富有魅力最值得赞赏的地方在于——作者引入一个概念必定是由一个问题和困境带出的,也就是说,作者不会无缘无故的列提纲似的推出一个全新概念让人摸不着头脑思索为什么,而是由“既然有这样的情况,那我们迫切需要达到的效果是什么,由此我们自然而然地想出了那样的实现和解决方式”这样的思维模式来引导读者,循序渐进的方法令读者不会一下子脱离进度。
不过进一步来说,这本书太过于对概念进行介绍了,知识的连贯性不足,而且汉译过来的质量不太好,书中有不少勘误,甚至有的图都画错了,这样无疑会造成很多阅读障碍,还是建议读原版书。
这本书的译者陈向群还是北京大学的教授,她在 B 站上还有课程,翻译成这样真的太掉价了,而且 B 站上面的课程也很枯燥,不建议看。
还有一本国内的操作系统书籍也非常不错:《现代操作系统:原理与实现》
推荐指数:🌟🌟🌟🌟🌟
这本书的作者是上海交大的博导陈海波和夏虞斌老师,陈老也是国内操作系统领域知名度非常高的大佬,他还是 OpenHarmony 开放原子开源基金会的主席,之前有幸见过陈老一面。
由于这本书是国人写的,所以对于阅读门槛比较低,这本书后面还有 chcore 的实验,大家有兴趣可以做一下。
我上面推荐的三本操作系统书籍大家选一本看就可以了,当然我个人最推荐的就是操作系统导论这本书了。
如果你掌握了操作系统的这些理论知识,那么你能成为同行眼中的大佬,你可以跟他们侃侃而谈,但凡遇到程序方面的问题,你都会从底层原理出发来解决。
元丹九转凝练成金丹,金丹一念,可掌控方圆百里,让天地元气臣服,形成领域,可掌控天地,并具备法相可肉身横渡宇宙,踏入空间领域,初步掌握空间能力,一击毁城,在天荒星域,乃是老祖掌教级人物。
第三步 — 元婴
根据在不同平台上的运行环境,操作系统分为这几类:在 PC 上运行的操作系统比如 Windows、UNIX、Linux ;在手机上运行的操作系统比如 Symbian、安卓、IOS;嵌入式操作系统比如 Linux、eCos、FreeRTOS 等。
虽然操作系统有很多,但我们日常接触最多的就是 Windows、Linux,Windows 是闭源系统,并且是基于图形化界面的,资料比较少;而 Linux 操作系统是开源的,更符合程序员的脾性,所以我们日常研究的操作系统无外乎都是基于 Linux 的。
想要研究 Linux 操作系统,是需要有一些前置知识在里面的,这里需要你对 C 语言基础和汇编语言有一定程度的了解,因为 Linux 就是基于 C 和汇编语言的,这里的 Linux 我们只研究到早期的 Linux 内核 – v0.11。
所以先抛开操作系统不谈,这两本书是我极力推荐给大家的,都是五颗星。
《C 程序设计语言》
推荐指数:🌟🌟🌟🌟🌟
C 语言最经典的书,没有之一了,因为作者就是把 C 发明出来的 Dennis M. Ritchie 丹尼斯里奇。这本书短小且经典,全书没一句废话,每一句话都需要过脑子仔细思考才行,看完这本书后,C 语言就 OK 了。
《汇编语言》王爽
推荐指数:🌟🌟🌟🌟🌟
这本书我也看完了,没有汇编语言要比王爽老师写的这本教材再好的了。这本书真正做到了通俗易懂,门槛很低,章节之间的连贯性做的非常好,几乎可称国内最好的汇编语言教材。可搭配 DOSBox 模拟器使用,是入门汇编语言必看、必练的一本书。
这两本书读过之后,可以先来看一下这本书,《x86 汇编语言:从实模式到保护模式》
推荐指数:🌟🌟🌟🌟
这本书可以在看完王爽老师汇编语言之后看,也可以一起看,也可以不看,只看王爽老师的那本书。当然视你自己的时间来定,我还是推荐看一下的。
下面来推荐一个比较王炸的书籍,《Linux 0.11 内核完全注释》
推荐指数:🌟🌟🌟🌟
这是一本基于 Linux 0.11 内核源码写的,能让你对 Linux 0.11 内核有全面的认知。不过这本书是翻译过来的国外著作,所以有些地方比较晦涩,比如在讲第五张 Linux 内核体系结构的时候,我就有很多地方产生过歧义,不知道是我太菜还是怎样。虽然是神书,但是一页一页看下来困难也非常大,可以当做一本工具书来用,源码分析的解释非常好,重点推荐。
这部书可能你一时半会无法读完,而且这本书也没有指望你能一下子读完,这是一本能让你常读常新的书籍。随时翻看都能有所体会和感悟。
凝聚自身法则,碎丹凝婴,元婴可与法则共鸣,以己心代天心,一念之间,方圆千里云动,万里雪飘。可操控天象,举手投足,都具备毁天灭地之力,可用自身之力掌控空间,自身万寿无疆。
元婴这一步练成,就说明你有很深的造诣了,你具备手撸一个操作系统的基础和框架,下一步就直接实现一个吧!
第四步 — 化神
写到这里我一直在思考一个问题,是把所有理论都掌握了然后再实践,还是学了一部分理论就直接上手实践,我觉得这个孰对孰错,都是选择的问题。
如果你只学了一部分理论知识就直接上手,有可能你会更加在意实验结果而忽略了过程,甚至很多细节点你注意不到,不会让实践加深你的理论认知。
如果你学了所有的理论知识再上手实践,这个过程非常痛苦,因为你会长时间浮在云上,无法落地,有可能坚持不到实践就放弃了。
所以我觉得最好的方式就是学了一部分理论之后就直接去做对应的实验,所以我推荐大家把炼气和金丹阶段修炼完,《Linux 0.11 内核完全注释》可以和我下面推荐的书籍一起看,一起练。
《操作系统真象还原》
推荐指数:🌟🌟🌟🌟🌟
这本书讲解了开发一个操作系统需要的技术和知识,主要内容有:操作系统基础、部署工作环境、编写 MBR 主引导记录、完善 MBR 错误、保护模式入门、保护模式进阶和向内核迈进、中断、内存管理系统、线程、输入输出系统、用户进程、完善内核、编写硬盘驱动程序、文件系统、系统交互等核心技术。
你可以根据这本书一步一步编写和调试,加深印象,渐渐会让你对操作系统有个全面的认知和理解。
《Orange’S:一个操作系统的实现》
推荐指数:🌟🌟🌟🌟
于渊老师的著作,这本书代码非常精炼,适合大家自己动手实现一下。
《30 天自制操作系统》
推荐指数:🌟🌟🌟
元神寄托虚空,号称不灭,化身万千、滴血重生,抛弃灵石,吸收更高层次的能量,能够开辟生命世界,可以横渡宇宙星空,得到天地位格的加持,彻底掌控一片地域,把一方区域化作自己的神域神国。
修炼到这个境界就能够修改操作系统源码了,你甚至可以参与 Linux 内核代码的开发。
第五步 — 渡劫
事实上如果你能跟着上面书中的内容一步一步撸一个极简版的操作系统,那么操作系统的框架和结构就在你的脑海里 “立” 起来了,那么你需要做的是不断的装填你所需要的材料和弹药。
《深入理解 Linux 内核》
推荐指数:🌟🌟🌟🌟🌟
读这本书需要对 Linux 内核有一定了解才可以,小白当然直接劝退了!如果有条件支持的话,还是要看英文版的。而且这本书不要指望看一遍就看懂,复杂系统的知识网络往往是网状的,而非线性的,读这本书要综合起来看才会有意义和收货。
《Linux 0.11 内核完全注释》
再次推荐 Linux 0.11 内核完全注释,常读常新。
《深入 Linux 内核架构》
推荐指数:🌟🌟🌟🌟🌟
如果你要从事 Linux 内核开发或者对 Linux 有极度的兴趣,可以看下这本书。这本书结合内核版本 2.6.24 源代码中最关键的部分,深入讨论了 Linux 内核的概念、结构和实现。
后记
操作系统方面的书籍有很多,我只是罗列了一下我认为比较好的学习路线,很多书籍没有提到,比如 LDK ,Linux 内核设计的艺术、操作系统概念等书。小伙伴们可以按照我的路线来学习,我保证你能有一个系统性的提高,或者你认为我在瞎扯,这当然因人而异了,我也左右不了你的想法,不过希望你能拿出依据来怼我。
当然欢迎各位评论区提出针对此路线的改善意见和建议。
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/317315.html