1.1 宏内核
什么是宏内核
首先要知道什么是宏内核,用过电脑的都知道电脑上有操作系统和应用程序。而操作系统的核心是内核,应用程序的本质是”服务进程“。于是一个功能到底由内核实现还是由服务进程实现,也就是功能的划分问题。
实际上内核只需要保留的功能只有进程间通信,其它功能都可以划分给服务进程,于是内核的大小便得以进行调整,划分进内核的功能(如文件系统,网络等)越多便是宏内核,划分得少便是微内核。
宏内核 对比 微内核
起初计算机由于性能受限,主要采取微内核。后来由于硬件性能的提升,系统所需服务面的扩大以及对于安全性能的要求,大部分计算机采取了宏内核。事实上,linux就是宏内核。
当然对于微内核的系统,考虑到用户态和内核态之间的切换开销,每一次变态的过程都是有成本的,要消耗不少时间,频繁地变态会降低系统性能,这也就是我们常说微内核的运行效率低的原因所在。
但是对于很多嵌入式系统,都保留了微内核,因为硬件限制,服务单一。
如何向宏内核中添加设备(服务)
传统Unix | 编写驱动->改变内核相应数据结构->重新编译内核->重新引导整个系统 |
---|---|
Linux | 1. 如传统方式一样,将驱动静态编译进内核中 |
2. 允许“模块”动态地进行安装,模块能在内核运行时进行安装和卸载,不需要重新编译内核 |