Linux 为什么还要坚持使用宏内核
首先先说说操作系统是干什么的吧。如果专业是计算机的同学可能学过操作系统这门课程,会发现课程上讲的内容和我们所认识到的操作系统差别很大。这个里面所讲的正是操作系统最核心的功能,任务调度、内存和设备的抽象和管理。然后 ,为了我们方便使用,才集成进了系统服务、驱动程序、文件系统之类的东西。推荐:花心小铺包包
我们平时运行的程序,每个程序各运行几十毫秒,大家来回轮换,这样子我们看起来这些程序好像在“同时”运行一样。应用程序之所以能够被操作系统通过时间片的方式调度,是因为对于CPU而言,普通的应用程序和操作系统的内核运行在不同的特权级别上,我们叫作rings。应用程序运行在Ring 3,而内核运行在Ring 0。
随着科技的发展,操作系统变得越来越复杂,内核里面的东西也越来越多。人们也就开始考虑是否应该改变原有的架构,从而提高操作系统的性能和稳定性,主要是精简内核降低开发的复杂度,还有就是把各种程序尽可能的隔离,保证一个程序的崩溃不会牵连到其他的程序。上世纪80年代人们讨论得火热的微内核就是这样一种架构。
微内核考虑在操作系统的内核中保留操作系统最基本的功能,也就是任务调度、内存和设备的抽象和管理。其他的功能全部从内核移出,放到用户态中了实现,并以C/S模式对其他应用程序提供服务。
微内核带来的好处主要是稳定性和实时性,即内核中模块数量少了,结构更精简更优化了,能够影响内核的程序和驱动也减少了,稳定性随之提高;另外就是实时性,内核精简了以后,响应的时延的减小。不过并不是精简了以后会使得性能提升,微内核使得内核中只有最关键的部分,其他模块和系统功能全部作为独立模块放到用户态空间中运行,功能分散了以后增加了通信的成本。不过微内核操作系统的特点尤其适合工控系统的控制,而且设计简单,在小型的系统中有不少的应用。另外亦有不少实时操作系统是使用微内核架构设计。
所有的理论设计,放到现实的工程中都是要做折衷的。所以有混合内核的出现,综合宏内核和微内核的不同优点,在两个方案中折衷设计。OS X和Windows就属于这类。至于Linux,上千万行代码,架构岂是说改就能改的。使用Linux构建的系统,不少都是要追求性能的吧,前面也说到微内核会降低性能,在Linux中,我们为了使得一个事情性能更高,往往还要把这个模块放到内核中运行,比如PF_RING。所以在需要考虑性能的时候,微内核又显得不那么合适,像微软一样取一个折衷算是一个好的办法。
----分割线以下是原来的回答----
谁告诉你Mac OS X和Windows是微内核的?