内核就是机器配置的最底层的程序,是操作系统(作业系统)最为基本、核心的部分。
对于操作系统而言实现内核时钟管理、中断管理、设备驱动、CPU切换,以及对于进程、存储器、设备等管理功能的那些程序就是内核程序,不同的操作系统对于“内核”的定义不同,所以才有了宏内核、微内核的争议。
在1980年代以前所有的操作系统都采用宏内核(Monolithic Kernel,又称为整块性核心、集成式核心、单体式核心)来实现,这就导致了直到现在主要的操作系统都是采用宏内核,比如Windows、MacOS、Linux、OpenVMS、FreeBSD、Solaris、Unix、Android等。宏内核通常是以单一静态二进制档案的形式存在磁盘或快速存储器上,开机之后马上载入记忆体的核心空间开始运行。
宏内核核心提供的所有服务都是以特权模式在大型的核心位地址空间(Kernel Space)里运行,几乎是一条龙服务,用户运行的应用程序所产生的需求直接向内核提,由内核进行统一管理。宏内核的优点就是设计简单,核心内的通讯成本非常小,核心可以直接调用核心空间内的函数,就跟应用程序调用函数一样。
除了宏内核之外,还有微内核、混合内核,以及极限核心(Exokernel)、超微内核(Nanokernel)等。微内核的特点就是精简,只实现一个操作系统最为基本的功能,微内核更像是一个代理人,其他所有的驱动、文件系统等都运行在和用户应用程序平级的用户模式下。
极限核心的设计极为简化,目标在于同时简化传统微内核的信息传递机制和宏内核的软件抽象层。在极限核心中运行在核心空间的唯一进程只有内核,它的唯一使命就是负责分配系统资源,并防止用户进程存取到其他进程的资源。
超微内核又称为非常轻量性的微内核,比如L4微核心就是属于超微内核。超微内核一般是用来将硬件进行虚拟化,它是一个负责处理中断的小程序,使得单一的硬件可以同时执行多个操作系统。
既然有了宏内核,微内核的意义何在?
毫无疑问微内核在未来会有非常大的发展空间,未来五花八门的物联网设备通常都会微控制器(MCU)、微型主板、很小的电池。这么小的设备很难搭载上宏内核,就算能搭载上也会非常耗电。
物联网设备并不需要操控全局,它的功能也特别单一,并不会堆砌很多不必要的功能,仅仅只需要维持自身携带的技能运行,其他的一概不管,在有些情况下甚至可以主动休眠节省电量,直至被唤醒。
微内核可以使用不同的API、文件系统,甚至是不同的操作系统特性都可以在微内核中共存。有人称微内核为插件式结构,所以微内核的扩展性、移植性非常好,添加的系统应用程序也不会干扰内核,而宏内核很可能因为程序崩溃或者硬件问题导致整个操作系统没有办法运行。
微内核好处虽然很多,但也并不是没有缺点,由于微内核将更多的系统服务放到了用户模式下,并隔离形成一个个独立的服务,这样就会导致执行效率处于劣势,这会使得讯息传递有延迟,传输量也会受到限制。要有统筹全局的军师,也要有冲锋陷阵的小兵,不能让将军师去冲锋陷阵,同样小兵也不足以统筹全局。所以才有了宏内核、微内核相结合的混合内核模式。
Android系统是Linux内核的变种
既然Android系统是基于Linux开发而来,那么它肯定属于宏内核,所以现在Android手机的系统才会越来越臃肿,功能也越来越多。
未来已来,鸿蒙系统、FusionOS就是基于微内核机制所做的一些尝试,与其说是微内核,更应该说是混合内核,运行在8、或者N里面的可能才是独立的微内核。
领取专属 10元无门槛券
私享最新 技术干货