Linux 内核和驱动方向香吗?适合应届生吗?

今天给大家分享的是一位粉丝的提问,Linux内核和驱动方向香吗?适合应届生吗?

接下来把粉丝的具体提问和我的回复分享给大家,希望也能给一些类似情况的小伙伴一些启发和帮助。

同学提问:

Linux内核和驱动方向怎么样?

Yt回答:

首先Linux内核它是一个开源的代码,大家每一个朋友可以从www.kernel.org直接可以下载到Linux内核的源码。那其实在Linux内核目前市面上它有这么两类开发,一类就是属于嵌入式,还有一类就是属于这种云厂家。那对应来说你比如以嵌入式,嵌入式这种对于Linux内核本身的东西它是不会有很多改变的,更多是针对它对应的驱动,比如我要适配某些蓝牙,或者适配某一些这种硬盘,或者适配某一些这种存储,或者适配某一些网卡,这种我会针对于它做一些设备的调优,整个Linux内核可能它不会动,比如进程调度、内存管理,然后包括这种文件系统,这个可能是不会管的,做存储还可能会有些优化,其实整体上面就是说的做嵌入式相关的方面。还有一个虚拟化,虚虚拟化整个一起有这么三个方面,第一个高性能计算、高性能存储、高性能网络,这三个方面都会针对于虚拟化。你就比如说你在腾讯云上面买一云主机,这个云主机其实它就是个虚拟机,这个虚拟机里面你会发现你在购买的时候,你会发现你要选几个参数,第一个CPU的核数,第二个就是你比如你所用的硬盘的大小,还有就是你网络的带宽以及网卡这一系列的。就是你会选它会围绕这三个参数,一个是网络,一个是存储,还有一个是计算这三个方面,所以这里面的开发呢两类。

其实这里提到Linux内核,在目前Linux内核在国内的开发岗位它是很少很少的,我是认为如果大家各位朋友以应届生为例,不是很推荐大家比如说我后面找内核,你把自己给 all in在这个方向上面,使得你自己会走的比较偏,能理解吧?你如果想去找Linex内核,比如你作为应届生的朋友,我给你推荐你选择在Linux上面用C/C++,后面所有的方向都可以投,内核方向你一样可以投,然后包括这种虚拟化的方向你一样可以投。如果你比如说把自己all in到这个内核的话,那我认为这个路你就发现使你走的很曲折,而且你发现它对应的岗位都不一定有。因为应届生在招聘的时候,它不一定给你定岗,比如我要招内核工程师多少,这个是不可能的,能理解吧?直接招的时候,通用的都是以软工的方式招,所以很多朋友进来之后,前期是不定岗的。所以跟你讲的就后面你选择在Linux上面用C/C++就可以了。

然后再跟你讲一下,如果各位朋友你对内核感兴趣,我跟大家讲一下这个学怎么学。因为有很多工作几年的朋友说我要研究一下内核,从内核源码开始看。这里跟你讲,大家各位对于内核的话,我给大家讲一个比较好的姿势。其实内核首先你做的这么第一步,你一定要自己能够编译内核,你就比如说一个VMware,你安装一Ubuntu,你把这个内核换了,你比如你是4.4的或者5.10的,你把它内核换了,换一个高版本内核,变成一种情况就是你编译的这版内核是直接可以在你的虚拟机里面运行的,这是第一步。你做到这一步,至少来说你就得到一点你这版完整的内核源码有,现在虚拟机里面运行的就是你这一版,然后在这个基础上面你可以做什么呢?你可以基于它做一款文件系统,我是认为所有内核里面入手比较简单的,做一款文件系统会好一点。那很多朋友说那字符设备可能更简单,但是你字符设备你做完之后,你发现你不知道它能用在哪里。我们之前有涉及一个内核的课程,里面有讲到一个实现一个字符设备,就仿安卓的那个binder,做一个进程间通信的组件,这个是有实现的。这个东西很多朋友实现一个字符设备,实现完之后你不知道干啥。给大家推荐实现一个文件系统,你可以针对于这种无存储的你做一个文件系统,或者针对于有存储的做个文件系统,这个也行,或者说你针对于这种SSD,或者针对于它你可以规划一下,整个如果你实现一个文件系统,你会对存储这一层很通透,底层怎么落盘的,应用层怎么跟POSIX API结合的,这样我认为你就能够深入到内核。如果你比如说就单纯的去看内核源码,各位你是看不明白的,而且每个版本内核差别都很大。所以你不用说我去看,我认为你就结合我想做一款文件系统,我就把这东西做到内核里面,我就在我的虚拟机里面,然后创建一个这种SSD,创建一个MVME或者SCSI或者SATA这种硬盘,这都行,然后我就针对于它做一个文件系统,然后我自己用,然后你再对比一下ext4 ext3或者btrfs。然后对比一下你比如做用FIO,你测一下它的IOPS,然后你可以横向对比一下,如果你测出来,你比如针对于某些场景。那这个FIO在测的时候,你比如针对于它小块,比如128个字节的,或者256,或者说这种512,或者说这种再大一点,比如4K或者16K你就测一下,你测出来只要有一个场景,你相比较一个ext4或者btrfs,你会快你就可以了。至少你不用考虑你所有的场景都比它强,那是不可能的。因为像ext4这种,它已经很强大了,你只需要做的一点,你比如说在某一个场景里面,比如在16K或者说你针对更大一点,你比如针对这种两兆落盘,你就比它快也行。至少来说你是有一个实际的使用场景,然后你再去讲你怎么怎么做的就可以了,这样你就对内核会很熟,这就跟你讲那么多。

其实这里讲的关于内核和驱动方向怎么样,那其实这种方向你毋庸置疑,如果你拿到了它是非常好的方向,因为它是真的能够出技术专家的,就是什么意思?就是你会发现你做几年你对这一块就会很熟,而且你发现业界你也会慢慢做的很知名。你就比如以存储这个模块,你做个几个项目做个几年,在一个很强的体系里面,后面内核里面肯定会有你提交的patch,就这个样子。这个方向是个很好的方向,但是它的门槛会很高,而且对应的工作岗位它比较的少。所以我跟大家讲的,大家各位除非你比如说你现在第一份工作你做的就是内核开发,后面我就不断的去深化,然后后面再换。其实这种方向毋庸置疑,它都是很好的,好吧。如果你去换,你比如说我现在做Java开发的,我就想去研究内核,我认为这东西它不现实的;你比如我之前做桌面开发的,我现在想去研究内核,后面去找内核开发,这东西也是不现实的。好吧,就跟你聊这么多吧。

最后:

Linux内核方向:技术含量高,能培养成专家,但岗位少、门槛高。内核开发=越老越吃香,但入行难,没相关经验别硬转。

计算机相关专业就业求职/学习路线/offer选择/职业规划建议

(学习就业困惑?我们来为你答疑解惑!)免费** **必回

#职业规划##计算机#
计算机就业职业规划辅导 文章被收录于专栏

解决计算机相关专业就业/面试/技术提升等问题解答(投稿必回)

全部评论

相关推荐

不愿透露姓名的神秘牛友
08-01 18:41
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务