4.2.1.1.2. 内核契约
内核契约定义了微内核、内核扩展、内核监视器间进行交互的消息格式。内核中
各组件的交互通过请求——响应的模式进行。内核契约中给出了系统中所需要用到的
所有的请求——响应报文对的格式,并提供了统一的接口用以协调所有的内核扩展和
内核监视器。微内核、内核扩展和内核监视器仅依赖于内核契约,三者之间并不存在
互相依赖。
4.2.1.1.3. 内核监视器
内核监视器负责监视内核中的请求——响应的过程,并依据各个监视器的不同关
注点给出不同的操作,如进行性能监测、错误和异常监测、事件记录等操作。内核监
视器只负责监视,并不修改整个请求——响应的流程。
4.2.1.1.4. 内核扩展
内核扩展主要用于实现核心业务。内核扩展向微内核表明自己可以处理的请求类
型,并实现相应的请求处理逻辑,从而实现核心业务。整个系统的体系结构并不关心
各个业务模块的数据持久化操作,内核扩展需要自行处理数据的持久化操作。
一个内核扩展可以通过微内核发出特定请求,从而实现与其他内核扩展之间的交
互。内核扩展同时可以关注指定类型的请求——响应的处理结果,并在响应给出时得
到通知。这一设计可以允许内核扩展监视指定事件,从而丰富内核扩展之间的交互。
4.2.1.2. 基本流程
内核中的主要有如下几个基本流程。这些基本流程负责文护内核中各组件的生命
周期。
4.2.1.2.1. 加载内核扩展
加载内核扩展时,系统将会执行如下操作,具体示意图如图 4-3所示。
图 4-3:内核扩展加载过程
1. 发现内核扩展
微内核发现所有可用的内核扩展并加以装配。
2. 注册内核扩展
微内核扫描各内核扩展的元数据,并依据各内核扩展声明的可处理的消息类型将
内核扩展放入各消息类型对应的内核扩展队列中。
3. 连接内核扩展
微内核调用内核扩展的相关方法,将自身与内核扩展进行连接,从而允许内核扩
展与微内核进行交互。
4. 初始化内核扩展
微内核调用内核扩展的初始化方法,以完成内核扩展的初始化操作。
4.2.1.2.2. 加载内核监视器
加载内核监视器的操作与加载内核扩展类似,如图 4-4所示。
图 4-4:内核监视器加载过程
1. 发现内核监视器
微内核发现所有可用的内核监视器并加以装配。
2. 注册内核监视器
微内核扫描各内核监视器的元数据,并依据各内核监视器声明的需要监视的消息
类型将内核监视器放入各消息类型对应的消息监视器队列中。
4.2.1.2.3. 自定义处理器
系统允许内核扩展注册处理器以监控指定的请求——响应报文对。当一个内核扩
展注册处理器时,系统会将该处理器加入指定消息类型所对应的处理器队列中,当消
息所对应的请求——响应过程成功完成后,系统将会调用处理器队列中的所有处理器
的相应方法。
4.2.1.2.4. 请求处理
内核中进行请求处理的流程如图 4-5所示:
图4-5:请求处理流程
1. 发出请求
上层模块或内核扩展向微内核发出指定请求。
2. 检索内核扩展、内核监视器和处理器
微内核依据请求所对应的消息类型检索相应的内核扩展、内核监视器和处理器。
3. 若没有可用的内核扩展用于处理请求,微内核将会抛出异常。 面向服务的开放式平台架构(6):http://www.youerw.com/jisuanji/lunwen_3091.html