最近几年,随着国内大厂纷纷发布自研操作系统,大家对这些操作系统的出身和相貌吵得不可开交。然而,本文并不打算陷入这种无尽的争论之中。
在计算机技术的发展历程中,所有的技术都是在不断的迭代和发展中形成的,无论是基于商业还是技术考虑,参考已有的成熟方案是非常自然的选择。
今天,我要分享的是操作系统内核的基本知识,主要是微内核、宏内核和混合内核的概念。
什么是操作系统内核?
操作系统内核,你可以把它想象成一个繁忙城市的交通指挥系统。就如同交通指挥系统管理着城市的道路、桥梁和交通信号灯,以确保交通顺畅,内核同样管理着计算机的各种硬件资源,如处理器、内存、硬盘等,以保障操作系统的正常运行。而当我们谈到进程管理和文件系统管理时,这就像是交通指挥系统要确保各个方向的车辆能按照规定的路线行驶,防止交通混乱。总的来说,内核就像是交通指挥系统的角色,它在幕后默默工作,确保计算机的硬件资源能有序、高效、安全地服务于各种上层应用程序。
举几个例子:
- 内存管理:内存管理是操作系统内核的一项基本任务。当你打开一个应用程序,比如浏览器,操作系统内核会分配一定的内存给它,这就像是给浏览器一个工作台,它可以在这个工作台上放置需要的数据和工具。当你关闭这个应用程序时,操作系统内核会回收这部分内存,就像是清理掉工作台,然后这个工作台又可以分给其他程序使用。通过内存管理,程序就可以有序的使用内存,而如果让程序各自相互协调,程序越多,沟通成本越高,还容易发生混乱。
- 网络通信:当你在浏览器中输入一个网址,比如 www.google.com,按下回车键后,浏览器就会向操作系统内核发出一个请求,要求连接到这个网址。操作系统内核会通过网络协议栈(主要就是TCP/IP协议处理程序),处理这个请求,然后通过网络接口,比如以太网卡或者WiFi适配器,发送出去。当接收到来自远程服务器的响应时,操作系统内核会把数据再传递给浏览器,然后浏览器就可以把网页显示出来了。如此,上层应用就不需要关心数据在网络中是怎么传输的,只需要调用操作系统提供的网络API就可以完成网络数据请求。
- 文件读写:比如在Windows系统中,当你使用“记事本”打开一个文件,比如一个.txt文件,“记事本”会向操作系统内核发出一个请求,要求读取这个文件的内容。操作系统内核会通过文件系统,找到这个文件在硬盘上的位置,然后把数据读取到内存中,再传递给“记事本”。当你在“记事本”中修改了文件,然后保存时,“记事本”会向操作系统内核发出一个请求,要求把修改后的内容写入到文件中,操作系统内核会把数据写入到硬盘上的相应位置。如果操作系统内核发现当前的用户没有访问这个文件的权限,内核就会向应用程序报错。
内核分类
宏内核
宏内核是大而全的管理者。
宏内核,也被称为单体内核,是一种把所有的服务都集中在一起的内核设计。它的优点是性能高,因为所有服务都在内核中运行,调用过程简单,效率高。但是,这种设计也有缺点,如果内核中的一个服务出现问题,可能会影响到整个系统的稳定性。
就像一个城市的交通系统,所有的道路、桥梁、交通信号灯都是由一个中央指挥系统控制。这种方式的优点是效率高,因为所有的交通运输都在同一个系统内部进行调度,所以调度速度快,交通流畅。然而,缺点也很明显,如果中央指挥系统出现问题,那么整个城市的交通都可能会受到影响,导致严重的交通拥堵。
宏内核的代表有Unix,Linux等。
微内核
微内核是小而美的服务商。
微内核,只提供最基本的服务,如进程调度、内存管理等,其他的服务,如文件系统、网络协议等,都在内核之外的用户空间中运行。这种设计的优点是结构简单,容易理解和修改,如果一个服务出现问题,也不会影响到其他服务。但是,这种设计的缺点是性能较低,因为服务之间的调用需要在内核和用户空间之间进行切换,效率较低。
就像一个城市的交通系统中,只有最基本的道路和桥梁是由中央指挥系统控制,其他的如公交、出租车等都是由各自的调度系统进行管理。这种方式的优点是稳定性好,因为即使一个服务出现问题,也不会影响到其他的服务。然而,缺点是效率较低,因为服务之间的调度需要在内核和用户空间之间进行切换,这就像各个调度系统之间需要进行协调,导致交通运输的效率降低。
微内核的代表有Mach,据说鸿蒙也是微内核。
混合内核
混合内核是两全其美的选择。
混合内核,基于微内核的架构设计,把一些性能要求高的服务放在内核中,比如设备驱动、应用进程间通信等,而其他的服务则放在用户空间中。这种设计既有宏内核的性能优势,又有微内核的稳定性优势。但是,这种设计的缺点是复杂性高,需要仔细地选择哪些服务放在内核中,哪些服务放在用户空间中。
就像一个城市的交通系统中,主干道和桥梁是由中央指挥系统控制,同时核心的公交、地铁服务也放到了中央指挥系统中,但是其他的如出租车、网约车、私家车等则是由各自的调度系统进行管理。这种方式既有宏内核的性能优势,又有微内核的稳定性优势,就像主干道的畅通和公共交通工具的可用可以保证基本的交通需要,而其它的调度系统则可以灵活地调配资源,提高交通运输的效率。
混合内核的代表有Windows NT,XNU等。
比较
这里对它们做一个比较,主要关注两点:性能和安全性。
- 性能上,宏内核最好,因为所有服务都在内核中,调用效率高;微内核最差,因为需要频繁地在内核和用户空间之间切换;混合内核介于两者之间。
- 安全性上,微内核最好,因为各个服务相互独立,一个服务出问题不会影响到其他服务;宏内核最差,因为所有服务都在一起,一个服务出问题可能会导致整个系统崩溃;混合内核介于两者之间。
发展趋势
随着计算机技术的发展,操作系统内核也在不断进化。
在早期的计算机系统中,为了追求高性能,大多数操作系统都使用宏内核。
但是,随着系统的复杂性增加,宏内核的缺点也越来越明显,于是人们开始尝试微内核。
然而,微内核的性能问题也让人们头疼,于是混合内核应运而生。
未来的操作系统内核可能会向更高的性能和更好的稳定性发展,可能会出现全新的内核设计。
希望通过本文,大家对操作系统内核有了更深的理解,对计算机有了更全面的认识。