我认为微内核相对于单内核上没有明显的技术优势,微内核一般都宣称有如下的技术优势: 1. 各服务可以动态加载插入,使内核很小,减少内存。 2. 系统非常灵活。当运行一个应用程序时,只需把选定的系统服务加载到系统中即可。而修改了服务以后可以通过联机进行测试;并不需要重新构建或者启动一个新的内核,他们并不影响系统的运行。 3. 各服务地址空间独立,不影响其它模块(如文件系统服务调用内存管理服务的功能)。一个服务组件的失效并不会导致整个系统的崩溃,内核需要做的,仅仅是重新启动这个组件,而不必影响其它的部分。 4. 可移植性强,各用户台服务与硬件无关。 1. 第一点,目前的Linux来说也有内核模块机制解决。当然还有不少功能是直接链接,没有实现为内核模块形式,但是这是目前实现问题,今后如果必要都是可以实现的(比如VFS组件也可以搞一个ko出来加载进去)。对于这点,微内核并无明显优势了。 2. 第二点同上。 3. 第三点,有两层含义。 3.1 第一层是本服务实效的问题,这一点。我想Linux也是可以做到的,比如一个"功能",如VFS,如果其内部全局变量数据混乱了以后,有可能就会访问非法地址,现在一般做法是BUG, OOPS或panic。这其实也是可以修改为不进行oops,panic的,而是把资源清理回收一下,把所有的数据重新初始化一下。这个与是否是内核模块无关,目前的内核也可以做。大概你会说,这样其它的内核部分就会暂时不能使用这个服务了。但是微内核重启这个组件时,也一样不能使用该组件。因此微内核并无优势。 3.2 第二层含义是影