1. 态度:不要等一切都准备好了再前行
如果把一切你可能会说,没有这些基础知识,我每看一篇文章,知识就铺天盖地席卷过来,仿佛每一个知识点都准确地打在了自己的盲点上,这该怎么办呢?
我非常能理解这种心情,而我想说的是,你不需要对这几门前置课程有非常深入的理解,你其实就可以学好这门课。但如果你是编程零基础,学习起来的确比较困难都准备好了再前行,那我们永远迈不出第一步。
毕竟我们这门课相对于大学的操作系统课,更加面向真实的操作系统分析,因而更深入一步,加上操作系统这门课本身的技术深度和知识点琐碎程度,就是很高的,所以感觉就更加困难一些。
这么一来,想要学好操作系统,我们要解决的其实就是这样两个问题:第一是初始装备问题,也就是说前置知识应该掌握到什么程度;第二就是练级攻略问题,也就是掌握这些操作系统知识的方法。
2. 资料:C 语言 + 数据结构和算法 + 编译原理 + 计算机组成
学习操作系统需要对 C 语言基础知识、数据结构和算法、编译原理以及计算机组成原理有一些了解,这样学起来就会更轻松。
对于数据结构和算法,业界有大量砖头一样厚的书籍。如果从头学起,你可能会比较崩溃。其实你只要了解表、栈、队列、树,这些基本的内容就够用了。现在学习资料这么多,想学会这些内容不是难事,关键看你是不是用心,是不是真心想要学习。
一般的汇编语言的书都会简单介绍 x86 的机制,以及简单的汇编语言。例如,《汇编语言:基于 x86 处理器》这本书里,你可以重点看第 2 章 x86 处理器架构和第 3 章汇编语言基础,掌握这些基本就可以了。
3. 方法:三遍学习法 +PPT 笔记法
读书有一个理念,是先把书读厚,再把书读薄,这往往是针对有一定基础的同学的学习方法,如果你原来没有研究过操作系统,或者没有基于 Linux 的 API 进行过程序设计,要想看懂每一行代码的确是非常难的事情。可以采取“先读薄,再读厚,再读薄”这样的三遍学习法。
学习是循序渐进的过程,不要妄想一遍就掌握所有。我自己在学习的时候,经常是秉持着这么一个方法:刚开始接触一个新东西,多去看别人的学习方法,从别人的方法中摸索中“主要矛盾”和“次要矛盾”,每一遍学习都提纲挈领地抓当前的主要矛盾,然后一遍一遍去学这个内容,当然每一遍的主要矛盾可能都不太一样。
4. 做好练习
“学习不是为了找到答案,而是为了找到方法”。哪怕我已经尽力为你考虑周全,但是没有你自己主动学习,去钻研,去下苦功寻找适合自己的方法,成功是不可能自己找上门来的。希望你可以为自己而努力。
此文章为12月Day7学习笔记,内容来源于极客时间《趣谈Linux操作系统》,推荐该课程。