Micro-Kernel, Embedded System; Maro-Kernel, Monolithic Kernel
传统意义的操作系统,内核应有多方面的功能:
管理属于应用层的“进程”- 进程管理
为进程提供各种服务 - 进程间通讯,设备驱动,文件系统
内核中提供这种服务的成分与使用这些服务的进程之间实际上就形成一种典型的“Client/Server”的关系。
这些服务提供者并不一定非得都留在内核中不可,它们本身也可以被设计并实现某些“服务进程”;
其中必须留在内核中的成分其实只有进程间通讯。
如果把这些服务提供者从内核转移到进程的层次上,那么内核本身的结构就可以大大减小和简化;
而各个服务进程,可以单独地设计,实现,调试,并按实际需要来配置和启动。
微内核应运而生:
这些系统不带磁盘,整个系统都必须放在EPROM中;
受到存储空间的限制,服务简单且单一;
几乎所有的嵌入式和实时系统都采用微内核;
将服务的提供都放在进程的层次上,再通过进程间通信(通常是报文传递);
增加系统的运行开销,降低了效率。
一体化内核:
通用式的系统需要的服务面广而大,一体化内核更适合;
传统Unix内核全封闭(如果需要往内核中增加一个设备及服务,先编写设备驱动程序,并变动内核源程序的某些数据结构及设备表,再重新编译整个内核,并重新引导整个系统)
优点是系统的安全性更能得到保证,缺点也很明显-僵化;
Linux允许把设备驱动程序在编译时静态地连接在内核中;
也允许在运行状态下当需要用到某一模块时由系统自动安装;
这些模块仍然在内核中运行,不像微内核那样作为单独的进程运行,所以效率得到了保证