内核是在硬件和操作系统之间形成一层的软件,它分为两种主要类型,即,宏内核和MicroKernel,这些类型主要是根据它们对进程的管理方式来区分的,它们在以下方面也有所不同:执行样式,大小,速度,稳定性,进程间通信,可扩展性,可维护性,调试,安全性等领域,以及这些差异,值得注意的是,宏内核比微内核要早得多,并且在Linux中使用。在Mac OS中使用了microKernels。

内核与操作系统有何不同?
内核是操作系统的一部分,或者您可以说它是操作系统的核心。与有用的应用程序放在一起的内核成为操作系统。

这里要注意的重要一点是,操作系统由两部分组成:

内核空间(特权模式)
用户空间(非特权模式)
内核有不同类型。两种主要类型是:

宏内核
微内核
这些类型的内核根据它们如何管理来自进程的请求(也称为系统调用)和资源进行分离。宏内核比微内核要老得多。在1980年代后期发现了微内核。

宏内核和微内核之间的主要区别
让我们讨论一下Monolithic Kernel与MicroKernel之间的一些主要区别。

执行所需的空间:宏内核在与内核空间相同的地址空间中运行所有操作系统指令,而微内核在用户空间中运行大多数系统指令,而在内核空间中仅运行少数系统指令。在微内核的情况下,只有重要的进程(例如进程间通信,调度和内存管理)才会在内核空间中发生。
内核大小:在Monolithic中,由于所有系统指令都是在内核空间下执行的,因此会增加内核的整体大小。这也导致操作系统大小的增加。
执行速度:与微内核相比,宏内核提供了更快的速度,因为它在同一地址空间下运行所有​​指令,从而使执行速度更快。对于微内核,由于在不同地址空间中运行的不同服务之间传递了其他消息,因此执行速度较慢。
稳定性:如果进程崩溃在宏内核中,则会导致系统范围内的停止。这是因为在相同地址空间中运行的每个进程都会受到影响。而在微内核的情况下,由于内核和用户空间之间的系统操作划分,服务崩溃不会影响其他服务。
进程间通信:宏内核利用信号和套接字实现进程间通信,而微内核利用消息传递队列来实现进程间通信。
可扩展性:两种内核类型之间的主要区别之一是可扩展性。为了向宏内核添加新功能,必须重新编译整个内核。重新编译将导致更多的内存和时间消耗。另一方面,在微内核的情况下,服务在实现消息传递队列时彼此隔离,从而使添加或删除功能更加灵活。
可维护性:这类似于可扩展性。为了修复宏内核中的任何错误,必须重新编译整个内核。而微内核则不是这种情况。
调试:特权模式(内核空间)中的崩溃可能会破坏调试器本身。因此,与微内核相比,调试宏内核非常困难。
安全性:与宏内核相比,微内核更安全,因为宏内核以特权模式运行其整个代码,从而增加了发生灾难的机会。