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(Micr
评论