黑板系统可以形象地理解为一组专家围绕着一块黑板来求解一个问题,专家们通过用粉笔在黑板上示图来通讯,经过一定的求解推导,得到一个最终状态,即求得了问题的解。
黑板系统由三部分组成,如图2.1所示。
图2.1黑板系统的组成
2.3.1 黑板结构
黑板是一个存放问题求解状态的全局共享内存区,用来存放输入数据、中间数据和最终解,有时也会存放一些必要的控制信息。黑板沿两个方向组织黑板元素:纵向的叫抽象层,不同的抽象层表示对不同程度的细节描述的理解,每一层上的元素可以大致看成是下一层元素的抽象描述,每两层之间可以建立各种各样的链关系;横向叫做解间隔,不同的解间隔表示了问题特有范围上不同的解的区域,一般是按时间来划分。文献综述
设计黑板结构首先要确定哪些状态变化需要记录在黑板上;然后还要决定在程序运行中是否可以对黑板进行动态地划分;与此同时,还要确定以什么样的方式或结构来表示知识。
2.3.2 知识源结构
知识源是问题求解领域的相关知识。我们根据性质的特点、功能的不同以及范围的宽广来对知识进行划分,这样得到的知识源是互相独立的,并且需要通过黑板来进行相互之间通讯。知识源为最终的结果提供了很多必要信息,例如条件、规则以及动作等等。
知识源可以对黑板上的状态进行响应——修改黑板上的状态、创建新状态或删除某些状态,通过一系列的反复求解,最终逐步得到某种状态结果,当然这个结果可能会有一定的偏差。
2.3.3 控制机构
控制机构是求解问题的推理部分,相当于对黑板内容如何操作的一个监督程序。监督程序无时无刻不在注视着黑板上的状态变化,通过对黑板状态采取一定的推理和计算,来选取恰当的求解过程(通常是选择合适的知识源)。控制的关键是何选择一个将要执行的动作,所以也可以看成是调度问题。
控制机制的目标是在求解过程中对知识源进行正确、可靠的选择,由于可变性最多,因而是设计最复杂的模块。
2.4 本课题设计的黑板系统
本课题设计的黑板系统涉及到的模块包括进网络传输、共享内存、进程池调度、数据存储等。
黑板系统整体结构如图2.2所示,我们只讨论图中黑板部分(blackboard),由图可知,黑板中包含一个进程池、一个分配器和一块共享内存,必要时可以对共享内存建立索引,以方便快速查找。
进程池中包含若干个可被分配器随时调用(前提是该进程没有执行任务)的进程,每当外界或黑板中有任务到达,分配器就会把任务分配给进程池中的一个空闲进程,进程池中的进程个数由用户自己定义。源:自~751·论`文'网·www.751com.cn/
共享内存区的使用解决了进程之间通信的问题,即在内存区划分出一部分可供进程池中所有进程访问的内存块,这样便可以像专家在黑板上交流一样达到进程之间通信的目的。
不过这样显然会呈现一些问题,如果仅仅是读,不会有什么问题,但是当进程要求更改内存中的数据时,便会出现我们经常讨论的读写互斥和写写互斥,本课题会在后面的章节对同步与互斥的问题进行详细阐述。