不知道大家想过这个问题没有?为什么要有内核?如果没有内核有怎么样呢?
因为有了 unix 内核,有了 minix 后面又有了 Linux 内核,内核这个思想越来越根深蒂固,估计没学什么计算机知识的人都能侃出点所以然来。
在技术上来说,内核应该是连接硬件和应用程序的,说白了还是为应用服务,让应用程序更多的做自己的事情,所以说内核的时候,肯定是离不开驱动程序的,如果一个招聘的人说,我们需要一个内核开发工程师,如果一个不懂驱动开发,不懂电子硬件知识的人,怎么可能做得好内核开发呢?
我们使用计算机的时候,我们把手机或者电脑当座一个操作系统使用,打开QQ,打开微信,等等,但是对于应用程序来说,内核就是他的操作系统了,他可以通过系统调用来完成各种工作,比如我们获取一个文件的内容,我会调用 open ,read 来获取里面的信息。
如果很多人使用一个电脑,这个时候用电脑来比喻可能不是很恰当,用服务器来比喻吧,我们小组的几个工程师都在编译自己的代码,内核其实就是一个多任务协调者,对进程进行资源协调,让他们假装认为就只有自己一个人在独享计算机资源。
微内核和宏内核
这个就有点搞笑了,林纳斯和minix的发明者因为这个还吵了一架,minix 发明者说微内核才是先进的,当然被林纳斯啪啪啪打脸了,打脸的原因不是说了什么话,而是林纳斯在宏内核上做了优化升级,而且现在的 linux 地位,足以秒杀minix几条街了。
微内核有点像中央集权的意思,就好像,一个打印机进程,你负责给中央CPU汇报就可以了,你不能跟其他藩王沟通,这样有可能你们会发生叛变,这个核心思想非常好,但是实践起来一团糟,当初BSD操作系统就想这么搞,结果搞了很多年,都没有做出一个稳定性良好的系统,思想先进不能落地也就只是空谈了。
宏内核就跟上面的相反了,负责内核模块的子系统之间是可以打电话的,他们是可以通过内核符号表来互相调用的,这样看起来耦合性会非常高,但是可惜的是,我们的林纳斯大神让他变成了现实,我们的Linux 系统就是用这样的思想完成了代码编写。
晚上随笔写了下,有笔误和错误的地方,请见谅哈~