2009年5月8日星期五

microkernel初步

在讲微核模式和反射模式前,POSA首先提到了adaptable system,我姑且把它翻译成可适配系统吧,这个系统的特点是变动大,经常需要在已有的功能或者模块上添加新的功能,或是应付操作系统改变,第三方库变 动等问题。为了实现这样的系统,提出了微核模式和反射模式。

微核模式将系统的核心功能与外部功能和用户要求的功能分离开,同时它也作为一个容器或者socket,包容那些外部的扩展,并让那些外部的扩展能实现协作。微核典型的应用场景是OS和大型IDE的设计。

微核模式定义了5种组件:internal servers,external servers,adapters,clients和microkernel。

microkernel提供系统核心的底层的功能,为各个组件提供通信机制,对系统的依赖进行封装(例如驱动,其它的组件需要使用硬件服务,这是硬件依赖。这一部分工作也可以丢到下面介绍的internal server里去做。),管理资源。

internal servers是对microkernel的功能扩展,所以也称为子系统,microkernel通过向其发送服务请求来调用其相应的功 能,internal server主要是封装一些硬件和软件的依赖,例如某类硬件的驱动。书中特别提到internal server只能被microkenel访问,我想这也是internal server名字的由来吧。

external servers实现什么功能,看了半天也没看懂,貌似external server是向外提供编程接口的,client可以用external server提供的接口来访问microkernel提供的功能。不过这一段没看懂,到底是不是这样还不知道。(从后面的内容可知,external server自己也是实现了某些功能的,而不是什么功能都没有,只是作为一个桥梁去调用microkernel的功能。)

client这一段也没看太明白,“A client is an application that is associated with exactly one external server.”, 这句话让我很费解,为什么只能跟一个特定的external server相关联呢?一个client就不能使用其它的external server吗?如果不行,那会不会导致client太多了。在提到client和external server时顺带提了adapter模式,这是可以理解的,因为使用adapter使得client和external server之间的耦合更松,更有利于应付变化。

下图是微核模式里各个组件类的类图,从图中可以看出各个类之间的关系,internal server是只能被microkernel访问的,而client是通过adapter和external server来访问使用microkernel的功能。

没有评论:

发表评论