微内核是哪个国家发明的?
第一代微内核的主要代表是 Mach,由美国卡耐基梅隆大学的 Avie Tevanian 和 Richard Rashid 主导开发的。当时正是UNIX 发展正如日中天时期,因此Mach不可避免的受到UNIX的影响,最起码兼容unix是最起码的考量,但是与 UNIX 不同的是 Mach 使用微内核架构。Mach 以 IPC 是作为所有系统服务与内核交换数据的基础机制,充分运用 IPC、虚拟内存、多进程等特性将冗余的系统服务移出内核作为进程运行。
1986年,Mach 发布了第2版,但此时 Mach 内核并不提供完全的系统服务,该本的内核包含了大量 4.3 版本的 BSD 系统(UNIX的一个分支)代码提供系统服务,并且 BSD 系统服务运行在内核状态,这导致 Mach 内核的代码体积甚至大于常规 UNIX 内核。这两个版本达成了如下的目标:
验证了微内核的可行性;
在多处理器计算机上进行移植验证了微内核在多处理器计算机上的运行;
最后为了提高 IPC 的效率,Mach 使用共享内存机制来完成 IPC。
Mach 的共享内存机制是在虚拟内存技术的支持下实现的,只有需要对内存进行写入时才进行复制。这么一处理比每次都复制一遍内存节省了内存使用同时又加快了 IPC 机制的处理时间,这个改进称为写时复制,并且在如今的通用操作系统如 Linux 中常常用到。经过测试,Mach 2.5的效率最多比 UNIX 少 25%,但是考虑到 Mach 带来的可靠性、可拓展性、安全性,这个效率损失尚可以接受。此时 Mach 内核还不算完全的微内核。而考虑到微内核可以更高效地利用多处理器计算机的处理器核心资源,寄希望Mach 把系统服务都搬到内核之外后可以把运行效率损失降下来。开放软件基金会(Open Software Foundation,OSF)宣布下一代系统 OSF/1 将基于 Mach 的内核, 众多公司开始采用这个内核:如NeXTSTEP 使用 Mach2.5(未与苹果合并之前);IBM 利用 Mach 构建 Workplace OS;苹果公司基于 Mach2.5 打造其操作系统内核 XNU。
Mach 3.0 于 1990 年发布,由于在系统服务之间完全使用 IPC 通信,而不是向宏内核那样直接进行函数调用,即便是多处理器机器上运行也性能损失惨重,Mach 3.0 最多比 UNIX 损失 67% 运行效率,这导致 Mach 3.0 以及其所代表的第一代微内核设计被看衰。此后断断续续有在 Mach 的基础上对性能进行提升的尝试,但是均不太理想,至此 Mach 成为了微内核第一代先驱者。