mirror of
https://github.com/cheetahlou/CategoryResourceRepost.git
synced 2026-05-11 04:04:34 +08:00
del
This commit is contained in:
91
极客时间专栏/geek/趣谈Linux操作系统/专栏加餐/“趣谈Linux操作系统”食用指南.md
Normal file
91
极客时间专栏/geek/趣谈Linux操作系统/专栏加餐/“趣谈Linux操作系统”食用指南.md
Normal file
@@ -0,0 +1,91 @@
|
||||
<audio id="audio" title="“趣谈Linux操作系统”食用指南" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/ca/07/cae1fbc9c2ddc0a558e9bfbb43b16b07.mp3"></audio>
|
||||
|
||||
你好,我是刘超。
|
||||
|
||||
“趣谈Linux操作系统”专栏现在已经全部更新完毕。这里有一份“食用指南”,希望帮你找到学习本专栏的最佳姿势。
|
||||
|
||||
在这份指南中,我为你整理了专栏的所有学习资料,并告诉你如何更高效地使用这些资料,从而帮助你消化吸收,以期获得更好的学习效果。
|
||||
|
||||
不管你是刚刚打开这个专栏,还是进入温故的阶段,我的这份指南,都可以帮你更上一个台阶。一起加油吧!
|
||||
|
||||
## 1.入学测验
|
||||
|
||||
在专栏一开始,我准备了12道小题,邀请你先来做个小测验。这些题目都是我精心设计,反复筛选出来的,可以说涵盖了Linux操作系统中最重要、最核心的知识点。我估计你看着它们肯定不会陌生,甚至你正在从事相关的工作。
|
||||
|
||||
一方面,希望你可以通过这套题目对自己之前的学习做一个检测,查缺补漏。另一方面,希望你可以把这套题作为手边的一个常用资料,每隔一段时间,都可以回过头来检测一下。**希望这套题目能帮你明确“在哪里”和“去哪里”,然后我们整个课程的学习帮你解决“怎么去”的问题。**
|
||||
|
||||
点击进行入学测验:[你究竟对Linux操作系统了解多少?](https://time.geekbang.org/column/article/87111)
|
||||
|
||||
## 2.爬坡路径
|
||||
|
||||
Linux上手难,学习曲线陡峭。它的学习过程更像一个爬坡模式。这些坡看起来都很陡,但是一旦爬上一阶,就会一马平川。那怎样才能掌握这项爬坡技能呢?首先需要明确,我们要爬哪些坡。
|
||||
|
||||
我总结了一下,在整个Linux的学习过程中,要爬的坡有六个,分别是:熟练使用Linux命令行、使用Linux进行程序设计、了解Linux内核机制、阅读Linux内核代码、实验定制Linux组件以及最后落到生产实践上。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/bc/5b/bcf70b988e59522de732bc1b01b45a5b.jpeg" alt="">
|
||||
|
||||
点击文章,查看我为你准备的详细爬坡秘籍和辅助的书单弹药:[学习路径:爬过这六个陡坡,你就能对Linux了如指掌](https://time.geekbang.org/column/article/87628)
|
||||
|
||||
## 3.学习方法
|
||||
|
||||
随着后面文章涉及的技术越来越深,很多同学会觉得学习的难度越来越大。有的人会想放弃,有的人已经淹没在知识的海洋里。因此,我特意准备了一篇“学习攻略”,作为专栏学习过程中的补充剂。
|
||||
|
||||
在学习的过程中,首先,要端正学习态度;其次,用好辅助的学习资料;最后,掌握高效的学习方法。
|
||||
|
||||
点击文章链接,获取专栏学习过程的补充剂:[学好操作系统,需要掌握哪些前置知识?](https://time.geekbang.org/column/article/92382)
|
||||
|
||||
## 4.知识串讲
|
||||
|
||||
操作系统是一门体系复杂、知识点很多的课程,经过前面60多节的讲解,你是否已经感觉自己被淹没在细节的汪洋大海里面了?专栏最后,我用5篇知识串讲,通过一个创业故事,串起来操作系统的整个知识体系。我们一起看看,主人公是如何从小马,变成马哥,再变成马总的!
|
||||
|
||||
我在这里想特别提一下**专栏音频**。我的每篇文章都包含了很多图片和代码。为了帮助你更好地理解文章内容,我在录音的时候,常常会对图片和代码做一些补充解释和说明。尤其是这几节知识串讲的音频,我建议你一定要多听几遍,最好是达到能够复述的程度。应用的基础是掌握,掌握的基础是熟记于心。
|
||||
|
||||
我相信,不管你对前面的内容掌握程度如何,这个串讲内容都可以让你对Linux操作系统,有一个更全面、深入的把握。
|
||||
|
||||
点击查看:
|
||||
|
||||
[知识串讲(一)](https://time.geekbang.org/column/article/119902)
|
||||
|
||||
[知识串讲(二)](https://time.geekbang.org/column/article/120320)
|
||||
|
||||
[知识串讲(三)](https://time.geekbang.org/column/article/120928)
|
||||
|
||||
[知识串讲(四)](https://time.geekbang.org/column/article/123494)
|
||||
|
||||
[知识串讲(五)](https://time.geekbang.org/column/article/128211)
|
||||
|
||||
## 5.知识地图
|
||||
|
||||
想要真正掌握Linux操作系统,只看这个专栏肯定是不够的。极客时间还出品了“[Linux实战技能100讲](https://time.geekbang.org/course/intro/193)”“[Linux性能优化实战](https://time.geekbang.org/column/intro/140)”。这两个课程的内容也非常不错,如果时间充裕,建议你都订阅一下,结合在一起学习。掌握了这三个专栏的内容,相信你对Linux操作系统,再也不会惧怕了。
|
||||
|
||||
如果你习惯纸质阅读,想要随时随地查阅学习,也可以购买极客时间出品的[《Linux操作系统知识地图》](time://mall?url=https%3A%2F%2Fdetail.youzan.com%2Fshow%2Fgoods%3Falias%3D1y7qqgp3ghd2g),这个地图涵盖了三个课程的精华内容。我自己也收藏了一份,放在手边时时翻看,非常实用。
|
||||
|
||||
## 6.实验环境
|
||||
|
||||
计算机这门学科是实验性的。为了更加深入地了解操作系统的本质,我们必须能够做一些上手实验。操作系统的实验,相比其他计算机课程的实验要更加复杂一些。因此,我用两节内容带你来搭建一个操作系统的实验环境。希望你能够上手操作一下学过的知识。毕竟,只有经过你自己动手和思考产生的内容,才是真正属于你的知识。
|
||||
|
||||
点击查看我搭建实验环境时候的具体操作,希望给你的思维晋升指路:
|
||||
|
||||
[搭建操作系统实验环境(上):授人以鱼不如授人以渔](https://time.geekbang.org/column/article/117924)
|
||||
|
||||
[搭建操作系统实验环境(下):授人以鱼不如授人以渔](https://time.geekbang.org/column/article/117939)
|
||||
|
||||
## 7.期末测试
|
||||
|
||||
最后的期末测试题,我采取了和入学测验不一样的思路。入学测验里的题目比较细节,类似你在大学里学完操作系统课之后的考试题目。但是,现实生活中,不管是面试还是工作中,“考试”方式常常是开放式的。因此,我把专栏内容每个部分面试和工作常遇到的问题,总结了出来,共11道。每一道题都产生于真实的工作场景中。
|
||||
|
||||
除此之外,我还为你准备了一些面试回答问题的小Tips,你可以把这些问题放到真实的工作场景中,想一想,在面试或者工作中遇到这些问题,你会怎么回答。
|
||||
|
||||
当然,我在测试题后面还准备了一份非常详实的“答案”,对背后的知识体系进行了详细的梳理。不过,建议你还是先做题,再对答案,这样查漏补缺的效果会更好哦!
|
||||
|
||||
点击进行期末测试:[这些操作系统问题,你真的掌握了吗?](https://time.geekbang.org/column/article/128978)
|
||||
|
||||
除此之外,我们的专栏还有不少功能,提醒你好好利用起来,成为高效的学习者。
|
||||
|
||||
比如,在学习的过程中,遇到自己不懂的地方,或者是有深刻感受的地方,一定要及时利用“**划线笔记**”的功能,记录下自己当时的想法。这样在过程中点滴积累,等学完后,还可以回过头来再过一遍。如果有可能,你可以把自己的这些思考梳理成文。相信我,这样做,你的提升速度会快到让自己意外。
|
||||
|
||||
再比如“**请朋友读**”功能。如果你觉得某篇内容对自己很有帮助,不妨把它推荐给身边有同样需求的朋友,这一个动作或许就能帮他解决一个手边的问题。最重要的是,通过这些分享,你会找到那些和你一样热爱学习的伙伴,一起学习更快乐。
|
||||
|
||||
最后,建议你收藏这篇文章,把这篇“食用指南”好好利用起来,真正做到物尽其用。如果觉得有帮助,你也可以把它分享给你的朋友。加油,胜利的曙光就在眼前!
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/8c/37/8c0a95fa07a8b9a1abfd394479bdd637.jpg" alt="">
|
||||
89
极客时间专栏/geek/趣谈Linux操作系统/专栏加餐/学习攻略(一):学好操作系统,需要掌握哪些前置知识?.md
Normal file
89
极客时间专栏/geek/趣谈Linux操作系统/专栏加餐/学习攻略(一):学好操作系统,需要掌握哪些前置知识?.md
Normal file
@@ -0,0 +1,89 @@
|
||||
<audio id="audio" title="学习攻略(一):学好操作系统,需要掌握哪些前置知识?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/96/99/9675fa5b4b9cf945db96ec768d9c1299.mp3"></audio>
|
||||
|
||||
你好,我是刘超。
|
||||
|
||||
专栏已经更新一段时间了,随着涉及的技术越来越深,很多同学觉得学习的难度也越来越大了,并在留言区提出了一些问题。有些问题,是我之前学习也碰到过的或者我思考过的;也有些问题是我没想到的,但是这些问题归根结底其实就是一个,如何更好地去学习操作系统,学习这门课。所以,今天我就给你讲讲,我认为学习这个专栏的一些好的方法和正确的态度。
|
||||
|
||||
## 1.态度:不要等一切都准备好了再前行
|
||||
|
||||
很多人问到,“学习这个专栏需要什么基础”,说实话,我在设计这个专栏的时候,和编辑也专门讨论过这个问题。为此,我曾经专门研究过大学的课程设计。大学的操作系统前置课程有程序设计基础、数据结构与算法、计算机组成与体系结构、编译原理等。这几门前置课程,几乎每一门都非常“硬核”,学习难度和大多数人的掌握程度往往是成反比的。
|
||||
|
||||
你可能要问了,我是不是要把这些前置课程都搞定了才能学操作系统呢?当然不是。这些课程它们本身就很难,除此之外,它们也有前置课程。如果这样,你就会发现你永远开始不了。
|
||||
|
||||
如果把一切都准备好了再前行,那我们永远迈不出第一步。
|
||||
|
||||
你可能会说,没有这些基础知识,我每看一篇文章,知识就铺天盖地席卷过来,仿佛每一个知识点都准确地打在了自己的盲点上,这该怎么办呢?
|
||||
|
||||
我非常能理解这种心情,而我想说的是,你不需要对这几门前置课程有非常深入的理解,你其实就可以学好这门课。但如果你是编程零基础,学习起来的确比较困难。
|
||||
|
||||
毕竟我们这门课相对于大学的操作系统课,更加面向真实的操作系统分析,因而更深入一步,加上操作系统这门课本身的技术深度和知识点琐碎程度,就是很高的,所以感觉就更加困难一些。
|
||||
|
||||
这有点像咱们平时玩游戏,作为主人公,你既不能完全没有任何装备和法术就开始,也不能等练级练到满,将整个地图都了解清楚才开始。你只要有一个初始装备,例如一把木剑、一套基本的法术就可以开始了。先上路,之后在探险的路上,慢慢摸清地图,积累装备,训练法术,最终PK终极Boss。
|
||||
|
||||
这么一来,想要学好操作系统,我们要解决的其实就是这样两个问题:第一是初始装备问题,也就是说前置知识应该掌握到什么程度;第二就是练级攻略问题,也就是掌握这些操作系统知识的方法。
|
||||
|
||||
## 2.资料:C语言+数据结构和算法+编译原理+计算机组成
|
||||
|
||||
学习操作系统需要对C语言基础知识、数据结构和算法、编译原理以及计算机组成原理有一些了解,这样学起来就会更轻松。
|
||||
|
||||
因为我个人是从C语言转向Java的,我觉得Java和C语言的基本语法没有太大的差别。
|
||||
|
||||
仅仅就学习咱们这个操作系统专栏来讲,其实你只要有计算机二级的那些C语言基础知识基本就够了。如果你要严肃地学好C语言,几乎每个前辈都会建议你从《C程序设计语言》这本书学起。这是一本很薄很薄的书。如果你有编程基础,但是之前没有学过C语言,稍微翻一翻它,了解一下C语言的基本编程方法也就足够用了。
|
||||
|
||||
这本书里,第1章到第3章涉及类型、运算符、表达式、控制流,这些和其他语言区别不大,你应该很容易理解。你重点看第4章函数与程序结构、第5章指针与数组、第6章结构,这样基本就可以了。
|
||||
|
||||
对于数据结构和算法,业界有大量砖头一样厚的书籍。如果从头学起,你可能会比较崩溃。其实你只要了解表、栈、队列、树,这些基本的内容就够用了。现在学习资料这么多,想学会这些内容不是难事,关键看你是不是用心,是不是真心想要学习。既然是基于C语言的数据结构和算法,我这里给你推荐一本书《数据结构与算法分析:C语言描述》。在这本书里,你重点看第3章表、栈和队列和第4章树,基本就可以了。
|
||||
|
||||
编译原理和计算机组成,这些都是操作系统的基础。在咱们的专栏里面,我也有简单的阐述,你只要掌握我平时说的那些,基本上足够了。计算机组成与系统原理的书,相对来说都比较复杂。
|
||||
|
||||
一般的汇编语言的书都会简单介绍x86的机制,以及简单的汇编语言。例如,《汇编语言:基于x86处理器》这本书里,你可以重点看第2章x86处理器架构和第3章汇编语言基础,掌握这些基本就可以了。
|
||||
|
||||
除此之外,极客时间出品的《数据结构与算法之美》《深入浅出计算机组成原理》也是非常优秀的学习资料。所有基础知识,本是一家。如果有精力,推荐你认真学习这两个专栏,对我们这门课会非常有帮助。
|
||||
|
||||
## 3.方法:三遍学习法+PPT笔记法
|
||||
|
||||
读书有一个理念,是先把书读厚,再把书读薄,这往往是针对有一定基础的同学的学习方法,如果你原来没有研究过操作系统,或者没有基于Linux的API进行过程序设计,要想看懂每一行代码的确是非常难的事情。所以学习这门课程,可以采取“先读薄,再读厚,再读薄”这样的三遍学习法。
|
||||
|
||||
所谓的先读薄,就像我在开篇词中说的,了解操作系统的原理,一开始不要纠结一城一地的得失。不要死抠每一个代码细节,而重点了解主要的流程和原理。
|
||||
|
||||
学习是循序渐进的过程,不要妄想一遍就掌握所有。我自己在学习的时候,经常是秉持着这么一个方法:刚开始接触一个新东西,多去看别人的学习方法,从别人的方法中摸索中“主要矛盾”和“次要矛盾”,每一遍学习都提纲挈领地抓当前的主要矛盾,然后一遍一遍去学这个内容,当然每一遍的主要矛盾可能都不太一样。
|
||||
|
||||
比如在**第一遍学习这门课**的时候,你没必要把文稿中的代码细节当成学习目标,只把它看作一个对操作系统原理的佐证就行了。我讲操作系统这个地方是这样做的,你看代码,大概就能看出来,它真的就是这样做的。这样一方面先形成一个大致的印象,另一方面先在心里对原理有一个具象的理解。至于代码中每一行的意思,这一遍不要纠结。
|
||||
|
||||
另外,Linux代码中有很多注释,如果实在看不懂代码,那你就阅读注释就行了,然后按照注释中的意思,浏览一下代码大概的意思就可以了。尤其是对于汇编语言,更是这样。比如说压栈操作,你看到push,就理解是正在压栈,然后后面有注释说,压入了哪个栈。这时候,你暂时没必要纠结,为什么这行命令压入的是这个栈。
|
||||
|
||||
当你可以按照我每节画的图,把原理理解得差不多的时候,第一遍基本就完成了。
|
||||
|
||||
第一遍相当于咱们打游戏,到了一个新的场景,先到处走走看看情况,不纠结和妖怪的对战。
|
||||
|
||||
接下来的第二遍,就相当于我们需要完成在游戏里面的任务,碰到怪就打怪,碰到迷宫走迷宫了。这也是把书读厚的方法,就是见山开路,遇水搭桥。
|
||||
|
||||
这一遍并不需要你把所有不懂的知识都找到一本砖头厚的书全部看完,这样你会迷失在庞大的知识体系里面,丧失方向,偏离目标,你会忘了为什么要看这本书,甚至会疑惑通过这本书到底能不能帮你理解操作系统的某个知识。
|
||||
|
||||
所以把书读厚,还是要以操作系统的知识体系为主线,遇到不懂的知识点的时候,通过搜索引擎,看我给出的参考资料里面的某个章节,读某个博客等方式,达到了解这个知识点就可以了。一旦了解到能够帮助你理解操作系统的程度,就不需要再深入下去,马上回到主线,攻克下一个知识点。
|
||||
|
||||
这里可以分享一下我的学习大量陌生知识方法,就是记笔记,我一般是用PPT来记。当读了每篇文章的一个小节的时候,甚至可以更细到几个自然段,就像咱们学语文的时候划分自然段一样,你可以为这一段知识做一页PPT,PPT的标题就是这一段的段落大意,能够总结出段落大意。其实你已经知道这一段主要是做什么的,只不过很多细节的知识点还不清楚,这样将来通过 标题浏览PPT的时候,就很容易把握整篇文章的总体思路。
|
||||
|
||||
接下来在这页PPT的正文中,将所有的知识点都列出来,其中不懂的部分编个号。例如,知识点17,然后接下来的几页PPT,我们就以知识点17为标题,开始查所有能够帮助你了解这个知识点的文章和书籍,将内容贴进来,直到你发现你已经懂了这个知识点,当然知识点可能还要再套知识点,接着编号就行。当从这个知识点的PPT返回的时候,你知道你理解了知识点17,接下来应该攻克知识点18了。当所有的知识点都趟过去,你会发现这是一个特别长的PPT,没有关系,你把所有的以知识点为标题的PPT页都放在最后做附页,再次看整篇文章,就会有一种一马平川的感觉。如果暂时忘了,可以到附页中去查看自己记的笔记,很容易就可以回忆起来。
|
||||
|
||||
这个特别长的PPT就是起到了把书读厚的作用。如果你有兴趣搜索我写的文章《别以为真懂Openstack:虚拟机创建的50个步骤和100个知识点》,看看我是怎样趟过这100个OpenStack相关知识点的。
|
||||
|
||||
第三遍再读薄,是我希望能够达到这样一个效果。经过前两遍的学习,现在你对知识的细节和整体的脉络都应该有了一定了解。因此这第三遍无需面面俱到,你需要把这些知识真正变成你自己的东西。
|
||||
|
||||
专栏每篇文章后面我都会用一张图对这篇文章做一个总结。这些总结图代表了我对知识的梳理和理解。你可以先试着看着我的图来复习,之后,你可以自己尝试去总结这些内容。把知识真正装进你自己的脑袋里。等整个专栏全部结束的时候,你只需要对着这些图,将整个操作系统的知识串下来,基本就融会贯通了。
|
||||
|
||||
## 4.做好练习,用好音频
|
||||
|
||||
你应该有感觉,操作系统的知识量非常大。但凡想要讲的面面俱到,都需要一本砖头厚的书籍才行。专栏不可能和书籍一样,我主要是基于Linux给你讲,我是怎么理解操作系统的。因而,我讲的肯定是最核心的内容,很多旁支的东西需要你自己去预习和复习。
|
||||
|
||||
每节课我留的练习题往往都是对当节课程的补充,也是对后面章节要讲知识的准备,所以你一定要重视课后题。每节课后都认真去做一做题,思考题目背后的知识点。
|
||||
|
||||
另外,音频这个形式非常重要。文稿里是最核心的内容,很多对于代码的分析放进去会非常繁琐,但是这块又非常重要,于是在音频讲解里,我会对代码部分进行更加详尽的讲述。如果你遇到,仅仅看文字不能理解的部分,尝试听听语音,或许会有不一样的收获。
|
||||
|
||||
最后,我想借用陈皓的一句话,“学习不是为了找到答案,而是为了找到方法”。哪怕我已经尽力为你考虑周全,但是没有你自己主动学习,去钻研,去下苦功寻找适合自己的方法,成功是不可能自己找上门来的。希望你可以为自己而努力。
|
||||
|
||||
好了,今天我想分享的就是这些。不知道我今天的分享哪个地方对你最有用呢?你在学专栏的过程中还遇到过什么问题呢?
|
||||
|
||||
欢迎留言和我分享你的疑惑和见解。你可以收藏今天的文章,反复研读。你也可以把今天文章分享给你的朋友,和他一起学习操作系统。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user