曾经,微内核的操作系统一直活在实验室里,从来没走出过实验室。无数教授拿着教材说“微内核的操作系统没有实现过”。
过了昨天,这句话就就成为历史了。
操作系统(Operating System)内核有几种?
操作系统内核kernel,主要控制的计算机的正常运行,包括:文件管理(文件系统)、进程管理(CPU调度)、内存管理、中断处理和应用程序的切换调度。这些功能都是独立成单独的模块,除了这些功能模块,内核kernel本身除了在“恰当的时候”负责调度、连接这些模块之外,它自己也有重要的功能,如控制计算机的启动bootLoader。
主要的操作系统内核:宏内核、微内核、VMM
宏内核
目前市面上、绝大多数操作系统都是宏内核。宏内核的操作系统,典型代表就是Linux。
宏内核:将内核服务作为整体,所有服务都“伸手即得”。也就是将上述控制的计算机的正常运行
的各个模块,都聚合在一起。如下图所示,
所有服务都“伸手即得”:就比如,当有应用程序申请内存时,kernel直接调度相关的单元即可完成,没有额外的消耗。
画外音
这种内核有点像web开发中,之前很盛行的一体化架构—— 一个jar/war包打天下;所有服务模块都聚在一起,要死一起死,一个服务模块挂了,整个web应用服务都挂了。
当然,很久以前在使用这个架构时,我们并没有给它命名“一体化架构”一样,知道后来有人提出了SOA/微服务。相对比较之下,才流行起来比较形象的名字。
恰似web开发一体化架构的宏内核,具体有没有刚才说的“要死一起死”问题,我们不得而知。但在5G时代,微内核将成新宠。
微内核
做过嵌入式开发的同学应该知道,微内核,kernel非常小,只管非常少的事。内存、文件管理等都是外围服务的存在。
kernel除了必要的程序,如启动等,其他事都交给外围服务完成。
那微内核划分开来了,除了职责单一了、kernel启动快,它有什么缺点呢?执行效率低了。
宏内核所有服务都“伸手即得”;而微内核,实际做事的是指派给外围服务了,要等别的[外围]内核返回数据给我,才能返回给应用程序,他们之间多一手网络通信传输。
既然缺点这么明显,提出干啥呢?5G能解决瓶颈。微内核就是为5G而设计的。
5G的超高速传输,让不同内核服务数据传输,变得“伸手即得”。5G+微内核的结合,将创造无限可能。
画外音
微内核,有点像是给各服务“微服务化”了。就像web开发中目前主流的微服务一样。
与内核相对的,还有外核。这也是目前研究领域的一个热门方向。
外核
基于内核,延伸出“服务定制化”的外核。如浏览器browser运行在操作系统中,基于操作系统内核,专门给browser量身定制一个外核,专门给browser用,以达到更棒的应用使用效果。
目前,还不存在外核的操作系统。只是活在实验室。
缺点:和软件强绑定,没有通用性。但为“服务定制化”的外核为“专供”的软件程序提供超强支持。
VMM
虚拟化的技术,专为解决硬件资源过剩而生。
这种内核的操作系统,解决问题的思路,有点像docker。
增加一个虚拟层,虚拟成多个操作系统,共享硬件资源。
一个硬件较好的机器上面能虚拟出多个独立的OS,互相隔离、互不影响,充分发挥硬件能力。