MicroKernel & Exokernel 操作系统未来可能的发展


MicroKernel 
可以叫做微内核,有人认为传统的monolithic kernel 提供的东西太多,我们可以给内核减负。
最典型的例子就是L4
micro kernel (图中的kernel)只提供最简单的服务,比如IPC (inter process communication), scheduling, address space
 剩下的都交给Server 去处理,Server 类似于传统的monolithic kernel 比如Linux, 但是需要改动,L4 把它改为L4Linux. 源代码修改,此外他们还修改了Windows XP (windows 并非完全的不开源,在授权的情况下可以看到源代码). 修改的目的,很简单:以前Server talks to hardware directly, 现在多加了一层 Kernel (L4),它处理所有的hardware interrupt, 然后作为message 传递给server, server 再传递给software.
比如浏览器process 需要一个network packet。 收到packet 以后,L4 作出interrupt,传给Server(比如L4Linux),Server 再与L4,通过IPC 请求packet内容,L4会map到L4Linux的address space,Server 再传给Software(e.g. Firefox). 
再比如page fault(由于内存容量有限,有些内容被暂时swap 到硬盘,application 想用的时候发现不在了,就产生page fault) 产生,首先处理interrupt的是Kernel, Kernel sends IPC to L4Linux, L4Linux从自己manage的physical memory 里面分一个page出来,给application,并更新自己的shadow page table(不是真正的page table) .L4Linux 产生一个返回值告诉L4, 已经完成。L4 updates its true hardware page table.

Micro Kernel 从设计之初的想法应该是高效的,反映速度快,因为很多东西都由user space(MicroKernel 可以有许多server,每一个Server都是user space)自己处理, user 甚至可以设计自己的File System, 而且使用IPC 非常简单。
最明显的特点是因为MicroKernel is light weighted,code 少,错误几率少。
但是缺点也很明显:IPC带来的overhead 很大,事实是micro kernel 比monolithic kernel 速度慢。
MicroKernel 类似于 Virtual Machine Hypervisor (比如:Xen, VMware ESXi), 但是他们的出发角度不同。Microkernel,还是Kernel,而hypervisor 目的在于把所有的hardware都抽象化,用户(Linux,Windows)根本不知道有Hypervisor的存在。(VMware上面的Virtual Machine 代码完全不需要修改,Xen 上面的需要修改,但是VM速度快)。
一个MicroKernel, 承载许多user level (Server),可以在上面快速切换,速度比Virtual Machine 快,在服务器上应该会得到广泛的应用。
Hypervisor , MicroKernel, Monolithic 区别:
http://www.perseus-os.org/content/pages/Hypervisor.htm

ExoKernel:

ExoKernel, 最大的特点是反应速度快。
传统的OS library 都是自己定义的, software 只能按照规则使用,OS会设计一些general 的system call 满足所有的application需求。但是有些Library 可能不能很好的适应这些library,想要使用自己的Library 更好的使用硬件 (比如:database, browser 都需要一些特殊的system call,OS不能很好的完成)
ExoKernel 打破常规决定让software 自己写library, 而它只负责管理(like a multiplexer)。这样给了application 自由度。
现在有趋势,所着互联网发展,browser 应用越来越广泛,地位非常重要,browser 为了达到最高的性能,会设计比如file system, cache.

另外著名的Windows NT(Windows XP Windows 7,Windows 8..)Mac OS属于Hybrid Kenrel(Micro & Monolithic),它们比Micro 多了device driver,application IPC 等。常用的OS,只有Linux属于Monolithic。


Reference: 
[1] The  Performance  of p-Kernel-Based  Systems
[2] http://wiki.osdev.org/Microkernel
[3] Exokernel: An Operating System Architecture for Application-Level Resource Management

评论

此博客中的热门博文

Embedded System interview Question

中国城市房地产分析