[quote=引用 13 楼 cl55 的回复:] 体系结构最重要! 起码要了解一种,比如x86. 否刚会完全找不到头绪,看不懂arch目录下的代码,而那又是最核心的一部分。interrupt 处理,addressing, 内存管理都是基于arch的。 编译原理也要有所了解。不然根本看不懂crash dump, 那个经常要手工反编译,而且是优化后的代码。 代码中汇编和c互相调用时不懂c calling convention也看不懂。 算法反尔都是封装好的,局部的。有的细节不想去了解可以不看,不影响整体理解。不过设计思想和一些基础算法和数据结构是要懂的。 数学基础就不用在意了,内核里的算法有点离散数学知识就行, 没有也不见得看不懂。
体系结构最重要! 起码要了解一种,比如x86. 否刚会完全找不到头绪,看不懂arch目录下的代码,而那又是最核心的一部分。interrupt 处理,addressing, 内存管理都是基于arch的。 编译原理也要有所了解。不然根本看不懂crash dump, 那个经常要手工反编译,而且是优化后的代码。 代码中汇编和c互相调用时不懂c calling convention也看不懂。 算法反尔都是封装好的,局部的。有的细节不想去了解可以不看,不影响整体理解。不过设计思想和一些基础算法和数据结构是要懂的。 数学基础就不用在意了,内核里的算法有点离散数学知识就行, 没有也不见得看不懂。
找本计算机专业的操作系统和数据结构看看就差不多了
初学者可以认为基本不需要。 复杂的结构内核已经封装好了API,难懂的算法偶尔会遇到一两个,不必过于担心。
如果你想深入了解内核还是需要学习算法的,如果总是拿来就用不知其中的原理,这就失去学习内核的意义了. 学习内核至少要会譬如链表操作,哈希散列式,红黑树的,优先查找树,堆栈树等. 至于数学的话至少要会求求质数,算算十六进制的值等.
不需要高深的数学,懂二进制和简单的离散数学知识(比如常见的位运算)足够!
其实一般使用的话对数学要求一般。但是到了核心部分就重要了。不过只要你想,一切都能学
没有必要学习算法,kernel算法都有接口,会用即可。 做kernel开发的公司没有一把都是大公司甚至知名公司,这一块比较难,也是核心,无相关开发经验估计很难近,相关不一定是内核开发经验,如驱动开发经验也可。驱动很多也会涉及到内核。 学历,一些知名公司,可以用工作经验换学历。
4,436
社区成员
17,460
社区内容
加载中
试试用AI创作助手写篇文章吧