朋友最近想学习linux内核,准备看《Linux 内核完全剖析——基于0.12内核》,看了看目录,里面有些硬件知识。但是不会汇编,硬件也了解不多
了解LINUX C,了解计算机组成原理和OS,使用过两年linux,不知道还需要什么知识做基础?
对于某些人来说,比如我,是绝对完全不可以的。
我读大一的时候,复习《大学物理》曾经企图像中学一样把所有结论都自己推导一遍。结果差点因为时间不够没及格,还连累了其它科目的复习。不过这也让我认清了自己的学习方式。我不能容忍没有衔接的知识断链。
如果两段代码之间的部分我不知道它们做了些什么,那我就不舒服。我可以因为当前的主要目标不是这个而不去了解,但是我不能容忍我不了解的原因是我居然不会那门语言。
我经常遇到这样的情况,面试的对象知识有明显的断链。他们的眼神里充满了『你问这个有用吗』的神情。而我的头脑里充满了『你不懂这个怎么看得下去第二章教材』的疑问。
不懂汇编,学到的东西注定是夹生的。
比如,kenel里到处都是的偏移量到底是什么?让它滑过去也能大概搞个一知半解。我的做法是看了ELF格式的说明,然后又都忘了。但是从此那些偏移量再也没有什么神秘感。
学会汇编,不在于你真的看懂每一句kernel里的汇编代码,而在于你明白自己忽略的到底是什么。出了问题你能意识到去什么地方寻求答案。
可以的,Linux内核里大部分都是C语言。
建议先看《Linux内核设计与实现(Linux Kernel Development)》,Robert Love,也就是LKD。通过该书可以对Linux内核有个大体的把握。
Linux内核有很多方面,全弄懂不大现实。通过LKD有个大体印象,再深入学习感兴趣的模块,这样比较实际。不会汇编、硬件完全可以跳过这些部分。
Linux内核中有一些汇编实现的内容,不懂汇编的话这个部分可能会不容易看懂,进而影响你深入理解其他部分。
如果你只是想对内核有个大体了解和初步印象,就可以选择忽略这些内容,或者直接看《Linux 内核完全剖析——基于0.12内核》关于这部分的解释。实际上我觉得看内核源码如果不是要做底层开发就不必要看太多细节的东西,有个宏观把握就可以了。
因为0.12内核的代码很少,如果想完全搞明白这些代码,还是建议你看下汇编知识,学起来不是很难,而且你有组成原理的基础,学习汇编完全没有障碍,内核源码都看了,应该也不会在乎学习汇编花的那点时间了吧。
了解LINUX C,了解计算机组成原理和OS,使用过两年linux,不知道还需要什么知识做基础?
对于某些人来说,比如我,是绝对完全不可以的。
我读大一的时候,复习《大学物理》曾经企图像中学一样把所有结论都自己推导一遍。结果差点因为时间不够没及格,还连累了其它科目的复习。不过这也让我认清了自己的学习方式。我不能容忍没有衔接的知识断链。
如果两段代码之间的部分我不知道它们做了些什么,那我就不舒服。我可以因为当前的主要目标不是这个而不去了解,但是我不能容忍我不了解的原因是我居然不会那门语言。
我经常遇到这样的情况,面试的对象知识有明显的断链。他们的眼神里充满了『你问这个有用吗』的神情。而我的头脑里充满了『你不懂这个怎么看得下去第二章教材』的疑问。
不懂汇编,学到的东西注定是夹生的。
比如,kenel里到处都是的偏移量到底是什么?让它滑过去也能大概搞个一知半解。我的做法是看了ELF格式的说明,然后又都忘了。但是从此那些偏移量再也没有什么神秘感。
学会汇编,不在于你真的看懂每一句kernel里的汇编代码,而在于你明白自己忽略的到底是什么。出了问题你能意识到去什么地方寻求答案。
可以的,Linux内核里大部分都是C语言。
建议先看《Linux内核设计与实现(Linux Kernel Development)》,Robert Love,也就是LKD。通过该书可以对Linux内核有个大体的把握。
Linux内核有很多方面,全弄懂不大现实。通过LKD有个大体印象,再深入学习感兴趣的模块,这样比较实际。不会汇编、硬件完全可以跳过这些部分。
Linux内核中有一些汇编实现的内容,不懂汇编的话这个部分可能会不容易看懂,进而影响你深入理解其他部分。
如果你只是想对内核有个大体了解和初步印象,就可以选择忽略这些内容,或者直接看《Linux 内核完全剖析——基于0.12内核》关于这部分的解释。实际上我觉得看内核源码如果不是要做底层开发就不必要看太多细节的东西,有个宏观把握就可以了。
因为0.12内核的代码很少,如果想完全搞明白这些代码,还是建议你看下汇编知识,学起来不是很难,而且你有组成原理的基础,学习汇编完全没有障碍,内核源码都看了,应该也不会在乎学习汇编花的那点时间了吧。