【摘抄】微内核与大内核----《自己动手写嵌入式操作系统》

       微内核与大内核是操作系统设计中的两种不同的思想,这与 CPU 的设计中 RISC 和 CISC 构架类似。其中,微内核的思想是,把尽量少的操作系统机制放到内核模块中进行实现,而把尽量多的操作系统功能以单独进程或线程的方式实现,这样便于操作系统体 系结构的扩展。比如,一个常见的设计思路就是,把进程(或线程)调度、进程间通信机制(IPC)与同步、定时功能、内存管理功能、中断调度等功能放到内核中实现,由于这些功能需要的代码量不是很大,所以可使得内核的尺寸很小。另外,把操作系统必须实现的文件系统、设备驱动程序、网络协议栈、IO 管理器等功能作为单独的进程或任务来实现,用户应用程序在需要这些功能的时候,通过核心提供的 IPC 机制(比如消息机制)向这些服务进程发出请求,即一种典型的客户-服务器机制。

        这种微内核的实现思路有很明显的优势,比如体系结构更加清晰,扩展性强等,而 且由于内核保持很小,移植性(不同 CPU 之间的移植)也很强。但此思路也有很大的弊端,其中最大的一个弊端就是效率相对低下,因为系统调用等服务都是通过 IPC 机制来 间接实现的,若服务器进程繁忙,对于客户的请求可能无法及时响应。因此这种微内核的设计方式,不太适合嵌入式操作系统的设计,因为效率是嵌入式操作系统追求的最主要目标。
 
       大内核则是一种相反的设计思路,这种思想是,把尽可能多的操作系统功能拿到内核模块中实现,在操作系统加载的时候,把这些内核模块加载到系统空间中。由于这些系统功能是静态的代码,不像微内核那样作为进程实现,而且为这些代码直接在调用进程的空间中运行,不存在发送消息、等待消息处理、消息处理结果返回等延迟,因此调用这些功能代码的时候,效率特别高。因此,在追求效率的嵌入式操作系统开发中,这种大内核模型是合适的。

        但大内核也有一些弊端,最明显的就是内核过于庞大,有时候会使得它的扩展性不好(这可以通过可动态加载模块来部分解决)。但在嵌入式操作系统开发中,这种弊端表现得不是很明显。图 1-4 示意了大内核的开发思想。

                       

发布了9 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zerfew/article/details/104308982